77 lines
3.0 KiB
Plaintext
77 lines
3.0 KiB
Plaintext
@startuml
|
||
|
||
autonumber
|
||
boundary LT_trigger
|
||
queue logistic_tracker.logistic_order_changes as kafka_lt
|
||
participant DDC
|
||
participant OMS_Order
|
||
queue touch.events as Touch
|
||
database db
|
||
|
||
loop
|
||
LT_trigger -> kafka_lt: Событие изменения лог заказа
|
||
DDC -> kafka_lt: Читает сообщение
|
||
end
|
||
alt customer_shipment.now > customer_shipment.before is False
|
||
DDC -> DDC: пропускает сообщение
|
||
else customer_shipment.now > customer_shipment.before is True
|
||
DDC -> OMS_Order: Ожидает подтверждение\nпереноса ДД от OMS через wf
|
||
alt Сигнал с подтверждением переноса ДД не пришло
|
||
DDC -> DDC: Прекращает ожидание события
|
||
else Сигнал с подтверждением переноса ДД пришло
|
||
OMS_Order -> DDC: Сигнал с подтверждением переноса ДД
|
||
DDC -> DDC: Проверяет что не было уведомлений\nпо заказу в течении этих суток
|
||
alt Было уведомление в последние сутки
|
||
DDC -> DDC: Пропускает данное изменение
|
||
else Не было уведомлений в последние сутки
|
||
DDC -> DDC: Проверяет заказ робота или клиента?
|
||
alt Заказ робота
|
||
DDC -> CRM: Отправка сообщения в топик CRM
|
||
DDC -> db: Записывает данные о поставленной задаче в БД
|
||
else Заказ клиента
|
||
DDC -> OMS_Order: Получить данные по заказу
|
||
OMS_Order -> DDC: Вернуть данные по заказу
|
||
DDC -> DDC: Подготовить данные для\nотправки в топик Touch
|
||
DDC -> Touch: Отправить нотификацию в топик Touch (b2c смс, b2b email)
|
||
DDC -> db: Записывает данные о нотификации клиента в БД
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
|
||
@enduml
|
||
|
||
|
||
|
||
@startuml
|
||
start
|
||
:DDC читает топик LT;
|
||
if (customer_shipment.now > customer_shipment.before is False) then
|
||
:Пропускает сообщение;
|
||
kill
|
||
else
|
||
:DDC Ожидает подтверждение\nпереноса ДД от OMS через wf;
|
||
endif
|
||
|
||
if (Сигнал с подтверждением переноса ДД пришел?) then (нет)
|
||
:Прекращает ожидание события\nничего не делает;
|
||
kill
|
||
else (да)
|
||
if (Событие уведомления по заказу было в течении суток?) then (да)
|
||
:Пропускает событие;
|
||
kill
|
||
else (нет)
|
||
endif
|
||
|
||
if (Заказ назначен на менеджера?) then (да)
|
||
:Отправка сообщения в топик CRM;
|
||
:Записывает данные о поставленной задаче в БД;
|
||
else (нет (заказ робота))
|
||
:Отправить нотификацию в топик Touch (b2c смс, b2b email);
|
||
:Записывает данные о нотификации клиента в БД;
|
||
endif
|
||
stop
|
||
|
||
@enduml
|