Шлюзы BPMN
Шлюзы BPMN — это элементы нотации BPMN (Business Process Model and Notation), используемые для управления потоком управления (control flow) в моделях бизнес-процессов. Шлюзы (gateways) определяют точки ветвления, слияния, разветвления или объединения путей процесса на основе заданных условий, не выполняя при этом никаких действий (в отличие от задач). Основное назначение шлюзов — моделирование логики принятия решений и синхронизации параллельных потоков.
История и стандартизация
Нотация BPMN была разработана консорциумом Business Process Management Initiative (BPMI) в начале 2000-х годов. Первая версия спецификации (BPMN 1.0) вышла в 2004 году. В 2006 году управление стандартом перешло к Object Management Group (OMG). Шлюзы как отдельный класс элементов появились уже в первой версии, однако их типы и семантика уточнялись в последующих редакциях. В версии BPMN 2.0 (2011 год) была введена формальная спецификация выполнения, что позволило однозначно интерпретировать поведение шлюзов в исполняемых моделях. Текущая версия стандарта — BPMN 2.0.2 (2013 год), поддерживаемая OMG и ISO (ISO/IEC 19510:2013).
Классификация шлюзов
Шлюзы делятся на пять основных типов, каждый из которых имеет уникальную графическую нотацию (ромб с внутренним значком) и семантику:
Эксклюзивный шлюз (Exclusive Gateway)
Эксклюзивный шлюз (XOR-шлюз) — это точка ветвления, в которой поток управления направляется только по одному из нескольких исходящих путей. Выбор пути определяется условиями, заданными на исходящих потоках (sequence flows). Если ни одно условие не выполнено, может быть задан поток по умолчанию (default flow). При слиянии эксклюзивный шлюз не требует синхронизации — любой входящий поток сразу передаётся на выход.
Графическое обозначение: ромб с крестом (X) внутри.
Инклюзивный шлюз (Inclusive Gateway)
Инклюзивный шлюз (OR-шлюз) позволяет активировать одно или несколько исходящих направлений одновременно. Условия на каждом исходящем потоке оцениваются независимо; все потоки, для которых условие истинно, активируются. При слиянии инклюзивный шлюз ожидает завершения всех активированных ветвей, прежде чем продолжить выполнение.
Графическое обозначение: ромб с кружком (O) внутри.
Параллельный шлюз (Parallel Gateway)
Параллельный шлюз (AND-шлюз) используется для разветвления процесса на несколько параллельных потоков, которые выполняются одновременно, без проверки условий. Все исходящие потоки активируются. При слиянии параллельный шлюз ожидает завершения всех входящих потоков, прежде чем передать управление дальше.
Графическое обозначение: ромб с плюсом (+) внутри.
Сложный шлюз (Complex Gateway)
Сложный шлюз применяется в ситуациях, когда логика ветвления или слияния не укладывается в простые XOR, OR или AND. Он позволяет задать произвольное выражение на языке выражений (например, FEEL или XPath), определяющее, какие исходящие потоки активируются или какие входящие потоки должны завершиться для продолжения.
Графическое обозначение: ромб со звёздочкой (*) внутри.
Шлюз на основе событий (Event-Based Gateway)
Шлюз на основе событий (Event-Based Gateway) — это точка ветвления, в которой дальнейший ход процесса определяется не условиями, а наступлением одного из нескольких возможных событий (например, получение сообщения, срабатывание таймера). После активации первого события все остальные ветви отменяются. Данный тип шлюза не может использоваться для слияния.
Графическое обозначение: ромб с двойной линией и значком в виде пятиугольника (символ события) внутри.
Устройство и характеристики
Шлюзы в BPMN обладают следующими ключевыми характеристиками:
- Тип маршрутизации: определяет, как шлюз обрабатывает входящие и исходящие потоки (исключающий, включающий, параллельный, сложный, событийный).
- Направление: шлюзы могут быть расходящимися (fork), сходящимися (merge) или смешанными (одновременно fork и merge). В спецификации BPMN 2.0 рекомендуется явно задавать направление, чтобы избежать неоднозначности.
- Условия: для эксклюзивных и инклюзивных шлюзов условия задаются на исходящих потоках в виде логических выражений. В исполняемых моделях условия могут быть написаны на языках типа FEEL (Friendly Enough Expression Language), XPath, или на языках программирования (например, Java, JavaScript).
- Поток по умолчанию: для эксклюзивных шлюзов может быть задан поток по умолчанию, который активируется, если ни одно из условий не выполнено.
- Синхронизация: при слиянии параллельных и инклюзивных шлюзов требуется синхронизация — ожидание завершения всех активированных ветвей. Эксклюзивные шлюзы синхронизации не требуют.
Применение
Шлюзы широко применяются в моделировании бизнес-процессов в различных отраслях:
Моделирование принятия решений
Эксклюзивные шлюзы используются для моделирования простых условий: например, «если заявка одобрена — перейти к оформлению, иначе — отправить отказ». Инклюзивные шлюзы применяются в ситуациях, когда может быть выбрано несколько вариантов одновременно: например, «если клиент — VIP, отправить уведомление менеджеру и запустить программу лояльности».
Параллельное выполнение
Параллельные шлюзы позволяют моделировать независимые действия, выполняемые одновременно: например, параллельная проверка документов разными отделами или одновременная отправка уведомлений по электронной почте и SMS.
Обработка событий
Шлюзы на основе событий используются для моделирования ожидания внешних сигналов: например, система ждёт либо подтверждения от клиента, либо истечения таймера. Первое наступившее событие определяет дальнейший ход процесса.
Сложная логика
Сложные шлюзы применяются в нестандартных сценариях, например, когда для продолжения процесса необходимо завершение не всех, а определённого количества параллельных ветвей (например, «дождаться ответа от двух из трёх экспертов»).
Примеры
Пример 1: Обработка заявки на кредит
- Параллельный шлюз (fork): запускает параллельно проверку кредитной истории и проверку доходов.
- Параллельный шлюз (merge): ожидает завершения обеих проверок.
- Эксклюзивный шлюз: если обе проверки пройдены — одобрить кредит; если хотя бы одна не пройдена — отклонить.
Пример 2: Подтверждение заказа
- Шлюз на основе событий: ожидает либо подтверждения заказа клиентом (событие-сообщение), либо истечения 24 часов (событие-таймер).
- Эксклюзивный шлюз: если подтверждение получено — перейти к отгрузке; если таймер истёк — отменить заказ.
Критика и ограничения
Шлюзы BPMN, несмотря на широкое распространение, подвергаются критике по нескольким причинам:
- Сложность для неподготовленных пользователей: нотация BPMN в целом и шлюзы в частности требуют понимания формальной семантики, что затрудняет их использование бизнес-аналитиками без технического бэкграунда.
- Неоднозначность при слиянии: в некоторых случаях (особенно при использовании инклюзивных шлюзов) может возникнуть ситуация, когда не все входящие потоки активированы, что приводит к зависанию процесса (deadlock). Спецификация BPMN 2.0 частично решает эту проблему, но на практике требуется тщательное проектирование.
- Избыточность для простых процессов: для простых линейных процессов использование шлюзов может быть избыточным, и вместо них применяются более простые конструкции (например, условные потоки без шлюзов).
- Ограниченная поддержка в инструментах: не все BPMN-редакторы и движки процессов корректно реализуют семантику сложных шлюзов, что может приводить к различиям в поведении модели на разных платформах.
Источники
- Object Management Group. Business Process Model and Notation (BPMN), Version 2.0.2. — OMG, 2013.
- Silver B. BPMN Method and Style: A Levels-based Methodology for BPMN Process Modeling. — Cody-Cassidy Press, 2011.
- Freund J., Rücker B. Real-Life BPMN: Using BPMN 2.0 to Analyze, Improve, and Automate Processes. — CreateSpace, 2014.
- ISO/IEC 19510:2013. Information technology — Object Management Group Business Process Model and Notation.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →