коротко

BPMN описывает ход процесса: события, задачи, развилки и синхронизацию. XOR при разделении выбирает один путь; AND активирует все выходы, а при объединении ждёт каждый вход. Пулы задают участников взаимодействия, дорожки разделяют элементы процесса, часто по ответственности. Нотация задаёт смысл символов, но не гарантирует полноту модели: условия, исключения и границы процесса проверяет автор.

Когда «система обрабатывает заявку» превращается в схему, появляются конкретные вопросы: что запускает обработку, кто выполняет шаг, по какому условию выбирается путь и где процесс может ждать. Но нарисовать неполную BPMN так же возможно, как написать неполное требование. Давайте разберём элементы и проверим, какое поведение они задают.

Алфавит BPMN: четыре группы символов

Начнём с базовых элементов, которых достаточно для примеров этой статьи. Это не весь BPMN: сообщения, таймеры, подпроцессы и обработка исключений могут потребовать дополнительных конструкций.

  • События (кружки) — то, что происходит. Один тонкий контур — старт, двойной — промежуточное событие, толстый — конец. Внутри может быть значок: конверт (сообщение пришло/ушло), часы (таймер), молния (ошибка). События могут быть принимающими или порождающими; например, событие-сообщение принимает или отправляет сообщение. Допустимый тип зависит от места события в процессе.
  • Задачи (прямоугольники со скруглёнными углами) — то, что делается. Кто-то выполняет работу: проверяет, считает, отправляет. Значок в углу уточняет тип: человечек — пользовательская задача (работа человека с системой), рука — ручная задача, шестерёнка — автоматическая (сервис).
  • Шлюзы (ромбы) — то, где поток ветвится или сходится. Значок внутри определяет логику (разберём ниже).
  • Потоки (стрелки) — порядок. Сплошная стрелка — поток управления («сначала это, потом то»), штриховая линия с открытым кружком у источника и открытой стрелкой у получателя — поток сообщений. Другие пунктирные связи, например ассоциации, имеют иной смысл.

Эксклюзивный шлюз: развилка «или-или»

Самый частый шлюз — эксклюзивный (со значком × или пустой ромб): из него уходит ровно одна ветка, в зависимости от условия. Вернёмся к процессу заявки на кредит.

Рисунок 1. Заявка на кредит: старт-событие, два эксклюзивных шлюза, два конца

На диаграмме первый XOR «Сумма больше лимита?» выбирает один путь: при превышении лимита нужна проверка менеджером, иначе — автоматическая обработка. После проверки второй XOR выбирает продолжение либо отказ. Потоки к автоматической обработке альтернативны: при одном проходе приходит только один из них. Прямое слияние перед задачей здесь не должно синхронизировать два результата. Это описательная схема: подписи «да» и «нет» не заменяют выражения условий, если модель потребуется исполнять в движке.

Условия выбора должны быть понятны

Для XOR покажите, когда выбирается каждый выход. Условия желательно делать взаимоисключающими и покрывающими ожидаемые случаи; при необходимости задайте выход по умолчанию. Подписи на схеме помогают чтению, но сами по себе не доказывают корректность выражений. Развилка может иметь больше двух выходов.

Параллельный шлюз: разделение и синхронизация

Параллельный шлюз обозначают знаком +. Разделяющий шлюз активирует все исходящие потоки без выбора по условию. Объединяющий ждёт поток на каждом входе и затем пропускает выполнение дальше. Это разные применения одного типа шлюза, а не «сначала запускает, потом ждёт» у одного и того же элемента.

Рисунок 2. Оформление заказа: AND разделяет резервирование и оплату; второй AND синхронизирует их перед доставкой

После события «Заказ оформлен» разделяющий AND активирует резервирование и оплату. Между задачами не задан порядок: они могут выполняться независимо. Второй AND «Резерв и оплата завершены» ждёт обе ветки перед передачей в доставку. Шлюз ничего не собирает и не проверяет сам — он управляет потоком. Здесь показан только успешный путь. При отказе оплаты или резервирования потребуются правила завершения веток и компенсации уже выполненной работы; в этой учебной схеме их нет.

Синхронизация нужна там, где следующий шаг ждёт всех

AND-разветвление не обязано иметь парный AND-шлюз: независимые ветки могут завершиться своими обычными конечными событиями. Экземпляр процесса завершится, когда не останется активных веток и другой незавершённой работы. Но если следующий шаг требует результатов обеих веток, перед ним нужна синхронизация. Два входа прямо в задачу не означают «подождать обоих»: задача может запуститься отдельно для каждого пришедшего потока.

Пулы и дорожки: кто за что отвечает

Пул (pool) представляет участника взаимодействия. Это может быть организация, внешняя система или роль — граница зависит от того, какое взаимодействие вы моделируете. Пул может раскрывать внутренний процесс либо быть «чёрным ящиком». Поток управления не пересекает границу пула; обмен между участниками показывают потоками сообщений.

Дорожки (lanes) — разделы внутри процесса; их рисуют горизонтально или вертикально. Часто они группируют работу по ролям или подразделениям, но это не единственный способ классификации. Если дорожки означают ответственность, задача должна находиться у своего исполнителя. Сама принадлежность к дорожке не запускает задачу: запуск определяется потоком процесса.

Проверьте передачу ответственности

Если дорожки обозначают роли, переход между ними — повод уточнить, кто передаёт работу, кто принимает и где возможна задержка. Количество переходов само по себе не измеряет качество процесса: контроль другим исполнителем может быть намеренным требованием. Обсуждайте причину передачи, а не только число стрелок.

Параллельный шлюз BPMN в разных дорожках

Да, ветки одного параллельного шлюза могут идти в разные дорожки одного пула. В нашем примере дорожки обозначают ответственность, а не самостоятельные процессы. Сплошной поток управления может пересекать её границу. Границу другого пула он пересекать не может: между участниками рисуют поток сообщений.

ШагДорожка в одном пулеЧто должно произойти
Разделить подготовкуКоординаторAND запускает обе ветки
Подготовить переговоркуОфис-менеджерЗавершить подготовку помещения
Проверить видеосвязьИТ-поддержкаЗавершить техническую проверку
Подтвердить готовностьКоординаторПосле AND-объединения, когда пришли оба потока

Это учебный успешный сценарий. В рабочем процессе отдельно договоритесь, что происходит при отказе оборудования и превышении срока подготовки. Сам шлюз не создаёт правило обработки ошибок и не гарантирует физическое начало работ в одну секунду: он делает обе ветки доступными для выполнения.

XOR или AND: проверьте, кого ждёт объединение

  • XOR-развилка → AND, который ждёт обе альтернативные ветки. В таком простом фрагменте приходит только один поток, а объединение ждёт оба: продолжение не запустится.
  • AND-развилка → XOR-объединение. XOR не синхронизирует потоки: продолжение может выполниться дважды.
  • Условия на выходах AND. AND запускает все выходящие потоки; выбор по условию требует другого шлюза.

Открыть BPMN-исходник примера заказа выше (.bpmn). Сохраните файл и откройте его в BPMN-редакторе: в нём резервирование и оплата сходятся перед доставкой. Это учебная схема успешного пути без дорожек; дорожки с ролями этого процесса можно добавить самостоятельно.

Проверьте себя

Для маленькой встречи проверка видеосвязи не нужна. Можно ли просто пропустить её ветку и оставить прежний AND на объединении? Нет: он будет ждать отсутствующий поток. Один вариант — запускать обе ветки, а внутри технической ветки через XOR выбирать «проверить» или «пропустить» и затем возвращаться к общему AND. Для выбора нотации попробуйте тренажёр BPMN, UML и C4.

Нормативная семантика шлюзов и потоков: спецификация OMG BPMN 2.0.2.

Когда BPMN, а когда хватит блок-схемы

BPMN — мощный, но не бесплатный: его надо уметь читать, и для простого линейного процесса он избыточен. Грубое правило: если в процессе участвует несколько ролей или есть нетривиальные развилки и параллельность — берите BPMN, дорожки и шлюзы окупятся. Если это последовательность из пяти шагов без ветвлений — хватит нумерованного списка или простой блок-схемы, не усложняйте. Нотация должна экономить читателю усилия, а не демонстрировать ваше владение ей. А чем именно рисовать BPMN и другие схемы — в записи про инструменты аналитика.

Описательная и исполняемая модели

Файлы примеров помечены как неисполняемые: они объясняют порядок и синхронизацию. Чтобы запускать процесс в движке, недостаточно красиво нарисовать задачи — потребуются исполняемые условия, обработчики, данные и правила ошибок. Импорт BPMN-файла подтверждает читаемость формата, а не готовность процесса к эксплуатации.

Частые вопросы

Чем XOR отличается от AND?

Разделяющий XOR выбирает один путь по условиям, а объединяющий XOR пропускает приходящие потоки без ожидания остальных. Разделяющий AND активирует все выходы; объединяющий AND ждёт каждый вход. Сначала определите, нужен выбор или синхронизация, затем выбирайте шлюз.

Можно ли соединить задачи в разных дорожках?

Да, потоком управления, если дорожки относятся к одному процессу. Между разными пулами такой поток запрещён: для обмена участников используют поток сообщений. Дорожки могут быть горизонтальными или вертикальными.

Какие элементы BPMN нужны для начала?

Начните с событий, задач, потоков и основных шлюзов. Затем добавляйте конструкции, нужные вашему процессу: сообщения, ожидания, исключения. Знание базовых символов помогает читать схему, но не заменяет проверку её поведения.