BPMN gateways на собеседовании системного аналитика

Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

Карьерник — Duolingo для аналитиков: 10 минут в день тренируй SQL, Python, A/B, статистику, метрики и ещё 3 темы собеса. 1500+ вопросов в Telegram-боте. Бесплатно.

Зачем спрашивают на собесе SA

Gateways — главный механизм управления потоком в BPMN. На собесе SA: «отличие XOR и OR», «когда event-based», «как сходить параллельные ветки».

Виды gateways в BPMN 2.0

Gateway Символ Применение
Exclusive (XOR) ромб с X Одна ветка из нескольких
Parallel (AND) ромб с + Все ветки одновременно
Inclusive (OR) ромб с O Несколько веток (1+)
Event-based ромб с пятиугольником Ветка по первому событию
Complex ромб со * Сложная логика

XOR (Exclusive)

«Одна из двух / нескольких веток».

       <amount > 1000?>
       /              \
   [yes]              [no]
   ↓                   ↓
[Approval]      [Auto-charge]

Правила:

  • Условия взаимоисключающие.
  • Ровно одна ветка выбирается.
  • Default flow (стрелка с косой чертой) — если ни одно условие не сработало.

Объединение (XOR merge) — несколько веток сходятся, не ждёт все. Первая пришедшая — продолжает.

AND (Parallel)

«Все ветки одновременно».

        ━━ AND fork ━━
        ↓     ↓     ↓
    [Email][SMS][Push]
        ↓     ↓     ↓
        ━━ AND join ━━
              ↓
      [Логировать]

Правила:

  • Все исходящие потоки активны параллельно.
  • AND join ждёт все потоки и потом продолжает.
  • Без условий на стрелках.

OR (Inclusive)

«Один или несколько потоков».

       OR gateway
       /    |     \
[is_premium] [is_corporate] [in_loyalty]
   ↓           ↓               ↓
[Discount A][Discount B]   [Discount C]

Правила:

  • Каждое условие проверяется независимо.
  • Активируется одна или несколько веток (где условия true).
  • OR join — ждёт все активированные ветки (не все исходящие).

Сложность: OR join требует от движка знать, какие ветки активны. На реальных engine'ах (Camunda) надёжно работает только при честно сформулированных условиях.

Часто проще выразить через XOR с явными branches.

Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

Event-based gateway

«Жди первое из событий».

          [Event-based]
           /    |    \
      Message Timer Cancel
       arrives  30d  signal
        ↓       ↓     ↓
    [Process] [Reject][Abort]

Правила:

  • Каждый исходящий путь ведёт к ивент-узлу (message, timer, signal, etc).
  • Активируется тот путь, чей event пришёл первым.
  • Остальные cancellable.

Применение:

  • Ожидание ответа от внешней системы с таймаутом.
  • Долго работающий процесс с возможностью cancel.

Complex gateway

Custom условия слияния / разветвления, не выражаемые стандартными gateways.

[3 of 5 approvers approved] → continue

На практике — редко используется. Чаще декомпозируют на проще gateways.

Частые ошибки

Перепутать XOR и OR. XOR — ровно одна ветка. OR — одна или несколько.

AND join без AND fork. Если поток прошёл AND join, но не было AND fork — может зависнуть в ожидании несуществующих потоков.

Условия на AND стрелках. AND не имеет условий — все потоки активны всегда.

XOR без default. Если ни одно условие не выполнилось — поток зависает. Всегда default flow.

OR join вместо XOR join. OR join сложнее, движок может не справиться.

Слишком много gateways. 10 gateways в одной диаграмме — нечитаемо. Декомпозиция на subprocess.

Использовать complex gateway. Чаще можно выразить проще.

Mixing-merging без правильного gateway. Неявные сходимости (несколько потоков в один activity) — не рекомендуется. Всегда явный gateway-join.

Связанные темы

FAQ

XOR vs UML decision?

Семантически равны (одна из веток). XOR — BPMN-нотация, decision (ромб) — UML.

Можно ли в BPMN gateway без условий?

XOR/OR — нет, нужны условия. AND — да, никогда нет условий.

Что такое diverging vs converging gateway?

Diverging — разветвление потоков. Converging — слияние. На диаграмме часто это один и тот же символ, но разная семантика.

Это официальная информация?

Нет. Статья основана на спецификации BPMN 2.0 (OMG).


Тренируйте системный анализ — откройте тренажёр с 1500+ вопросами для собесов.