powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / филосовский вопрос по проектированию
21 сообщений из 46, страница 2 из 2
филосовский вопрос по проектированию
    #39896238
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hck1
накой ? врятли кроме вас тут кто-либо мог заподозрить, что где-то говорилось транзакция субд.
а какая?
Я вам сказал как делают ту проблему что вы описали.
КТО ВАМ СКАЗАЛ ЧТО С КЛИЕНТА ПРИХОДИТ ТОЛЬКО ID?
...
Рейтинг: 0 / 0
филосовский вопрос по проектированию
    #39896241
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Автор топика. Вы неправильно сделали REST.
И это можно доказать, если вы будете разговаривать а не молчать.
...
Рейтинг: 0 / 0
филосовский вопрос по проектированию
    #39896448
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Автор хрень какую-то описывает

Если данные не консистенты в процессе обработке, я вообще не понимаю, как на таких данных можно какую-то реальную задачу делать.

В любом случае, REST должен возврашать всю иерархию в консистентном состоянии
...
Рейтинг: 0 / 0
филосовский вопрос по проектированию
    #39896479
hck1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev
Автор хрень какую-то описывает

Если данные не консистенты в процессе обработке, я вообще не понимаю, как на таких данных можно какую-то реальную задачу делать.

В любом случае, REST должен возврашать всю иерархию в консистентном состоянии

с чего бы ? в crm уже десятки сущностей и сотни полей в них, включая бинарные файлы документов в стиле счетов и коммерческих предложений, документов доставки. пихать все это в каждый респонс тиражного продукта глупо.

вообще, автор описывает битрикс24
https://dev.1c-bitrix.ru/rest_help/crm/cdeals/events_deal/on_Crm_Deal_Update.php

а что, какой-нить зибель или sap запихает в респонс все связанные сущности со всеми полями ? что-то я сомневаюсь
...
Рейтинг: 0 / 0
филосовский вопрос по проектированию
    #39896485
hck1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev
В любом случае, REST должен возврашать всю иерархию в консистентном состоянии

там есть понятие батч. типа несколько сущностей можно запросить одним запросом ради оптимизации, но консистентность оно не обещает, да.
...
Рейтинг: 0 / 0
филосовский вопрос по проектированию
    #39896492
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hck1,
Ты нас терминами не пугай
Crm, sap, bitrix
Менеджер что ли?
...
Рейтинг: 0 / 0
филосовский вопрос по проектированию
    #39896494
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hck1
пихать все это в каждый
не надо В КАЖДЫЙ.
Гигантомания прям.
Возьми один вопрос по рест и изучи его.
...
Рейтинг: 0 / 0
филосовский вопрос по проектированию
    #39896498
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hck1
делаю приложение, которое по rest получает сообщения об изменениях в некой crm системе. выкачиваю изменения
слово crm можно исключить из топика. Оно путает автора.
Как будто это слово изменило архитектуру ИС в java проектах.
Нисколько.
...
Рейтинг: 0 / 0
филосовский вопрос по проектированию
    #39896512
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Х.з. как там SAP запихивает

Каким образом Вы собираетесь что-то осмысленное делать с данными, когда придет

1. Заголовок счета-фактуры. Итого по счету -100 рублей, в том числе НДС -20 рублей
2. А запросами по строкам счета-фактуры:
Услуга N1 (корректировка за пред.период) -100 рублей В том числе НДС -20 рублей
Услуга N2 150 рублей В том числе НДС 30 рублей

Что Вы будете с такими "данными" делать?

Особенно хорошо их будет интегрировать с бухгалтерий. Когда отрицательные счета это совсем и не счита, а авансы. Бухгалтерия обычно доходчиво такие косяки объясняет, без лишних стенснений и без попыток "удержать великий и могучий русский язык за зубами"
...
Рейтинг: 0 / 0
филосовский вопрос по проектированию
    #39896516
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выдвину теорию:

Если информация не консистентна, то это называется не "данные", а "мусор"

В этом случае, значительно эффективнее заранее выполнить оптимизацию программы и просто все REST запросы заменить на вызов локальной ф-ции Random.
...
Рейтинг: 0 / 0
филосовский вопрос по проектированию
    #39896520
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev
Если информация не консистентна, то это называется не "данные", а "мусор"

+1
...
Рейтинг: 0 / 0
филосовский вопрос по проектированию
    #39896535
hck1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
hck1
делаю приложение, которое по rest получает сообщения об изменениях в некой crm системе. выкачиваю изменения
слово crm можно исключить из топика. Оно путает автора.
Как будто это слово изменило архитектуру ИС в java проектах.
Нисколько.

не надо исключать. кроме тебя тут есть все же есть люди из IT и понимают чем задачи crm отличаются от бухгалтерии.
...
Рейтинг: 0 / 0
филосовский вопрос по проектированию
    #39896539
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hck1


Ситуация описываемая автором топика, называется просто - бардак.

"компьютеризация бардака на выходе даст лишь компьютеризированный бардак" ( C )

p.s.
вообще-то, как автор описывает свою задачу 22026892 он ровно и пытается из существующего бардака и мусора возврашаемых по REST хоть как-то в свое хранилище переложить и упорядочить.

НО не нужно забывать:

Второй закон термодинамики Эверитта: Неразбериха в обществе постоянно возрастает. Только очень упорным трудом можно её несколько уменьшить. Однако сама эта попытка приведет к росту совокупной неразберихи .
...
Рейтинг: 0 / 0
филосовский вопрос по проектированию
    #39896549
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IMHO & AFAIK

hck1
Leonid Kudryavtsev
В любом случае, REST должен возврашать всю иерархию в консистентном состоянии

там есть понятие батч. типа несколько сущностей можно запросить одним запросом ради оптимизации, но консистентность оно не обещает, да.

I)
Обычно, все же, из системы в систему данные пытаются передавать, когда они в каком-то "мало редактируемом" состоянии.

Например у заказы в OeBS (Sales Order, Purchase Order), есть понятие "Утверждение заказа". После утверждения, заказ уже (теоретически) меняться не должен

Например, если по в событие "смена статуса" приходит с какого и на какой он меняется, то теоретически, при:
1) "неутвержден -> утвержден" данные можно смело копировать в хранилище т.к. Order Line в OeBS уже меняться не должны.
2) При событие "утвержден -> не утвержден", смело все удалять ))). Т.к. неутвержденный заказ в понятиях OeBS это просто мусор.

note. вроде статус есть даже на отдельных строках заказа, лет 10 назад с OeBS работал, не помню

II)
Если говорить "про хранилище" / BI, то например у нас его заливают ночью, когда с системой никто не работает.

Данные между системами сравнивают по __закрытию__ периода (месяца), когда в учетной системе уже изменения запрещены, отчетность собрана - тогда ее сравнивают с хранилищем.

Сравнивать данные в текущем периоде, никому и в голову не приходит. И так понятно, что они не совпадают и это нормально.

III)
аналогично в OeBS происходит заливка данных в ERP

запихиваем данные в интерфейсную таблицу
выполняем команду "запустить"
запускается батч процесс, который эти данные в ERP и проводит

т.е., теоеретически, для процесса "запихивания" консистентность всех данных не требуется, но процесс "разнести" должен быть атомарный и работать с консистентыми данными.
...
Рейтинг: 0 / 0
филосовский вопрос по проектированию
    #39896559
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,
Ему не понравился ваш пример про бухгалтеров).
Он посчитал что консистентность у них одна, у учеток другая и у у crm третья особенная.
...
Рейтинг: 0 / 0
филосовский вопрос по проектированию
    #39896563
hck1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev
Х.з. как там SAP запихивает

Каким образом Вы собираетесь что-то осмысленное делать с данными, когда придет

1. Заголовок счета-фактуры. Итого по счету -100 рублей, в том числе НДС -20 рублей
2. А запросами по строкам счета-фактуры:
Услуга N1 (корректировка за пред.период) -100 рублей В том числе НДС -20 рублей
Услуга N2 150 рублей В том числе НДС 30 рублей

Что Вы будете с такими "данными" делать?

Особенно хорошо их будет интегрировать с бухгалтерий. Когда отрицательные счета это совсем и не счита, а авансы. Бухгалтерия обычно доходчиво такие косяки объясняет, без лишних стенснений и без попыток "удержать великий и могучий русский язык за зубами"

в бухгалтерию уходит согласованный и готовый к отгрузке заказ, там своя интеграция с 1с. глядя как там все устроено, не думаю что там как-то блокируется заказ прежде чем выгружается в 1с. решение простое - на кнопочку запуска процесса должен нажимать единственный в канторе бух. нажмет кто-то другой - директор поругает.

Leonid Kudryavtsev

p.s.
вообще-то, как автор описывает свою задачу 22026892 он ровно и пытается из существующего бардака и мусора возврашаемых по REST хоть как-то в свое хранилище переложить и упорядочить.

НО не нужно забывать:

Второй закон термодинамики Эверитта: Неразбериха в обществе постоянно возрастает. Только очень упорным трудом можно её несколько уменьшить. Однако сама эта попытка приведет к росту совокупной неразберихи .


я предлагаю подходы битрикс тут не обсуждать, они сделали вот так и выдают вот такой интерфейс. я на это подписался прекрасно осознавая что меня ждет и задача вытянуть с этого максимум, в том числе что бы заработать на взрослое решение. задачи бухгалтерии с точностью до цента мне решать не нужно, мне нужно будет решать задачки аналитики - найти теряющий спрос товар, где застревает обработка заказа, раздать задачи сотрудникам, если где-то наблюдаются задержки. там суперточность не нужна, если пару заказов пропустят какие-то изменения в истории - плохо, но не трагедия. BI отчетики тоже, они не бухгалтерские - нужны что бы видеть тенденции и для поиска, где зависают ресурсы. детали уже человек перепроверит, если нужно будет в том числе и по бухгалтерским отчетам.
...
Рейтинг: 0 / 0
филосовский вопрос по проектированию
    #39896575
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hck1

если пару заказов пропустят какие-то изменения в истории - плохо, но не трагедия


Бизнес конкретика нужна. Так можно до бесконечности обсуждать.

Привел пример OeBS. На SO (Sales Order) может быть 100500 изменений - но на их, вообще-то, всем глубоко пчихать. Единственное ВАЖНОЕ изменение (с точки зрения системы) - утверждение заказа.

Но после "утверждения заказа" он обычно (могут быть исключения подтверждающие правило) уже НЕ меняется

Т.е. его смело можно вычитывать и отправлять в бухгалтерию. Но вычитывать лучше атомарным и консистентным способом. Например смотрю на Ваш же битрекс и вижу, что товарные позиции определяются так же ОДНИМ запросом (crm.deal.productrows.get)

Т.е., например, как бы я видел более-менее корректную интеграцию с бухгалтерией:
1. изменения сами по себе - глубоко пофиг
2. прошла операция "утверждение заказа" (изменился статус) или аналог - данные передаются
например в бухгалтерии создаем счет
3. прошла операция "отмена утверждения заказа" - данные из бухгалтерии "вычишаются"
например в бухгалтерии для старого счета создаем сторнировочный счет (УЖЕ на основе данных бухгалтерии)

Не знаю Битрекс, но глубоко убежден, что понятия аналогичные "утверждение заказа" у них есть.

Возьмем тот же Ozon. Сколько раз я редактирую свою корзину заказов - в целом глубо пофиг. Важно только, когда я эту корзину превращаю в утвержденный мною заказ - его можно отправлять на склад "скомплектовать заказ, собрать все в посылку". Если же я от заказа отказываюсь, то опять таки, на склад нужно отправлять команду "заказчик сцуко, заставил делать лишнию работу, разкомплектовать посылку обратно и разложить обратно на полки" при этом, знать, что было в заказе уже не нужно. Это информация уже есть на складе.
Но, опять таки, в оформленном заказе, изменять на Ozon'е я уже ничего не могу .

IMHO & AFAIK

Но частая ситуации, что во время операции ОБРАБОТКИ данные уже успели поменяться, это нонсенс

Если есть поле Version, то наверное по полю Version, можно определять, что данные в процессе переноса изменились и просто делать rollback.

Ну и согласен с PetroNotC Sharp какая-то мешанина из ETL и обработки. Может проще задачи разделить? ETL - отдельно; обработка - отдельно, по уже извлеченным данным.
...
Рейтинг: 0 / 0
филосовский вопрос по проектированию
    #39896577
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev
Бизнес конкретика нужна. Так можно до бесконечности обсуждать
да.
У вас монолог а не диалог. Так как автор не умеет разговаривать. Не может привести конкректный юз кейс с вопросом.
Заикнулся один раз с тем что приходит только ID и всё).
...
Рейтинг: 0 / 0
филосовский вопрос по проектированию
    #39896580
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,
Вот это вы поняли о чём он?
hck1
так вот, почти везде в процедуры приходится передавать номер "транзакции" (номер rest вызова от crm)

Ниже он оговорился что этот номер чтобы не запутатся.
И он третью страницу молчит как рыба))
...
Рейтинг: 0 / 0
филосовский вопрос по проектированию
    #39896596
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
щит
...
Рейтинг: 0 / 0
филосовский вопрос по проектированию
    #39896881
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник
hck1
делаю приложение, которое по rest получает сообщения об изменениях в некой crm системе. выкачиваю изменения, записываю в что-то типа хранилища с историей сущностей, плюс куски бизнес логики которая дозаполняет какие-то сущности в crm, создает в crm задачи, стартует бизнес процессы в crm. так вот, почти везде в процедуры приходится передавать номер "транзакции" (номер rest вызова от crm), почти везде нужен хотя бы номер заказа, часто и прочие поля заказа, т.к. та же задача обычно как-то на заказ завязана. потому начинаю задумываться на сколько это будет дурной идеей стараться передавать в методы какой-то обобщенный объект, который по мере обработки рест вызова "обогащается", вместо того что бы передавать лишь необходимый минимум ? как я понимаю читабельность может уменьшится, т.к. будет не совсем ясно чего методу требуется на вход.
есть какие-то бест практики на эту тему?


Проектирование API это всегда вещь деликатная и зависящая от многих факторов. Тут надо учитывать множество факторов, вы правильно указали на некоторые из них
1) Чем больше параметров на входе - тем сложнее понять что функция делает, тем сложнее ее отрефакторить ну и в целом разобраться что тут вообще происходит
2) Если у вас происходит дублирование кода и практически всегда некоторые поля передаются - значит надо сделать какой-то тип BaseRequest и включить их туда, но тут главное не переборщить - включать поле надо если оно приходит в 80% и выше. Возможно стоит сделать два абстрактных реквеста - один включает только транзакшен, второй и транзакшен и ордер айди. Ну и т.д. Каких-то бест практисес особо не существует, кроме задействования мозга по назначению

параметры на входе которых много.. ну можно по параметру на метод. )) мартин говорит это хорошо. а фронты взвоют. они всегда воют когда их просишь сделать больше одного запроса ))
так что тут еще зависит от тех сервисов что работают с его приложением.

если это клиентские приложения, то проще получить всё и отдать всё. за раз. и все довольны.
...
Рейтинг: 0 / 0
21 сообщений из 46, страница 2 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / филосовский вопрос по проектированию
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]