Все элементы BPMN с описанием
Подробная справка обо всех элементах BPMN с хорошими и плохими примерами
CTRL+K
Элементов : 75
intermediate attached non-interrputing conditional catch event
Используется для ожидания выполнения условия во время выполнения родительского действия.
Не прерывает родительское действие
Плохой пример
1) "Прошло 3 часа" - тип события-условие не соответствует подписи. Уместно использовать событие-таймер
2) "Поступило указание прервать изготовление" - "Покупатель оплатил заказ" - непрерывающий тип не соответствует подписи - прерывающему событию.
Хороший пример
Наступление внешнего события, влияющего на задачу, но не прерывающее её
Data Object
Используется для создания сущности(например документа) только в рамках процесса
Плохой пример
Создали заявку, но обращаемся к ней из разных процессов
Хороший пример
Создаем и работаем с заявкой в рамках процесса
None end event
Используется для завершения процесса (или уничтожения токена)
Плохой пример
Снабжение элемента смыслом, который может быть выражен другими символами
Хороший пример
Завершение процесса (уничтожение токена) по достижении результата
Start non-interrupting signal event
Используется для старта подпроцесса обработчика по сигналу.
Не прерывает родительский процесс
Плохой пример
Получение сигнала из соседнего процесса и запуск своего процесса
Хороший пример
Хорошим примером является отказ от использования сигналов
Event Subprocess
Используется для логики процесса, которая может произойти в любой момент, пока жив основной процесс
Плохой пример
Попытка организовать переиспользование через встроенные подпроцессы обработчики
Хороший пример
Уведомления менеджеру о том, что процесс долго выполняется
Parallel Gateway
Используется для разделения потока управления
Плохой пример
Невозможно доставить один груз дважды: и почтой и курьером.
Здесь уместна развилка ИЛИ/ИЛИ
Хороший пример
Нужно И позвонить, И отправить СМС-ку
intermediate attached interrputing signal catch event
Используется для ожидания получения сигнала, пока активно родительское действие, и его прерывания при получении сигнала
Плохой пример
Получение сигнала из соседнего процесса, предназначенного конкретному экземпляру
Хороший пример
Хорошим примером является отказ от использования сигналов
Start non-interrupting timer event
Используется для старта встроенного подпроцесса обработчика по таймеру.
Не прерывает родительский процесс
Плохой пример
Нечеткая формулировка события - не указано определенное время или периодичность
Хороший пример
В подписи события указано время его наступления
End escalation throw event
Используется для завершения текущего процесса (или уничтожения токена) и отправки эскалации
Плохой пример
Использование вместо простого завершающего события
Хороший пример
Завершающее событие-эскалация, которое запускает альтернативный сценарий процесса.
В пару к инициирующему событию-эскалации на схеме есть событие-обработчик
Data Store
Используется для ит-систем и\или хранилищ данных в любой форме (папка, архив)
Плохой пример
Пытаемся заставить что-то сделать хранилище
Хороший пример
Получаем данные из хранилища
Complex Gateway
Используется для сложных сценариев разветвления
Плохой пример
Развилка проверяет обычный выбор, можно заменить на развилку ИЛИ\ИЛИ
Хороший пример
Развилка проверяет, что 3 из 5 судей проголосовали
Event Gateway
Используется для развилки по потенциальным событиям
Плохой пример
Использование развилки для каких-то других целей
Хороший пример
Одновременно может произойти 3 равнозначных события. Ждём любого из них. Токен из развилки пойдёт к событию, наступившему первым. После этого он пойдёт дальше, а оставшиеся события не важны, забываем о них.
Exclusive Gateway
Используется для развилки по одному потоку управления
Плохой пример
Логика на ветках: сложная; неявная; неоднозначная; непокрывающая все варианты
Хороший пример
Показывает выбор из равнозначных вариантов
intermediate attached non-interrupting escalation catch event
Используется для обработки эскалации пока активно родительское действие.
Не прерывает родительское действие
Плохой пример
Неправильное понимание назначения. Эскалация в BPMN не равно информирование руководителя.
В данном случае уместнее событие-таймер
Хороший пример
Во время выполнения задачи в нём произошло событие, которое требует доп. действий, но не прерывает задачу
intermediate attached interrupting message catch event
Используется для точки ожидания сообщения, пока активно действие и его уничтожения по получению сообщения
Плохой пример
1) "Покупатель оплатил заказ" - прерывающий тип не соответствует подписи - непрерывающему событию.
2) "Прошло 3 часа" - тип события-сообщения не соответствует подписи. Уместно использовать событие-таймер
Хороший пример
Получение сообщения из другого процесса, запускающего альтернативный сценарий
Start interrupting escalation event
Используется для старта встроенного подпроцесса при наступлении события эскалации, прерывающего родительский процесс
Плохой пример
Отражение события не связанного с выполняемым процессом
Хороший пример
Во время выполнения процесса используемое ПО сообщило об ошибке
intermediate attached interrupting escalation catch event
Используется для обработки эскалации и завершения родительского действия
Плохой пример
Название события означает другой сценарий процесса; тип события не соответствует ему
Хороший пример
При выполнении задачи произошло событие, инициирующее другой сценарий
intermediate conditional catch event
Используется для ожидания выполнения условия
Плохой пример
Применение элемента не по назначению
Хороший пример
Элемент отражает наступление внешнего события при котором процесс идёт по одному из возможных сценариев
Start non-interrupting escalation event
Используется для старта встроенного подпроцесса при получении эскалации.
Не прерывает родительский процесс.
Плохой пример
Отражение события не связанного с выполняемым процессом
Хороший пример
Во время выполнения процесса используемое ПО сообщило об ошибке
intermediate escalation throw event
Используется для запуска эскалации
Плохой пример
Отсутствует событие-обработчик инициированной эскалации
Хороший пример
Промежуточное событие-эскалация, которое запускает альтернативный сценарий процесса.
В пару к инициирующему событию-эскалации на схеме есть событие-обработчик
End message throw event
Используется для завершения текущего процесса (или уничтожения токена) и отправки сообщения другому участнику взаимодействия
Плохой пример
1) нет события-обработки (получения сообщения) в пару к этому событию-инициатору
2) Некорректная подпись - обозначает действие, а не событие.
Хороший пример
К завершающему событию-инициатору (отправка сообщения) показано событие-обработчик (получение сообщения).
Start timer event
Используется для старта процесса по времени
Плохой пример
Тип события не соответствует подписи - указан характер события, а не время его наступления, периодичность
Хороший пример
В подписи события указано время его наступления
Start interrupting timer event
Используется для старта встроенного подпроцесса обработчика по таймеру и уничтожению родительского процесса
Плохой пример
Использование с противоречивым описанием
Хороший пример
Наступило время на таймере после которого родительский процесс прерывается
intermediate attached conditional catch event
Используется для ожидания выполнения условия, пока активно родительское действие, и его прерывания по наступлению события
Плохой пример
Тип события не соответствует подписи. Подписанные события не обязательно должны прерывать процесс
Хороший пример
Запуск события происходит при появлении определенных условий
Start non-interrupting message event
Используется для старта встроенного подпроцесса обработчика по сообщению пока активен родительский процесс.
Не прерывает родительский процесс.
Плохой пример
Некорректно использовать маркер месседжа (message) для обозначения отправки, получения письма, документа.
Хороший пример
Произошло событие, влияющее на процесс, но не прерывающее его
intermediate message catch event
Используется для отображения точки ожидания сообщения от другого участника взаимодействия
Плохой пример
Неправильно показывать месседжем (message) получение документа.
Хороший пример
Получение месседжа (message) с данными из другого процесса.
intermediate message throw event
Используется для точки отправки сообщения другому участнику взаимодействия
Плохой пример
Неправильно показывать месседжем (message) отправку документа, письма.
Хороший пример
Передача месседжем (message) данных из одного процесса в другой.
intermediate attached non-interrputing message catch event
Используется для точки ожидания сообщения, пока активно родительское действие.
Не прерывает родительское действие.
Плохой пример
1) "Покупатель отказался заказ" - непрерывающий тип не соответствует подписи - прерывающему событию.
2) "Прошло 3 часа" - тип события-сообщения не соответствует подписи. Уместно использовать событие-таймер
Хороший пример
Получение сообщения из другого процесса, запускающего дополнительный сценарий
Inclusive Gateway
Используется для выбора конкретных потоков управления
Плохой пример
Развилка проверяет обычный выбор, можно заменить на развилку ИЛИ\ИЛИ
Хороший пример
Заказ сложат в конверт всегда. А возможно, и Заказ и промоматериалы
Association Flow
Используется для соединения элементов и объектов данных
Плохой пример
Заменяет собой поток управления
Хороший пример
Показывает связь действия и объекта данных
Message Flow
Используется для соединения сообщений и\или пулов, отображает отправку сообщений
Плохой пример
Участники одного процесса разнесены в разные пулы и между ними отправляются сообщения
Хороший пример
Используется для отправки сообщения из одного процесса в другой
Sequence Flow
Используется для передачи работы между элементами процесса
Плохой пример
Отображение вариативности конкретного действия
Хороший пример
Передает ответственность за работу и информацию по процессу
Group
Используется для визуального объединения элементов
Плохой пример
Используется вместо специализированных символов
Хороший пример
Показывает ответственных за группу активностей
Lane
Используется для отображения участника процесса
Плохой пример
Любое использование дорожек: увеличивает размер модели; тяжелей увидеть основной, успешный сценарий (happy path) - он идёт ломанной линией из одной дорожки в другую.
Хороший пример
Нет хорошего повода использовать дорожки. Используйте вместо них "Роли" (оверлей), разные цвета. Схема компактней, успешный сценарий идёт прямой линией от стартового события к завершающему.
Multi-Instance Loop
Используется для выполнения действия по набору объектов
Плохой пример
Множественность для уникального, единичного действия; без явного указания на множественность операций в названии
Хороший пример
Явное отображение множественности операции в названии
Standard Loop
Используется для демонстрации выполнения действия до определённых условий
Плохой пример
Итерирование по набору сущностей
Хороший пример
Указание в тексте до каких пор выполняется действие
Black Box Pool
Используется для клиентов, систем и других участников взаимодействия, чье поведение мы не знаем
Плохой пример
Обозначем свернутым пулом участника взаимодействия, чье поведение известно и управляемо
Хороший пример
Работаем со свернутым пулом, как с черным ящиком. Не знаем, как он себя поведёт
Pool
Используется для показа бизнес-процесса и\или участников взаимодействия
Плохой пример
Зачем-то пытаемся ставить задачи клиенту (не управляемому объекту), не зная выполнит ли он их.
Хороший пример
Раскрываем подробности того, как устроен один из наших бизнес-процессов и взаимодействие процессов из которых он состоит
Ad Hoc Subprocess
Используется для действия, которое выполняется по инициативе исполнителя одной из задач процесса
Плохой пример
Любое использование ad hoc процессов. Использование внутри ad hoc потоков управления, задающих очередность выполнения задач
Хороший пример
Нет хороших поводов использовать ad-hoc процессы
Transactional Subprocess
Используется для части процесса, которая либо выполнится вместе, либо не будет выполнена вообще
Плохой пример
Неуместное использование транзакционного подпроцесса - вместо обычного подпроцесса
Хороший пример
Если списать деньги не получилось, то и бронь билетов, гостиницы надо отменить
Call Activity
Используется для вызова другого процесса, нарисованного не на этой диаграмме
Плохой пример
Использование как обычного действия
Хороший пример
Использование для обозначения подпроцессов, используемых в нескольких процессах
Compensation Activity
Используется для действия компенсации
Плохой пример
Использование как обычного действия
Хороший пример
Специальное действие, которое "откатывает" другое действие, если случилось что-то плохое
Business Rule Task
Используется для принятия решения в процессе по бизнес-правилам
Плохой пример
Активное действие, не связанное с бизнес-правилами
Хороший пример
Расчёт стоимости тарифа по правилам
Используется для получения сообщения от другого процесса
Плохой пример
Ожидание е-мейл или смс сообщения
Хороший пример
Получение сообщения из другого бизнес-процесса
Используется для вызова "скрипта"
Плохой пример
Символ не соответствует тексту
Хороший пример
Выполнение небольшой автоматизированной
задачи на скриптовом языке
Используется для отправки сообщения в другой процесс
Плохой пример
Отправка уведомления клиенту
Хороший пример
Отправки сообщения соседнему участнику бизнес-процесса
None start event
Используется для старта процесса
Плохой пример
Используется простой старт, но текстом указано пояснение, которое можно выразить другим символом
Хороший пример
Не требуется указание специфики старта процесса
None catch event
Используется для отображения важного события в рамках процесса
Плохой пример
Ожидание события
Хороший пример
Переход сущности в определенный статус
Start message event
Используется для старта процесса при получении сообщения от других участников взаимодействия
Плохой пример
Использование как обычного старта или с противоречивым описанием
Хороший пример
Запуск независимого процесса, результаты которого не нужны в текущем
Start interrupting message event
Используется для старта встроенного подпроцесса обработчика по сообщению и уничтожения родительского процесса
Плохой пример
Использование с противоречивым описанием
Хороший пример
Обработка события-сообщения и немедленное прерывание основного процесса
Start interrupting error event
Используется для старта процесса из-за ошибки
Плохой пример
Используем вместо других символов, например таймера
Хороший пример
Запускаем подпроцесс обработки неисправляемой ошибки
intermediate attached interrupting error catch event
Используется для обработки ошибки, полученной в рамках действия
Плохой пример
Использование без инициатора ошибки
Хороший пример
Обрабатываем полученную ошибку
End error throw event
Используется для отправки ошибки и завершения процесса (или уничтожения токена)
Плохой пример
Использование без прикрепленного события обработчика
Хороший пример
Выкидывает наружу ошибку
intermediate attached interrupting cancel catch event
Используется для обработки отмены от родительского действия
Плохой пример
Использование где-либо, кроме транзакционных подпроцессов
Хороший пример
Используем на транзакционном процессе для старта обработки
End cancel throw event
Используется для завершения текущего процесса (или уничтожения токена) и отправки отмены
Плохой пример
Использование где-либо, кроме транзакционных подпроцессов
Хороший пример
Используем в транзакционном процессе
intermediate link catch event
Используется для замены потока управления и отображения начала замены
Плохой пример
Ставим ссылки
Хороший пример
Хорошим примером является отказ от использования ссылок
intermediate link throw event
Используется для замены потока управления и отображения завершения замены
Плохой пример
Ставим ссылки
Хороший пример
Хорошим примером является отказ от использования ссылок
Start signal event
Используется для старта процесса по сигналу
Плохой пример
Получение сигнала из соседнего процесса и запуск своего процесса
Хороший пример
Хорошим примером является отказ от использования сигналов
Start interrupting signal event
Используется для старта подпроцесса обработчика по сигналу и прерывания родительского процесса
Плохой пример
Получение сигнала из соседнего процесса и запуск своего процесса
Хороший пример
Хорошим примером является отказ от использования сигналов
intermediate signal catch event
Используется для ожидания получения сигнала
Плохой пример
Получения смс-ки от клиента
Хороший пример
Хорошим примером является отказ от использования сигналов
intermediate attached non-interrputing signal catch event
Используется для ожидания получения сигнала, пока активно родительское действие.
Не прерывает родительское действие
Плохой пример
Получение сигнала из соседнего процесса, предназначенного конкретному экземпляру
Хороший пример
Хорошим примером является отказ от использования сигналов
intermediate signal throw event
Используется для отправка сигнала
Плохой пример
Действие, не связанное с сигналами
Хороший пример
Во время процесса отправляется сигнал в другие процессы, которые его ждут
End signal throw event
Используется для отправка сигнала и завершение текущего процесса (или уничтожение токена)
Плохой пример
Замена обычного завершающего события
Хороший пример
В результате процесса отправляется сигнал в другие процессы, которые его ждут
End terminate throw event
Используется для уничтожения всех токенов в процессе и завершение процесса
Плохой пример
Замена обычного завершающего события
Хороший пример
Вы допускаете существование нескольких токенов, но при определённом действии надо прекратить процесс
Start interrupting compensation event
Используется для старта подпроцесса-обработчика компенсации и прерывания родительского процесса
Плохой пример
Подпись не соответствует типу события-инициатора компенсации.
У задачи "Забронировать билеты" из прикрепленного события нет исходящего потока.
Неуместно использованы события: инициатор и обработчик сигнала
Хороший пример
В схеме используется стартовое событие-компенсация и события: инициаторы и обработчики компенсации
intermediate attached interrupting compensation catch event
Используется для старта обработки компенсации и прерывании родительского элемента
Плохой пример
В схеме отсутствуют событие-инициатор компенсации.
У события-обработчика компенсации, прикрепленного к верхней задачи отсутствует выходящий поток и задача по её отмене.
Хороший пример
Использование двух событий-обработчиков компенсаций для отката двух сделанных задач (вернуть как было до их выполнения). На схеме также есть соответствующие события-инициаторы компенсации (запускающие ей)
End compensation throw event
Используется для завершения процесса (или уничтожения токена) и отправки компенсации
Плохой пример
В схеме отсутствует событие-обработчик компенсации
Хороший пример
В схеме используется конечное событие-инициатор компенсации (запускающее её) и событие-обработчик компенсации, прикреплённое к задаче, которую надо откатить (вернуть как было до её выполнения)
Start conditional event
Используется для старта процесса по условию
Плохой пример
Событие-условие это не письмо или другой документ, насмотря на внешние сходство
Хороший пример
Произошло изменение условий, инициирующих старт процесса
Start interrupting conditional event
Используется для старта встроенного подпроцесса и прерывания родительского процеса
Плохой пример
Тип события не соответствует подписи
Хороший пример
Произошло событие, которое прерывает основной процесс
Start non-interrupting conditional event
Используется для старта встроенного подпроцесса пока активен родительский процесс.
Не прерывает родительский процесс.
Плохой пример
Тип события не соответствует подписи
Хороший пример
Произошло событие, которое не прерывает основной процесс, а запускает дополнительные действия
Annotation
Используется для текстового комментария к элементах схемы
Плохой пример
Комментарий описывает то, что следовало бы отобразить как часть схемы
Хороший пример
Комментарий описывает то, что не может быть выражено другими символами BPMN
intermediate timer catch event
Используется для старта ожидания таймера в процессе
Плохой пример
Подпись события обозначает ожидание события, время наступления которого невозможно определить.
Хороший пример
Подпись события указывает на определенное время: день недели и час.
intermediate compensation throw event
Используется для отправки компенсации
Плохой пример
В схеме отсутствует событие-обработчик компенсации
Хороший пример
Используется для запуска компенсации. В пару к нему есть соответствующие события-обработчики, прикреплённое к задаче, которую надо откатить (вернуть как было до её выполнения)
intermediate interrupting attached timer catch event
Используется для прерывании выполняемого родительского действия если достигнуто время, указанное на таймере.
Отсчёт таймера начинается в момент старта родительского действия.
Плохой пример
А) Не работает как указатель за сколько времени надо сделать эту задачу
+ нет потока управления, выходящего из этого события
Б) Подпись события не указывает на время, периодичность
Хороший пример
Подпись события указывает на определенное время суток
intermediate non-interrupting attached timer catch event
Используется для старта ожидания таймера, пока родительское действие и активно.
В момент срабатывания таймера запускает второй сценарий по выходящему потоку управления .
Не прерывает родительское действие.
Плохой пример
А) Не работает как указатель за сколько времени надо сделать эту задачу
+ нет потока управления, выходящего из этого события
Б) Подпись события не указывает на время, периодичность
Хороший пример
В подписи указано время наступления события