коротко

BPMN читается по форме символов. Кружки — события (что-то случилось: старт, конец, таймер, входящее сообщение). Прямоугольники со скруглением — задачи (кто-то что-то делает). Ромбы — шлюзы: эксклюзивный (×) — развилка «или-или», параллельный (+) — «делаем одновременно и ждём оба». Пулы — это участники процесса (компании, системы), дорожки (lanes) внутри пула — роли, и сразу видно, кто за какой шаг отвечает. Стрелки внутри пула — поток управления, пунктир между пулами — обмен сообщениями. Главная сила BPMN перед обычной блок-схемой: нотация заставляет указать оба исхода у каждой развилки и явно показать, кто исполнитель.

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

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

BPMN огромен, но 90% реальных схем рисуются четырьмя группами элементов. Их и нужно знать аналитику.

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

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

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

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

На диаграмме: процесс стартует событием «Заявка подана». Первый эксклюзивный шлюз «Сумма больше лимита?» выбирает одну ветку: «да» — заявка идёт на задачу «Ручная проверка менеджером», «нет» — сразу на «Автоматическую обработку». После ручной проверки второй шлюз «Проверка пройдена?» снова выбирает одно из двух: «да» — на автообработку, «нет» — в конечное событие «Отказ, доработка». Успешная ветка завершается событием «Заявка обработана». Ключевое слово — эксклюзивный: одновременно может идти только один путь, как стрелка на железной дороге. И заметьте: обе задачи-обработки на самом деле ведут в один и тот же блок «Автоматическая обработка» — это слияние потоков, тоже нормальная часть нотации.

Подписывайте ветки шлюза

У эксклюзивного шлюза каждая исходящая стрелка должна быть подписана условием (да/нет, < лимита / >= лимита). Шлюз без подписей — это вопрос без ответов: читающий не знает, при каком условии куда пойдёт процесс. Это первое, что я проверяю в чужой BPMN-схеме.

Параллельный шлюз: «одновременно и ждём всех»

Второй важный шлюз — параллельный (со значком +). В отличие от эксклюзивного, он не выбирает ветку, а запускает все сразу и потом дожидается их завершения. Классика — оформление заказа.

Рисунок 2. Оформление заказа: параллельный шлюз запускает резерв и оплату одновременно, затем сборка

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

Параллельный шлюз обязан закрыться

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

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

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

Дорожки (lanes) — это горизонтальные полосы внутри одного пула, обычно роли: «Клиент», «Менеджер», «Система». Задача рисуется в той дорожке, чья роль её выполняет. И сразу, без единого слова текста, видно, кто за какой шаг отвечает и где работа передаётся из рук в руки. Именно дорожки делают BPMN языком бизнес-процессов, а не просто блок-схем: на вопрос «кто это делает?» схема отвечает расположением.

Передача между дорожками — зона риска

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

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

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

Откуда это взялось

BPMN создала организация BPMI около 2004 года, чтобы у бизнес-аналитиков и разработчиков был общий язык процессов: бизнес рисует понятную ему схему, а из неё (в исполнимом подмножестве) можно сгенерировать то, что реально выполняет движок. В 2011 году вышел BPMN 2.0 под эгидой OMG — он добавил строгую семантику и формат обмена, благодаря которому диаграмму из одного инструмента можно открыть в другом. Именно BPMN 2.0 рендерит движок bpmn.io, которым нарисованы схемы выше. Любопытно, что большую часть богатства BPMN (десятки типов событий, под-процессы, компенсации) на практике почти не используют — живут на тех четырёх группах символов, что мы разобрали.

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

Чем эксклюзивный шлюз отличается от параллельного в BPMN?

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

Что такое пулы и дорожки в BPMN?

Пул (pool) — отдельный участник процесса (компания, клиент, внешняя система); разные пулы общаются только сообщениями (пунктирные стрелки), потому что у них нет общего потока управления. Дорожки (lanes) — горизонтальные полосы внутри одного пула, обычно роли (Клиент, Менеджер, Система); задача рисуется в дорожке той роли, что её выполняет. Благодаря дорожкам по схеме сразу видно, кто за какой шаг отвечает и где работа передаётся между ролями.

Какие элементы BPMN нужно знать аналитику?

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