Введение
Шлюз (Gateway) в нотации BPMN – элемент диаграммы процесса, управляющий слиянием и разветвлением потоков управления. Шлюз изображается ромбом и определяет, по какому пути пойдёт процесс после его достижения, или синхронизирует несколько входящих потоков перед продолжением. Шлюзы – один из трёх базовых типов элементов потока в BPMN (наряду с событиями и задачами).
Правильный выбор типа шлюза критически важен для корректного описания логики процесса. Использование неправильного типа приводит к семантически некорректным моделям – особенно при использовании моделей для исполнения в BPMS.
История и контекст
Концепция шлюзов унаследована BPMN из блок-схем и EPC-нотации SAP/ARIS. В EPC аналогичную роль выполняют логические операторы (AND, OR, XOR). В первых версиях BPMN (1.0, 2004) шлюзы уже были ключевым элементом. В BPMN 2.0 (2011) типология шлюзов была расширена и формализована: добавлены событийный (Event-Based) и сложный (Complex) шлюзы.
В исполняемых BPM-системах (Camunda, Activiti, jBPM) поведение шлюзов строго определено: нарушение правил (например, отсутствие default flow у XOR-шлюза) приводит к исключению во время выполнения.
Как это работает
Основные типы шлюзов BPMN:
- Эксклюзивный (Exclusive, XOR) – изображается ромбом с «X» или пустым. При разветвлении: активируется ровно одна исходящая ветка на основе условия. При слиянии: пропускает первый пришедший поток. Аналог «if/else».
- Параллельный (Parallel, AND) – ромб с «+». При разветвлении: активируются все исходящие ветки одновременно. При слиянии: ждёт завершения всех входящих веток. Аналог fork/join в многопоточности.
- Инклюзивный (Inclusive, OR) – ромб с «O». При разветвлении: активируются все ветки, условие которых истинно (одна или несколько). При слиянии: ждёт всех активированных веток.
- Событийный (Event-Based) – ромб с двойным кругом и пятиугольником. Следующий шаг определяется тем, какое событие произойдёт первым. Используется для моделирования гонки событий.
- Сложный (Complex) – ромб со звёздочкой. Для нестандартных условий ветвления, которые нельзя выразить другими шлюзами.
Где применяется
- Условная маршрутизация – XOR-шлюз направляет процесс по пути одобрения или отклонения.
- Параллельное выполнение – AND-шлюз запускает параллельные проверки (юридическую и финансовую одновременно).
- Гонка событий – событийный шлюз ожидает: либо ответ пользователя, либо таймаут.
- Синхронизация параллельных потоков – AND-слияние ждёт окончания всех параллельных задач.
Преимущества и ограничения
Преимущества: чёткая семантика типов шлюзов делает логику процесса однозначной. Исполняемые шлюзы в BPMS автоматически управляют маршрутизацией экземпляра процесса без программного кода.
Ограничения: путаница между XOR и OR шлюзами – частая ошибка в моделировании. Инклюзивный шлюз сложен в слиянии (нужно знать, какие ветки были активированы при разветвлении). Злоупотребление сложным шлюзом ухудшает читаемость модели.
Связь с другими понятиями
Задача (BPMN) – элемент потока, между которым расположены шлюзы. Событие (процесс) – альтернативный способ управления потоком через внешние триггеры. Пул и дорожка – структурные элементы BPMN, задающие ответственность; шлюзы управляют потоком внутри них. Подпроцесс может содержать внутренние шлюзы. BPMN – нотация, в которой определены все типы шлюзов.