Сообщения в BPMN 2.0 — это главный способ обмена информацией между разными участниками процесса (пулами). Сообщение представляет собой содержимое диалога: заявка, ответ, уведомление.
Из этого урока вы узнаете, что такое Поток сообщений (Message Flow), чем он отличается от Потока управления (Поток операций, Sequence Flow), какие бывают События-сообщения (стартовые, промежуточные, конечные), как работают задачи: Отправка и Получение сообщений, увидите готовые примеры и научитесь моделировать любые межпроцессные коммуникации.
Сообщения в BPMN 2.0 — это способ общения между разными участниками бизнес-процесса. Представьте переписку в мессенджере: одна сторона отправляет сообщение, другая получает и реагирует. В BPMN для этого есть специальные значки и правила.
В бизнес-процессах это используется, когда разные участники не находятся в одном процессе, но должны обмениваться данными.
Где применяются Сообщения
Передать данные между разными процессами (например, из заявки в CRM в складскую систему)
Связать клиента и компанию
Согласовать действия нескольких участников
Запустить или завершить процесс по внешнему сигналу
Почему это важно
Без Сообщений вы можете описать только «внутренние шаги» одного отдела. С Сообщениями — строите реальную бизнес-схему: интеграцию систем, обмен с клиентами, работу с внешними сервисами.
💡 Главная мысль: Сообщения не управляют логикой шагов (это делает поток управления), они лишь фиксируют сам факт и направление обмена данными.
События-сообщения BPMN: какие бывают и как их отличить
Событие-сообщение в BPMN 2.0 — это элемент, который срабатывает при получении или отправке сообщения и влияет на ход процесса. Процесс может запуститься, замереть или завершиться в зависимости от того, пришло сообщение или ушло.
Виды событий с сообщениями
Тип события
Что делает
Роль в процессе
Пример из жизни
Стартовое событие-сообщение
Запускает процесс, когда пришло сообщение
Пусковой крючок-триггер
«Пришла заявка от клиента»
Промежуточное событие – ожидание сообщения (Catch)
Останавливается и ждёт сообщения внутри процесса
Синхронизация
«Ждём, пока банк подтвердит оплату»
Промежуточное событие – отправка сообщения (Throw)
Отправляет сообщение, не завершая процесс
Передача данных
«Отправили запрос на склад»
Конечное событие-сообщение
Завершает процесс и отправляет сообщение
Финал + уведомление
«Заказ готов, сообщили клиенту»
Как различить на схеме промежуточное сообщение ожидание или отправку
Промежуточное событие – ожидание сообщения (Ловящее, Catch) – контур тонкий, конвертик не закрашен. Процесс ждёт сообщения.
Промежуточное событие – отправка сообщения (Бросающее, Throw) – контур толстый, конвертик закрашен. Процесс отправляет сообщение.
⚠️ Частая ошибка: путают событие-сообщение с потоком управления. Запомните: событие-сообщение не управляет порядком шагов (это делает поток управления). Оно только отмечает: «тут пришло сообщение» или «тут мы его отправили».
Поток сообщений в BPMN (Message Flow) — это пунктирная стрелка, которая показывает, как сообщение переходит от одного участника к другому (между разными пулами). Он нужен только для связи между процессами, а не внутри одного.
Графический элемент Потока сообщений представляет собой стрелку со свободным концом, выполненной в виде пунктирной чёрной линии (пунктир позволяет легко отличить Поток сообщений (Message Flow) от Потока операций (управления, Sequence Flow), выполненного стрелкой в виде непрерывной чёрной линии)
Рис 1. Графическое представление Потока сообщений (Message Flow)
Поток сообщений в нотации BPMN может соединять только два разных пула (участников процесса) между собой или элементы, расположенные внутри этих пулов. Однако, Поток сообщений не может соединять два элемента, расположенные внутри одного и того же пула.
Например, в процессе «Приём заказа» взаимодействие (обмен информацией) между Клиентом и Менеджером компании может отображаться следующей схемой:
Рис 2. Поток сообщений между участниками процесса
Стрелка используется для отображения межпроцессного взаимодействия - для связи элементов потока со свернутыми пулами. При необходимости Поток может быть именованным. Поток сообщений не отображает ход выполнения процесса, а показывает передачу сообщений или объектов из одного процесса в другой процесс или внешнюю ссылку.
Сравнение: Поток сообщений (Message Flow) и Поток управления (Sequence Flow) в нотации BPMN
Характеристика
Поток сообщений (Message Flow)
Поток управления или Поток операций (Sequence Flow)
Зачем нужен
Передача сообщений (данных) между разными участниками
Последовательность шагов (управление) внутри процесса
Где используется
Между разными пулами
Внутри одного пула
Как выглядит
Пунктирная чёрная стрелка
Сплошная чёрная стрелка
Графическое отображение
Пример
Клиент → Магазин: «Заказ»
«Оплатить» → «Отгрузить»
Важные правила для Потока сообщений
Соединяет только разные пулы (разных участников).
Нельзя рисовать внутри одного пула — это ошибка.
Не управляет логикой — только показывает передачу данных
Можно подписать (например, «Запрос цены»)
Примеры использования Потока сообщений (Message Flow)
На рисунке 3 представлены примеры использования Потоков сообщений.
Рис 3. Примеры использования Потока Сообщений
Для наглядности мы их пронумеровали, рассмотрим каждый по отдельности
Поток сообщений представляет механизм запуска процесса: Поток сообщений 1 выходит из внешнего процесса (или внешней ссылки) и входит в стартовое Событие рассматриваемого процесса.
Примечание: Когда Клиент оставляет запрос на сайте компании по интересующему продукту (или отправляет письмо по почте) стартует процесс «Обработка заказа» - отображается в виде Стартового события с маркером Сообщения (более подробно с данным элементом нотации можно ознакомиться в рамках Практического курса BPMN Урока 2: События и шлюзы в BPMN).
Поток сообщений используется для передачи сообщений или объектов от одного действия рассматриваемого процесса во внешний процесс (или внешнюю ссылку): Поток сообщений 2 и 6 выходит из задачи менеджера «Согласовать стоимость заявки» и входит во внешний процесс (или внешнюю ссылку);
Примечание: После анализа заявки Менеджер компании отправляет цену заявки Клиенту на согласование. Также после подготовки товара к отправке менеджер отправляет сообщение Клиенту о готовности заказа и дату доставки. Как и в первом примере, внешней ссылкой выступает пул – Клиент.
Поток сообщений используется для передачи сообщений или объектов из внешнего процесса (или внешней ссылки) в одно из действий рассматриваемого процесса: Поток сообщений 3 выходит из внешней ссылки (пул - Клиент) и входит в задачу менеджера «Согласовать стоимость заказа».
Примечание: Клиент рассматривает стоимость заявки и, соглашаясь или отказываясь от заказа, отправляет сообщение о своём решении Менеджеру.
Поток сообщений используется для передачи сообщений или объектов от одного из действий внешнего процесса в одно действие рассматриваемого процесса (соединение элементов разных процессов): Потоки сообщений 4 и 5 показывают обмен сообщениями между задачами разных процессов «Обработки заказа» и «Исполнения заказа».
📌 Важно: Варианты 1, 2 и 3 использования Потока сообщений с участием Клиента применяется только в рамках аналитических диаграмм. Такие схемы не являются исполняемыми, т.к. Клиент не является участником BPMS-систем.
Поток Сообщений может быть расширен с целью показать Сообщение, поступающее от одного участника к другому:
Рис 4. Поток Сообщений между участниками процесса с присоединённым сообщением
Если Сообщение отражает содержание диалога (взаимодействия) между участниками процесса, то непосредственно сам диалог осуществляется через действия (задачи) – Отправку и Получение сообщений. Ниже рассмотрим каждый блок подробнее.
Получение сообщения в BPMN (Receive Task)
Задача Получения Сообщения (Receive Task) — это когда процесс останавливается и ждёт, пока кто-то пришлёт ему сообщение. Как только сообщение пришло (хотя бы раз), задача считается выполненной, и процесс идёт дальше.
Особенности задачи на получение сообщения
Используется, чтобы дождаться данных от другого участника
После получения запускает следующие шаги
Графически Получение сообщения в BPMN рисуется как прямоугольник с закруглёнными углами, внутри — конвертик без заливки
Рис 5. Графический элемент нотации BPMN - Получение сообщения
Когда её ставить
Ждём подтверждения от внешней системы
Ожидаем решения руководителя
Получаем данные из очереди сообщений
Отправка сообщения в BPMN (Send Task)
Отправка сообщения в BPMN (Send Task) — это Задача, по которой процесс отправляет данные другому участнику и сразу идёт дальше, не дожидаясь ответа. Задача считается выполненной после того, как сообщение успешно ушло.
Особенности задачи на отправку сообщения
Передаёт данные в другой процесс или систему
Не ждёт ответа (асинхронная отправка)
Графически Отправка сообщений отображается как прямоугольник с закруглёнными углами (установленное в BPMN отображение графического элемента Задача), внутри маркер — конвертик с тёмной заливкой
Рис 6. Графический элемент нотации BPMN — Отправка сообщения
Когда её ставить
Отправить уведомление на почту
Запросить данные у смежной системы
Передать заказ на склад
Сравнение задач отправки и получения сообщений
Характеристика
Отправка (Send Task)
Получение (Receive Task)
Действие
Отправляет сообщение
Получает сообщение
Останавливается ли процесс
Нет (отправил и побежал дальше)
Да (стоит и ждёт, пока не получат)
Иконка
Закрашенный конверт с темной заливкой
Прозрачный конверт без заливки
Пример
«Отправить счёт клиенту»
«Дождаться, когда клиент оплатит»
Промежуточное сообщение – как оно работает
Промежуточное сообщение — это событие внутри процесса, которое позволяет отправить или получить сообщение, но сам процесс не заканчивается. Рисуется как двойной кружок с конвертиком.
Рис.7. Промежуточное событие типа Сообщение
Типы Промежуточных сообщений в BPMN
Промежуточное событие-обработчик сообщения (Ловящее, анг. Catch) – процесс замирает и ждёт сообщения. Используется для синхронизации с внешним участником.
Промежуточное событие-инициатор сообщения (Бросающее , анг. Throw) – процесс отправляет сообщение и сам продолжается. Используется для уведомлений или вызовов.
В чём разница с задачами (Send/Receive Task)? Задача — это работа, которая может длиться какое-то время. Событие — это просто точка на потоке. На практике чаще используют задачи, потому что они понятнее бизнес-пользователям.
Отличие сообщений от сигналов (Message vs Signal)
В BPMN 2.0 часто путают сообщения и сигналы.
Запомните раз и навсегда:
Характеристика
Сообщение (Message)
Сигнал (Signal)
Направленность
Адресное (одному получателю)
Широковещательное (всем подписчикам)
Тип потока
Message Flow
Message Flow / Association
Пример
«Отправить заказ конкретному складу»
«Отбой тревоги – всем процессам»
Кому доставляется
Конкретному экземпляру процесса
Всем экземплярам, которые подписаны
💡 Простое правило: сообщение – как письмо по адресу, сигнал – как объявление в громкоговоритель.
Корреляция сообщений (Message Correlation) в BPMN 2.0
Корреляция – это механизм, который позволяет сообщению попасть в нужный экземпляр процесса. Когда у вас одновременно идёт 100 заказов, как система поймёт, к какому заказу относится пришедшее «подтверждение оплаты»?
Как работает
Каждому экземпляру процесса присваивается ключ корреляции (например, applicationNumber)
Сообщение содержит этот же ключ
Система направляет сообщение в процесс с совпадающим ключом
Пример
Процесс «Заказ» создаётся с orderId = 12345
Банк присылает сообщение «Оплачен заказ 12345»
Корреляция доставляет сообщение именно в процесс №12345
Без корреляции сообщения будут теряться или приходить не туда.
Пример моделирования сообщений в BPMN (сквозной сценарий)
Процесс «Обработка заказа в интернет-магазине» с двумя пулами: «Клиент» и «Магазин».
Шаги с использованием сообщений
Шаг
Отправитель
Получатель
Что происходит
Тип элемента
1
Клиент
Магазин
Отправляет «Заявка на заказ»
Стартовое событие-сообщение
2
Магазин
(внутри)
Проверяет наличие товара
Sequence Flow
3
Магазин
Клиент
Если нет – «Нет в наличии»
Send Task
4
Магазин
Клиент
Если есть – ждёт оплату
Receive Task
5
Клиент
Магазин
«Оплата произведена»
Message Flow в Receive Task
6
Магазин
Клиент
«Заказ выполнен»
Конечное событие-сообщение
Как это выглядит на схеме
Два пула: «Клиент» и «Магазин»
Пунктирные стрелки: Поток сообщение (Message Flow) между пулами
Сплошные стрелки: Поток операций (Sequence Flow) внутри каждого пула
5 частых ошибок при работе с сообщениями (и как исправить)
Ошибка
Почему неправильно
Как исправить
Поток сообщений (Message Flow) внутри одного пула
Поток сообщений только между разными пулами
Заменить на Поток управления (Поток операций, Sequence Flow)
Путаница Поток сообщений (Message Flow) и Поток управления (Sequence Flow)
Разные сущности
Пунктир = данные между участниками, сплошная = порядок шагов
Отсутствие событий/задач для сообщений
Процесс не поймёт, что делать с сообщением
Добавить Start/Intermediate/End Message Event или Send/Receive Task
Неправильное направление стрелки
Стрелка показывает, кто кому отправляет
Всегда от отправителя к получателю
Игнорирование корреляции при нескольких экземплярах
Сообщение придёт не туда
Использовать ключ корреляции - correlation key (например это ID заказа)
Сообщения в BPMN 2.0 — это способ обмена данными между разными участниками процесса. С их помощью процессы запускаются, синхронизируются и завершаются.
Что такое поток сообщений (Message Flow)?
Поток сообщений (Message Flow) в BPMN — это пунктирная стрелка между разными пулами. Она показывает, что от одного участника к другому передаётся сообщение.
Чем поток сообщений отличается от потока управления?
Поток сообщений связывает разных участников (пулы) и показывает обмен данными (пунктирная стрелка). Поток управления связывает шаги внутри одного участника и показывает последовательность действий (сплошная стрелка).
Что такое событие-сообщение в BPMN?
Событие-сообщение в BPMN 2.0 — это значок, который срабатывает, когда сообщение получено или отправлено. Бывает стартовым, промежуточным (ожидание/отправка) и конечным.
Что значит «промежуточное сообщение»?
Промежуточное сообщение в BPMN — это событие внутри процесса, которое используется для ожидания (catch) или отправки (throw) сообщения без завершения процесса. Оно применяется для синхронизации действий между участниками.
Как отправить сообщение в BPMN?
Поставьте задачу отправки (Send Task) или промежуточное событие отправки сообщения. Задача считается выполненной после того, как сообщение ушло.
Как получить сообщение в BPMN?
Поставьте задачу получения (Receive Task) или промежуточное событие ожидание сообщения. Процесс остановится и будет ждать сообщения.
Можно ли использовать поток сообщений внутри одного пула?
Нет, это запрещено. Внутри одного пула рисуйте поток управления (сплошную стрелку).
Приведите понятный пример сообщений в BPMN
Клиент отправляет заявку (стартовое событие-сообщение), магазин обрабатывает, затем отправляет ответ (задача отправки). Вся переписка между ними — это потоки сообщений.