Параллельный шлюз
Параллельный шлюз BPMN
Автор: Олег Борознов, 07.03.2018
Параллельный шлюз BPMN используется для ветвления потока управления, то есть, создания параллельных маршрутов, либо для объединения маршрутов. При этом условие ветвления/слияния маршрутов задавать не нужно. Графически параллельный шлюз BPMN отображается с маркером «+» внутри ромба.
На диаграмме ниже отображен процесс приготовления еды с использованием эксклюзивного шлюза BPMN. После выбора рецепта будет приготовлен салат, затем борщ или котлеты.
В этом процессе для каждого действия отображено время его выполнения. Общее время выполнения процесса составляет 48 минут если будет выбран борщ, либо 43 минуты если котлеты. Таким образом, минимальное время ожидания еды составляет 23 минуты. Очевидно, что цель этого процесса – получить салат и основное блюдо, чтобы как можно скорее удовлетворить чувство голода. Для сокращения времени на ожидание еды два действия в этом процессе можно выполнять параллельно: приготовление салата и основного блюда. Для этого на диаграмму процесса необходимо добавить параллельный шлюз BPMN, как показано ниже:
Параллельное выполнение двух действий таким образом сокращает время приготовления еды на 10 минут. Проектирование параллельного выполнения задач – это классический пример оптимизации любого процесса.
Синхронизация потоков управления BPMN
На диаграмме ниже приведен пример, аналогичный разобранному выше, но без использования второго параллельного шлюза BPMN. Поток операций от действия «Приготовить салат» замыкается на эксклюзивный шлюз BPMN. Разберем ход выполнения этого процесса, если для приготовления будет выбран борщ.
Вначале поток операций разделяется на два параллельных маршрута: приготовить борщ и приготовить салат. Как только задача «Приготовить салат» будет выполнена поток управления от нее пройдет через эксклюзивный шлюз и придет к задаче «Съесть еду». Через 5 минут после задачи «Приготовить борщ» поток управления от нее снова пройдет через шлюз и придет в задачу «Съесть еду». Таким образом, задача «Съесть еду» будет выполнена дважды.
В этом случае мы создали множественный (двойной) поток управления, который может приводить к многократному исполнению одних и тех же задач. Здесь задача «Съесть еду» выполняется дважды, с задержкой в 5 минут. Поток управления рассинхронизировался.
Если бы мы, как и раньше, использовали для объединения потоков управления параллельный шлюз BPMN, то рассинхронизации бы не произошло. Это свойство параллельного шлюза: при объединении потоков операций он «ждет» выполнения всех активных ветвей, и только потом запускает дальнейшее выполнение процесса. Это свойство используется для синхронизации потоков, а параллельный шлюз BPMN в данном случае называют «синхронизирующим шлюзом» или «синхронизатором».
Хотите быстро освоить BPMN?
Пройдите обучение в нашем учебном центре! |
Начать курс обучения