Материал учебного циклаОткрытый материал

BPMN: от бизнес-процесса до требований к системе

Что такое BPMN, зачем моделировать бизнес-процессы и как читать простую диаграмму от начала до результата.

Продукт и интерфейсы #BPMN
Учебный цикл Моделирование и проектирование информационных систем Материал 1 из 9

BPMN простыми словами: что это такое и как читать диаграмму

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

Например:

Пользователь отправляет заявку, сотрудник её проверяет, при необходимости возвращает на исправление, а после согласования данные передаются дальше.

На первый взгляд всё понятно. Но почти сразу появляются вопросы:

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

Чем сложнее процесс, тем труднее удерживать все эти условия в обычном тексте.

Для формального описания таких процессов используется BPMN - Business Process Model and Notation.

BPMN позволяет представить процесс в виде последовательности событий, действий, условий и взаимодействий между участниками.

Упрощённо:

Заявка получена -> Проверить заявку -> Данные корректны? -> Согласовать -> Завершить процесс

Если данные некорректны, появляется альтернативная ветка:

Данные корректны? -> Нет -> Вернуть на исправление -> Получить исправленную заявку -> Проверить повторно

То есть BPMN помогает превратить текстовое описание процесса в формальную схему, которую одинаково могут читать аналитик, разработчик и представитель бизнеса.

Что именно описывает BPMN

BPMN описывает процесс.

Процесс можно представить как изменение состояния системы или бизнеса во времени:

что-то произошло -> выполняется действие -> принимается решение -> выполняется следующее действие -> получается результат

Например, процесс обработки заявки может начинаться с её отправки и завершаться либо успешным зачислением участника, либо отказом.

BPMN отвечает прежде всего на вопросы:

  • с чего начинается процесс;
  • какие действия выполняются;
  • в каком порядке они выполняются;
  • кто их выполняет;
  • где процесс разделяется на несколько вариантов;
  • какие события могут изменить ход процесса;
  • чем процесс заканчивается.

При этом BPMN не предназначен для описания всей информационной системы сразу.

Например, сама по себе BPMN-диаграмма обычно не отвечает подробно на вопросы:

Какие таблицы существуют в PostgreSQL?
Какие классы находятся в backend?
Какие HTTP endpoints реализованы?
Какие Docker-контейнеры запущены?

Для этого существуют другие модели: ERD, UML, C4, OpenAPI и другие инструменты.

BPMN находится ближе к бизнес-логике:

что происходит и в какой последовательности

а не:

как именно это реализовано внутри программы

Из чего состоит BPMN-диаграмма

Большую часть простой BPMN-схемы можно прочитать, понимая четыре базовых элемента:

Event -> Task -> Gateway -> Flow

Event

Event - событие.

Событие означает, что что-то произошло.

Например:

Пользователь отправил заявку
Истёк срок ожидания
Получено сообщение
Произошла ошибка
Процесс завершён

Самые простые события можно разделить на три типа:

  • Start Event - начало процесса;
  • Intermediate Event - событие внутри процесса;
  • End Event - завершение процесса.

Начальное событие отвечает на вопрос:

Что запускает процесс?

Например:

Получена заявка

Конечное событие отвечает на вопрос:

Чем процесс закончился?

Например:

Заявка согласована

или:

Заявка отклонена

Между ними располагаются действия, условия и дополнительные события.

Task

Task - отдельное действие внутри процесса.

Например:

Проверить документы
Отправить уведомление
Создать пользователя
Сформировать отчёт

Хорошее название Task обычно содержит действие.

Лучше:

Проверить заявку

чем:

Проверка заявки

Первый вариант сразу показывает, что именно происходит.

В BPMN существуют разные виды задач. На начальном уровне достаточно понимать несколько основных.

User Task используется, когда действие выполняет человек через информационную систему.

Например:

Оператор проверяет заявку в CRM

Service Task означает автоматизированное действие системы.

Например:

Отправить данные во внешнюю систему

Manual Task используется для действия человека, которое выполняется вне информационной системы.

Например:

Проверить бумажный оригинал документа

Тип задачи помогает понять не только последовательность процесса, но и то, где требуется участие человека, а где операция может выполняться автоматически.

Gateway

Gateway - точка, в которой маршрут процесса изменяется.

Самый распространённый вариант - Exclusive Gateway.

Он используется, когда должен быть выбран только один путь.

Например:

Документы корректны? -> Да -> Согласовать заявку
Документы корректны? -> Нет -> Вернуть на исправление

Из двух веток выполняется одна.

Другой вариант - Parallel Gateway.

Он используется, когда несколько действий можно запустить одновременно.

Например:

Заявка согласована -> одновременно отправить письмо + создать пользователя + сформировать документы

Третья распространённая конструкция - Inclusive Gateway.

Она позволяет выбрать одну или несколько веток в зависимости от условий.

Главное различие можно запомнить так:

Exclusive Gateway - один подходящий путь
Parallel Gateway - все пути одновременно
Inclusive Gateway - один или несколько подходящих путей

Flow

Элементы BPMN соединяются потоками.

Основной поток внутри процесса называется Sequence Flow.

Он показывает порядок выполнения:

Получить заявку -> Проверить заявку -> Принять решение

Если стрелка ведёт от одного действия к другому, первое действие предшествует второму.

Но BPMN также умеет показывать взаимодействие между разными участниками. Для этого используется Message Flow.

Разница принципиальная:

Sequence Flow - порядок действий внутри одного процесса
Message Flow - обмен сообщениями между разными участниками

Как показываются участники процесса

Реальный бизнес-процесс редко выполняется одним человеком.

Например, в процессе образовательной программы могут участвовать:

  • абитуриент;
  • оператор;
  • образовательная организация;
  • информационная система;
  • внешняя ИТ-школа.

Чтобы показать ответственность участников, BPMN использует Pool и Lane.

Pool обозначает крупного участника процесса.

Например:

Абитуриент
Образовательная организация
ИТ-школа

Lane позволяет разделить ответственность внутри одного участника.

Например:

Образовательная организация

Оператор
Руководитель
Информационная система

Теперь действие можно расположить внутри конкретной Lane, и становится понятно, кто должен его выполнять.

Простой процесс может выглядеть так:

Абитуриент: Подать заявку -> Образовательная организация: Проверить заявку -> Информационная система: Создать запись

На реальной BPMN-диаграмме эти действия будут находиться в соответствующих дорожках.

Это особенно полезно при проектировании информационных систем, потому что из Lane начинают становиться видны будущие роли и права пользователей.

Например:

Оператор -> проверяет заявку
Руководитель -> согласовывает
Администратор -> изменяет настройки программы

Из такого процесса уже можно вывести часть permission model будущей системы.

События внутри процесса

Процесс не всегда представляет собой непрерывную последовательность действий.

Иногда система должна ждать.

Например:

Отправить заявку -> ждать ответ -> получить ответ -> продолжить процесс

Или:

Отправить запрос -> ждать 3 дня -> если ответа нет, отправить напоминание

Для таких ситуаций используются промежуточные события.

Timer Event

Timer Event связан со временем.

Например:

Заявка отправлена -> ждать 3 дня -> отправить напоминание

На уровне информационной системы такой элемент позже может превратиться в:

  • scheduled task;
  • Celery task;
  • cron job;
  • delayed message.

Но на BPMN-диаграмме нас пока интересует бизнес-смысл:

Через три дня должно произойти определённое действие.

Message Event

Message Event означает получение или отправку сообщения.

Например:

Отправить запрос во внешнюю организацию -> ждать ответ -> получить сообщение -> продолжить обработку

На техническом уровне это позже может быть реализовано через:

  • API;
  • webhook;
  • message broker;
  • email;
  • внутреннее событие.

Но BPMN показывает сам факт взаимодействия, не привязываясь раньше времени к реализации.

Error Event

Процесс может завершиться ошибкой или перейти на альтернативную ветку.

Например:

Создать пользователя -> ошибка внешней системы -> зарегистрировать ошибку -> повторить позже

Особенно полезны Boundary Events, которые позволяют показать событие, возникающее во время выполнения конкретной задачи.

Например:

Выполнять оплату -> timeout -> перейти к обработке ошибки

Как читать BPMN-диаграмму

При первом взгляде на большую диаграмму не стоит пытаться сразу изучить каждый значок.

Лучше читать её слоями.

Сначала найдите начало процесса.

Затем проследите основной Sequence Flow:

Start -> Task -> Task -> Gateway -> Task -> End

Это основной happy path.

После этого вернитесь к gateway и посмотрите альтернативные ветви.

Например:

Получить заявку -> Проверить заявку -> Данные корректны?

Да -> Согласовать -> Создать участника -> Завершить
Нет -> Вернуть на исправление -> Получить исправления -> Проверить повторно

После основного маршрута имеет смысл смотреть:

  • кто выполняет действия;
  • где процесс ждёт события;
  • какие действия автоматические;
  • какие исключения предусмотрены;
  • какие сообщения передаются другим участникам.

Так диаграмма читается постепенно, а не как одна огромная схема.

Как построить BPMN-процесс с нуля

Рисовать диаграмму сразу обычно неудобно.

Сначала лучше сформулировать процесс обычным текстом.

Например:

Пользователь подаёт заявку на образовательную программу. Оператор проверяет данные. Если информация заполнена неправильно, заявку возвращают пользователю. После исправления она снова поступает на проверку. Если всё корректно, руководитель согласовывает заявку. После согласования информационная система создаёт участника программы и отправляет уведомление.

Теперь можно выделить основные действия:

Подать заявку -> Проверить заявку -> Согласовать заявку -> Создать участника -> Отправить уведомление

После этого добавить условие:

Проверить заявку -> Данные корректны?

Да -> Согласовать заявку
Нет -> Вернуть на исправление -> Получить исправленную заявку -> Проверить повторно

Затем определить участников:

Абитуриент - подаёт и исправляет заявку
Оператор - проверяет
Руководитель - согласовывает
Информационная система - создаёт участника и отправляет уведомление

Только после этого имеет смысл переносить процесс в BPMN.

Практический порядок получается таким:

Определить начало и результат -> выделить участников -> выписать действия -> найти решения и альтернативы -> добавить события ожидания -> проверить исключения -> перенести процесс в BPMN

Такой подход почти всегда проще, чем начинать с выбора значков в редакторе.

Как BPMN помогает разработке

BPMN полезна не только бизнес-аналитику.

Хорошая процессная схема начинает формировать требования к информационной системе.

Например:

User Task - пользовательское действие в интерфейсе
Lane - роль или зона ответственности
Gateway - бизнес-правило
Timer Event - отложенная или запланированная операция
Message Event - взаимодействие с другой системой
Service Task - автоматизированная операция backend
Error Event - сценарий обработки ошибки

Представим фрагмент:

Оператор проверяет заявку -> заявка корректна? -> отправить на согласование

Из него уже появляются потенциальные требования:

  • у заявки должен существовать статус;
  • оператор должен иметь право на проверку;
  • система должна хранить результат проверки;
  • должна существовать операция отправки на согласование;
  • нельзя отправить заявку на согласование из любого состояния;
  • изменение статуса желательно записывать в audit log;
  • руководителю может потребоваться уведомление.

BPMN не определяет конкретный REST endpoint или таблицу PostgreSQL, но помогает понять, что системе вообще потребуется.

Позже процесс можно связать с другими моделями:

BPMN -> бизнес-процесс
ERD -> структура данных
State Machine -> состояния сущности
UML Sequence -> техническое взаимодействие
C4 -> архитектура системы
OpenAPI -> точный API-контракт

Поэтому BPMN полезно использовать как один из первых уровней формализации требований.

Насколько подробно нужно рисовать процесс

Одна из распространённых ошибок - попытка поместить всю организацию на одну BPMN-диаграмму.

Через некоторое время получается схема из сотен элементов и десятков пересекающихся стрелок.

Формально информации становится больше, но пользоваться диаграммой становится сложнее.

Крупный процесс лучше декомпозировать.

Например:

Обработка заявки -> Проверка документов -> Согласование -> Зачисление -> Обучение

Каждый этап можно вынести в отдельный subprocess.

На верхнем уровне остаётся общий маршрут:

Получить заявку -> Проверить -> Согласовать -> Зачислить -> Завершить

А детали проверки документов находятся внутри отдельного подпроцесса.

Правильный уровень детализации определяется вопросом, на который должна отвечать диаграмма.

Если задача - объяснить руководителю общий процесс, ему не нужны десятки технических операций.

Если схема используется для постановки задачи разработчикам, детализация может быть значительно выше.

Типичные ошибки BPMN

Первая ошибка - смешивание бизнес-процесса и технической архитектуры.

Например, в одну диаграмму пытаются добавить:

PostgreSQL
Redis
HTTP endpoint
Docker container
Python function

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

Вторая ошибка - непонятные gateway.

Плохой вариант:

Gateway -> ветка 1 / ветка 2

Но непонятно, почему выбирается конкретная ветка.

Лучше:

Документы корректны? -> Да / Нет

Третья ошибка - отсутствие альтернативных сценариев.

На диаграмме часто моделируют только идеальный путь:

Получили данные -> обработали -> успешно завершили

Но реальная система сталкивается с:

  • ошибками;
  • отказами;
  • таймаутами;
  • некорректными данными;
  • отменой;
  • повторной отправкой.

Четвёртая ошибка - неправильный уровень детализации.

Если каждое нажатие кнопки становится отдельной BPMN Task, процесс быстро становится нечитаемым.

Пятая ошибка - отсутствие ответственности.

Если на диаграмме есть:

Проверить заявку

но невозможно понять, кто это делает, схема оставляет важный вопрос открытым.

Перед завершением диаграммы полезно проверить:

  • понятно ли, с чего начинается процесс;
  • понятно ли, чем он заканчивается;
  • ясно ли, кто выполняет каждое значимое действие;
  • понятны ли условия gateway;
  • присутствуют ли основные альтернативные сценарии;
  • показаны ли важные ожидания и сообщения;
  • можно ли по схеме сформулировать требования к системе;
  • не смешаны ли бизнес-процесс и техническая архитектура;
  • можно ли уменьшить диаграмму через subprocess.

Что важно запомнить

BPMN - это способ формально описать бизнес-процесс.

В основе простой диаграммы достаточно понимать несколько вещей:

Event - что-то произошло
Task - что-то нужно сделать
Gateway - нужно выбрать или разделить маршрут
Sequence Flow - порядок действий
Pool / Lane - кто участвует
Message Flow - кто с кем обменивается сообщениями

Из этих элементов уже можно собрать большую часть процессов, которые встречаются при проектировании CRM, внутренних информационных систем, интеграций и автоматизации.

Главная цель BPMN не в том, чтобы правильно расставить символы.

Хорошая диаграмма должна позволить человеку посмотреть на неё и понять:

кто -> что делает -> при каком условии -> что происходит дальше -> чем всё заканчивается

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

Продолжить

  1. 01 UML: как описывать программную систему с разных сторон Введение в UML и основные виды диаграмм. Разбираем, зачем одной системе нужны разные представления, что показывают Use Case, Sequence, Class, Activity, State Machine, Component и Deployment Diagram и как выбрать подходящую диаграмму под задачу.
  2. 02 ERD и моделирование данных Подробное введение в ERD и моделирование данных. Разбираем сущности, атрибуты, первичные и внешние ключи, связи 1:1, 1:N и M:N, обязательность связей, нормализацию и переход от ERD к PostgreSQL и Django ORM.
  3. 03 State Machines: жизненный цикл сущностей Практическое введение в State Machine и моделирование жизненного цикла сущностей. Разбираем состояния, переходы, события, guard conditions, побочные эффекты и связь State Machine с BPMN, базой данных и API.
  4. 04 DFD: как данные проходят через систему Практическое введение в DFD и моделирование потоков данных. Разбираем внешние сущности, процессы, хранилища и потоки данных, Context Diagram, уровни декомпозиции, баланс между уровнями, связь DFD с API, безопасностью, BPMN и Sequence Diagram.
  5. 05 C4 Model: архитектура программной системы Практическое введение в C4 Model для описания архитектуры информационных систем. Разбираем уровни System Context, Container и Component, дополнительные Dynamic и Deployment Diagram, границы между ними и применение C4 для монолитов и микросервисов.
  6. 06 API Contracts: как системы договариваются о взаимодействии Практическое руководство по проектированию API-контрактов. Разбираем структуру HTTP API, ресурсы и action endpoints, request и response schemas, ошибки, OpenAPI, версионирование, совместимость, аутентификацию, авторизацию, webhook-контракты и безопасное изменение API для существующих consumers.
  7. 07 Event-Driven Modeling: события, очереди и асинхронные процессы Практическое руководство по Event-Driven Modeling и проектированию асинхронных взаимодействий. Разбираем команды и события, Producer, Broker и Consumer, очереди и routing, идемпотентность, порядок событий, retries, Dead Letter Queue, Transactional Outbox, eventual consistency и связь событий с BPMN и State Machine.
  8. 08 Как собрать BPMN, UML, ERD, C4 и API в одну проектную документацию Практическое руководство по сборке проектной документации информационной системы. Показываем, как связать BPMN, UML, ERD, State Machine, DFD, C4, API Contracts и Event-Driven Modeling так, чтобы каждая модель отвечала на свой вопрос и не дублировала остальные.

Обратная связь

Материал был полезен?

Нашли ошибку или неточность? Сообщить →

Начните вводить — найдём материал по всей библиотеке.