|
филосовский вопрос по проектированию
|
|||
---|---|---|---|
#18+
hck1 накой ? врятли кроме вас тут кто-либо мог заподозрить, что где-то говорилось транзакция субд. Я вам сказал как делают ту проблему что вы описали. КТО ВАМ СКАЗАЛ ЧТО С КЛИЕНТА ПРИХОДИТ ТОЛЬКО ID? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 11:58 |
|
филосовский вопрос по проектированию
|
|||
---|---|---|---|
#18+
Автор топика. Вы неправильно сделали REST. И это можно доказать, если вы будете разговаривать а не молчать. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 12:00 |
|
филосовский вопрос по проектированию
|
|||
---|---|---|---|
#18+
Автор хрень какую-то описывает Если данные не консистенты в процессе обработке, я вообще не понимаю, как на таких данных можно какую-то реальную задачу делать. В любом случае, REST должен возврашать всю иерархию в консистентном состоянии ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 15:11 |
|
филосовский вопрос по проектированию
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Автор хрень какую-то описывает Если данные не консистенты в процессе обработке, я вообще не понимаю, как на таких данных можно какую-то реальную задачу делать. В любом случае, REST должен возврашать всю иерархию в консистентном состоянии с чего бы ? в crm уже десятки сущностей и сотни полей в них, включая бинарные файлы документов в стиле счетов и коммерческих предложений, документов доставки. пихать все это в каждый респонс тиражного продукта глупо. вообще, автор описывает битрикс24 https://dev.1c-bitrix.ru/rest_help/crm/cdeals/events_deal/on_Crm_Deal_Update.php а что, какой-нить зибель или sap запихает в респонс все связанные сущности со всеми полями ? что-то я сомневаюсь ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 15:39 |
|
филосовский вопрос по проектированию
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev В любом случае, REST должен возврашать всю иерархию в консистентном состоянии там есть понятие батч. типа несколько сущностей можно запросить одним запросом ради оптимизации, но консистентность оно не обещает, да. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 15:46 |
|
филосовский вопрос по проектированию
|
|||
---|---|---|---|
#18+
hck1, Ты нас терминами не пугай Crm, sap, bitrix Менеджер что ли? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 15:50 |
|
филосовский вопрос по проектированию
|
|||
---|---|---|---|
#18+
hck1 пихать все это в каждый Гигантомания прям. Возьми один вопрос по рест и изучи его. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 15:51 |
|
филосовский вопрос по проектированию
|
|||
---|---|---|---|
#18+
hck1 делаю приложение, которое по rest получает сообщения об изменениях в некой crm системе. выкачиваю изменения Как будто это слово изменило архитектуру ИС в java проектах. Нисколько. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 15:58 |
|
филосовский вопрос по проектированию
|
|||
---|---|---|---|
#18+
Х.з. как там SAP запихивает Каким образом Вы собираетесь что-то осмысленное делать с данными, когда придет 1. Заголовок счета-фактуры. Итого по счету -100 рублей, в том числе НДС -20 рублей 2. А запросами по строкам счета-фактуры: Услуга N1 (корректировка за пред.период) -100 рублей В том числе НДС -20 рублей Услуга N2 150 рублей В том числе НДС 30 рублей Что Вы будете с такими "данными" делать? Особенно хорошо их будет интегрировать с бухгалтерий. Когда отрицательные счета это совсем и не счита, а авансы. Бухгалтерия обычно доходчиво такие косяки объясняет, без лишних стенснений и без попыток "удержать великий и могучий русский язык за зубами" ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 16:21 |
|
филосовский вопрос по проектированию
|
|||
---|---|---|---|
#18+
Выдвину теорию: Если информация не консистентна, то это называется не "данные", а "мусор" В этом случае, значительно эффективнее заранее выполнить оптимизацию программы и просто все REST запросы заменить на вызов локальной ф-ции Random. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 16:30 |
|
филосовский вопрос по проектированию
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Если информация не консистентна, то это называется не "данные", а "мусор" +1 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 16:36 |
|
филосовский вопрос по проектированию
|
|||
---|---|---|---|
#18+
PetroNotC Sharp hck1 делаю приложение, которое по rest получает сообщения об изменениях в некой crm системе. выкачиваю изменения Как будто это слово изменило архитектуру ИС в java проектах. Нисколько. не надо исключать. кроме тебя тут есть все же есть люди из IT и понимают чем задачи crm отличаются от бухгалтерии. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 16:59 |
|
филосовский вопрос по проектированию
|
|||
---|---|---|---|
#18+
hck1 Ситуация описываемая автором топика, называется просто - бардак. "компьютеризация бардака на выходе даст лишь компьютеризированный бардак" ( C ) p.s. вообще-то, как автор описывает свою задачу 22026892 он ровно и пытается из существующего бардака и мусора возврашаемых по REST хоть как-то в свое хранилище переложить и упорядочить. НО не нужно забывать: Второй закон термодинамики Эверитта: Неразбериха в обществе постоянно возрастает. Только очень упорным трудом можно её несколько уменьшить. Однако сама эта попытка приведет к росту совокупной неразберихи . ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 17:18 |
|
филосовский вопрос по проектированию
|
|||
---|---|---|---|
#18+
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 и проводит т.е., теоеретически, для процесса "запихивания" консистентность всех данных не требуется, но процесс "разнести" должен быть атомарный и работать с консистентыми данными. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 17:41 |
|
филосовский вопрос по проектированию
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, Ему не понравился ваш пример про бухгалтеров). Он посчитал что консистентность у них одна, у учеток другая и у у crm третья особенная. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 18:03 |
|
филосовский вопрос по проектированию
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Х.з. как там SAP запихивает Каким образом Вы собираетесь что-то осмысленное делать с данными, когда придет 1. Заголовок счета-фактуры. Итого по счету -100 рублей, в том числе НДС -20 рублей 2. А запросами по строкам счета-фактуры: Услуга N1 (корректировка за пред.период) -100 рублей В том числе НДС -20 рублей Услуга N2 150 рублей В том числе НДС 30 рублей Что Вы будете с такими "данными" делать? Особенно хорошо их будет интегрировать с бухгалтерий. Когда отрицательные счета это совсем и не счита, а авансы. Бухгалтерия обычно доходчиво такие косяки объясняет, без лишних стенснений и без попыток "удержать великий и могучий русский язык за зубами" в бухгалтерию уходит согласованный и готовый к отгрузке заказ, там своя интеграция с 1с. глядя как там все устроено, не думаю что там как-то блокируется заказ прежде чем выгружается в 1с. решение простое - на кнопочку запуска процесса должен нажимать единственный в канторе бух. нажмет кто-то другой - директор поругает. Leonid Kudryavtsev p.s. вообще-то, как автор описывает свою задачу 22026892 он ровно и пытается из существующего бардака и мусора возврашаемых по REST хоть как-то в свое хранилище переложить и упорядочить. НО не нужно забывать: Второй закон термодинамики Эверитта: Неразбериха в обществе постоянно возрастает. Только очень упорным трудом можно её несколько уменьшить. Однако сама эта попытка приведет к росту совокупной неразберихи . я предлагаю подходы битрикс тут не обсуждать, они сделали вот так и выдают вот такой интерфейс. я на это подписался прекрасно осознавая что меня ждет и задача вытянуть с этого максимум, в том числе что бы заработать на взрослое решение. задачи бухгалтерии с точностью до цента мне решать не нужно, мне нужно будет решать задачки аналитики - найти теряющий спрос товар, где застревает обработка заказа, раздать задачи сотрудникам, если где-то наблюдаются задержки. там суперточность не нужна, если пару заказов пропустят какие-то изменения в истории - плохо, но не трагедия. BI отчетики тоже, они не бухгалтерские - нужны что бы видеть тенденции и для поиска, где зависают ресурсы. детали уже человек перепроверит, если нужно будет в том числе и по бухгалтерским отчетам. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 18:17 |
|
филосовский вопрос по проектированию
|
|||
---|---|---|---|
#18+
hck1 если пару заказов пропустят какие-то изменения в истории - плохо, но не трагедия Бизнес конкретика нужна. Так можно до бесконечности обсуждать. Привел пример OeBS. На SO (Sales Order) может быть 100500 изменений - но на их, вообще-то, всем глубоко пчихать. Единственное ВАЖНОЕ изменение (с точки зрения системы) - утверждение заказа. Но после "утверждения заказа" он обычно (могут быть исключения подтверждающие правило) уже НЕ меняется Т.е. его смело можно вычитывать и отправлять в бухгалтерию. Но вычитывать лучше атомарным и консистентным способом. Например смотрю на Ваш же битрекс и вижу, что товарные позиции определяются так же ОДНИМ запросом (crm.deal.productrows.get) Т.е., например, как бы я видел более-менее корректную интеграцию с бухгалтерией: 1. изменения сами по себе - глубоко пофиг 2. прошла операция "утверждение заказа" (изменился статус) или аналог - данные передаются например в бухгалтерии создаем счет 3. прошла операция "отмена утверждения заказа" - данные из бухгалтерии "вычишаются" например в бухгалтерии для старого счета создаем сторнировочный счет (УЖЕ на основе данных бухгалтерии) Не знаю Битрекс, но глубоко убежден, что понятия аналогичные "утверждение заказа" у них есть. Возьмем тот же Ozon. Сколько раз я редактирую свою корзину заказов - в целом глубо пофиг. Важно только, когда я эту корзину превращаю в утвержденный мною заказ - его можно отправлять на склад "скомплектовать заказ, собрать все в посылку". Если же я от заказа отказываюсь, то опять таки, на склад нужно отправлять команду "заказчик сцуко, заставил делать лишнию работу, разкомплектовать посылку обратно и разложить обратно на полки" при этом, знать, что было в заказе уже не нужно. Это информация уже есть на складе. Но, опять таки, в оформленном заказе, изменять на Ozon'е я уже ничего не могу . IMHO & AFAIK Но частая ситуации, что во время операции ОБРАБОТКИ данные уже успели поменяться, это нонсенс Если есть поле Version, то наверное по полю Version, можно определять, что данные в процессе переноса изменились и просто делать rollback. Ну и согласен с PetroNotC Sharp какая-то мешанина из ETL и обработки. Может проще задачи разделить? ETL - отдельно; обработка - отдельно, по уже извлеченным данным. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 18:59 |
|
филосовский вопрос по проектированию
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Бизнес конкретика нужна. Так можно до бесконечности обсуждать У вас монолог а не диалог. Так как автор не умеет разговаривать. Не может привести конкректный юз кейс с вопросом. Заикнулся один раз с тем что приходит только ID и всё). ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 19:09 |
|
филосовский вопрос по проектированию
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, Вот это вы поняли о чём он? hck1 так вот, почти везде в процедуры приходится передавать номер "транзакции" (номер rest вызова от crm) Ниже он оговорился что этот номер чтобы не запутатся. И он третью страницу молчит как рыба)) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 19:17 |
|
филосовский вопрос по проектированию
|
|||
---|---|---|---|
#18+
щит ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 20:03 |
|
филосовский вопрос по проектированию
|
|||
---|---|---|---|
#18+
забыл ник hck1 делаю приложение, которое по rest получает сообщения об изменениях в некой crm системе. выкачиваю изменения, записываю в что-то типа хранилища с историей сущностей, плюс куски бизнес логики которая дозаполняет какие-то сущности в crm, создает в crm задачи, стартует бизнес процессы в crm. так вот, почти везде в процедуры приходится передавать номер "транзакции" (номер rest вызова от crm), почти везде нужен хотя бы номер заказа, часто и прочие поля заказа, т.к. та же задача обычно как-то на заказ завязана. потому начинаю задумываться на сколько это будет дурной идеей стараться передавать в методы какой-то обобщенный объект, который по мере обработки рест вызова "обогащается", вместо того что бы передавать лишь необходимый минимум ? как я понимаю читабельность может уменьшится, т.к. будет не совсем ясно чего методу требуется на вход. есть какие-то бест практики на эту тему? Проектирование API это всегда вещь деликатная и зависящая от многих факторов. Тут надо учитывать множество факторов, вы правильно указали на некоторые из них 1) Чем больше параметров на входе - тем сложнее понять что функция делает, тем сложнее ее отрефакторить ну и в целом разобраться что тут вообще происходит 2) Если у вас происходит дублирование кода и практически всегда некоторые поля передаются - значит надо сделать какой-то тип BaseRequest и включить их туда, но тут главное не переборщить - включать поле надо если оно приходит в 80% и выше. Возможно стоит сделать два абстрактных реквеста - один включает только транзакшен, второй и транзакшен и ордер айди. Ну и т.д. Каких-то бест практисес особо не существует, кроме задействования мозга по назначению параметры на входе которых много.. ну можно по параметру на метод. )) мартин говорит это хорошо. а фронты взвоют. они всегда воют когда их просишь сделать больше одного запроса )) так что тут еще зависит от тех сервисов что работают с его приложением. если это клиентские приложения, то проще получить всё и отдать всё. за раз. и все довольны. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 02:17 |
|
|
start [/forum/topic.php?fid=59&msg=39896492&tid=2121006]: |
0ms |
get settings: |
4ms |
get forum list: |
5ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
40ms |
get topic data: |
3ms |
get forum data: |
1ms |
get page messages: |
373ms |
get tp. blocked users: |
1ms |
others: | 316ms |
total: | 745ms |
0 / 0 |