Теперь применим паттерн «групповая обработка» к исходной задаче –
Рис. 6. Групповая обработка товарных позиций
Один и тот же паттерн здесь применен дважды: для таможенного декларирования и для доставки.
Схема процесса таможенного декларирования –
Рис. 7. Процесс таможенного декларирования
Комментарии к схеме:
- Процесс запускается каждый час (например) и начинает с того, что выбирает из базы товарные позиции со статусом «К декларированию», установленным подпроцессом на рис. 6.
- Найденные товарные позиции группируются по заказам.
- В цикле по заказам проверяется, все ли товарные позиции прибыли на таможенный склад. Если да, подаем декларацию.
- Если какие-то позиции задерживаются, проверяем как долго мы уже их ждем. Если прошло больше 48 часов (например), подаем декларацию по прибывшим товарным позициям, не дожидаясь отставших.
- В противном случае завершаем работу экземпляра подпроцесса. Через час процесс запустится снова, и так до тех пор, пока либо прибудут все товарные позиции, либо истечет срок ожидания.
- Подав таможенную декларацию и получив ответ таможни, меняем статус товарной позиции, чтобы подпроцесс на рис. 6 пошел дальше.
Для полноты картины осталось смоделировать процесс доставки, это я предоставляю сделать читателям самостоятельно. Он устроен аналогично – запускается по таймеру, ищет товарные позиции, группирует их по заказам, проверяет срок ожидания, меняет статус.
В завершение, покажем, сколько у нас получилось бизнес-процессов и как они друг с другом связаны.
Рис. 8. Диаграмма бизнес-способностей
Внимание: хотя на рис. 8 изображены значки из палитры BPMN, это НЕ диаграмма BPMN, а диаграмма в нотации бизнес-способностей (Business Capabilities Diagram).
Что это за нотация, зачем она нужна и как ею пользоваться будет рассказано в статье в одном из ближайших номеров журнала «Открытые системы. СУБД», о выходе статьи сообщу дополнительно.


