Использование граничных событий
Использование граничных событий с подпроцессами BPMN
Автор: Олег Борознов, 04.03.2018
К подпроцессам можно присоединять граничные события BPMN. Это позволяет смоделировать альтернативные варианты исполнения действий родительского процесса в зависимости от состояния дочернего подпроцесса.
Ниже показан пример диаграммы, на которой событие «Поступило приглашение на ужин» прерывает подпроцесс приготовления еды. Однако, приглашение будет проигнорировано, если еда уже приготовлена и ее уже едят. Такое событие называется «Граничное прерывающее событие BPMN», оно срабатывает при выполнении заданных условий, прерывает выполнение активного подпроцесса и запускает поток управления в родительском процессе по альтернативной ветви.
При наступлении событий типа «Сообщение» (как в рассмотренном примере), а также «Таймер», либо «Условие» подпроцесс прерывается родительским процессом, который реагирует на внешнее обстоятельство. Затем поток управления BPMN в родительском процессе запускается по альтернативной ветви.
При использовании событий «Ошибка», «Отмена», либо «Эскалация» подпроцесс обычно доходит до одного из своих завершающих событий BPMN. В зависимости от того, какое это событие, в родительском процессе активируется альтернативная ветвь потока управления. Такая ситуация продемонстрирована на примере ниже.
Диаграмма процесса BPMN «Обработка заказа»:
Диаграмма подпроцесса BPMN «Закупка товара»:
Рассмотрим диаграмму подпроцесса «Закупка товара». Этот подпроцесс может завершиться событием-ошибкой «Товар недоступен», которое запускает в родительском процессе «Обработка заказа» действие «Проинформировать клиента» о том, что товара нет в наличии.
Родительские процессы BPMN могут по-разному обрабатывать сообщения об ошибках. Чтобы не разочаровать клиента отсутствием товара, который он заказал, можно заранее предусмотреть удаление отсутствующего товара из каталога. Это проиллюстрировано на диаграмме ниже:
Стартовое событие-сигнал «Достигнут минимальный уровень запаса» получает сигнал о том, что достигнут минимальный уровень запаса товаров и необходимо закупить товар. Благодаря такому процессу, при невозможности закупить товар, он удаляется из каталога до того, как клиент его закажет. Событие-сообщение похоже на событие-сигнал, но здесь не применимо, так как оно отправляет информацию участникам процесса, находящимся за рамками одного пула, а здесь показана передача информации между элементами процесса в одном пуле (событие «Достигнут минимальный уровень запаса» и подпроцесс «Закупка товара» находятся в одном пуле).
Принцип построения диаграмм, показанный на рисунках выше, можно использовать при создании процессного ландшафта BPMN (карты процессов).
В BPMN 2.0 вместо события-ошибки предпочтительней использовать событие-эскалацию. На диаграмме ниже приведен пример использования граничного непрерывающего события-эскалации. Граничные непрерывающие события обозначаются кругом из двойной штриховой линии. Они запускают дополнительную ветвь родительского процесса, без прерывания подпроцесса. В нашем примере подпроцесс «Закупка товара» передает информацию о задержке доставки товара в родительский процесс «Обработка заказа». При этом подпроцесс «Закупка товара» продолжает выполнение, а в родительском процессе активируется дополнительная ветвь «Поздняя доставка товара»:
Диаграмма процесса BPMN «Обработка заказа»:
Диаграмма подпроцесса BPMN «Закупка товара»:
Хотите быстро освоить BPMN?
Пройдите обучение в нашем учебном центре! |