Логистический ад (5)

(Предыдущая частьНачало)

Теперь применим паттерн «групповая обработка» к исходной задаче –

Рис. 6. Групповая обработка товарных позиций

Один и тот же паттерн здесь применен дважды: для таможенного декларирования и для доставки.

Схема процесса таможенного декларирования –

Рис. 7. Процесс таможенного декларирования

Комментарии к схеме:

  • Процесс запускается каждый час (например) и начинает с того, что выбирает из базы товарные позиции со статусом «К декларированию», установленным подпроцессом на рис. 6.
  • Найденные товарные позиции группируются по заказам.
  • В цикле по заказам проверяется, все ли товарные позиции прибыли на таможенный склад. Если да, подаем декларацию.
  • Если какие-то позиции задерживаются, проверяем как долго мы уже их ждем. Если прошло больше 48 часов (например), подаем декларацию по прибывшим товарным позициям, не дожидаясь отставших.
  • В противном случае завершаем работу экземпляра подпроцесса. Через час процесс запустится снова, и так до тех пор, пока либо прибудут все товарные позиции, либо истечет срок ожидания.
  • Подав таможенную декларацию и получив ответ таможни, меняем статус товарной позиции, чтобы подпроцесс на рис. 6 пошел дальше.

Для полноты картины осталось смоделировать процесс доставки, это я предоставляю сделать читателям самостоятельно. Он устроен аналогично – запускается по таймеру, ищет товарные позиции, группирует их по заказам, проверяет срок ожидания, меняет статус.

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

Рис. 8. Диаграмма бизнес-способностей

Внимание: хотя на рис. 8 изображены значки из палитры BPMN, это НЕ диаграмма BPMN, а диаграмма в нотации бизнес-способностей (Business Capabilities Diagram).

Что это за нотация, зачем она нужна и как ею пользоваться будет рассказано в статье в одном из ближайших номеров журнала «Открытые системы. СУБД», о выходе статьи сообщу дополнительно.

Запись опубликована в рубрике Разное. Добавьте в закладки постоянную ссылку.

Комментарии запрещены.