Главный секрет BPMN: Токены в BPMN и их работа с каждым элементом
Сегодня мы подробно расскажем о главном секрете BPMN — понятии токена. Знание того, что такое токены в BPMN и как они работают с каждым элементом диаграммы, кардинально меняет ваше понимание бизнес-процессов. Это знание делит всех людей на две категории: тех, кто просто видел значки BPMN, и тех, кто действительно понимает, как работает BPMN на глубоком уровне.
Если вы хотите перейти из первой категории во вторую, это руководство — то, что вам нужно. Мы разберёмся в том, что такое токены, как они движутся и изменяются по диаграмме, и почему понимание этого механизма — ключ к успешному моделированию бизнес-процессов.
Видео-версия статьи: https://vkvideo.ru/video-227313390_456239084
Что такое токен в BPMN и почему это важно
Токен — это виртуальная абстракция, которая показывает, кто сейчас в нашей схеме бизнес-процесса ответственен за исполнение текущей работы. У токена нет физического представления, это нечто похожее на эстафетную палочку в команде бегунов.
Представьте бизнес-процесс как команду спортсменов, которые бегут эстафету. Каждый токен — это эстафетная палочка, которая передается от одного бегуна к другому. Палочка символизирует ответственность за успешное выполнение части бизнес-процесса в текущий момент времени.
Когда один бегун передает палочку другому, в BPMN это означает, что токен передается через поток управления к следующему участнику процесса. Именно понимание этой передачи токена раскрывает, как на самом деле работает BPMN.
Ключевой момент: экземпляр бизнес-процесса считается завершённым, когда в нём не осталось ни одного токена (эстафетной палочки). Количество токенов может меняться в процессе выполнения — они могут появляться, исчезать и перемещаться по диаграмме.
Простой пример движения токена в бизнес-процессе
Рассмотрим самый простой сценарий. Процесс начинается, и у нас появляется один токен — спортсмен с эстафетной палочкой.
Спортсмен выполняет своё действие, затем, в зависимости от решения на шлюзе, токен перемещается дальше по выбранному пути. Действие считается завершённым, когда токен покидает его и идёт к следующему элементу процесса.
Таким образом путь токена в простом процессе выглядит линейно — один токен движется от начала к концу по одному потоку управления.
Параллельный шлюз — рождение нескольких токенов
Теперь усложним ситуацию. Рассмотрим параллельный шлюз — элемент, который одновременно открывает несколько потоков управления.
Когда токен достигает параллельного шлюза, он размножается — рождаются сразу несколько токенов (по количеству выходящих потоков). Каждый новый токен движется по своей ветке бизнес-процесса.
Процесс считается завершённым только тогда, когда все эти токены завершили свои пути и исчезли из схемы.
Это значит, что параллельные ветки процесса могут выполняться независимо друг от друга, и порядок их завершения не обязательно фиксирован — он зависит от того, как быстро участники выполняют свои задачи.
Инклюзивный (И-ИЛИ) шлюз — условное распределение токенов
Инклюзивный шлюз, работает сложнее параллельного. Токены здесь рождаются не на всех ветках, а только на тех, где выполнены условия.
Например, если у нас три выхода из шлюза, и условия выполнены для двух из них, то токен разделится на две части — один токен пойдет по первой условной ветке, второй — по второй. Третий путь останется без токена, так как условие там не выполнено.
Этот механизм позволяет моделировать ситуации, где одновременно могут выполняться несколько альтернативных действий, но не обязательно все.
Комплексный шлюз — сложная логика завершения токенов
Комплексный шлюз — это ещё более продвинутый элемент, который работает с токенами по сложным правилам.
Представьте, что у нас три токена, рожденных на разных путях. Правила шлюза могут указывать, что достаточно, чтобы два из трёх токенов завершили свои действия, чтобы процесс продолжился дальше.
В этом случае, даже если один токен ещё не завершил путь, шлюз пропустит дальше следующий токен, а незавершённый токен будет уничтожен.
Это позволяет моделировать ситуации, где не обязательно выполнять все параллельные действия, достаточно выполнить минимальное количество, чтобы процесс считался успешным.
Шлюзы по событиям — ожидание и реакция на события
Шлюзы по событиям работают иначе, чем логические шлюзы. Они завязаны на наступление внешних или внутренних событий.
Когда токен достигает такого шлюза, он фактически "зависает" в ожидании одного из нескольких возможных событий. Токен как будто одновременно находится на всех ветках, но не движется пока не произойдет какое-то событие.
Например, если событие не произошло в течение 15 минут, процесс пойдет по пути тайм-аута. Если событие произошло сразу, процесс пойдет по соответствующему пути и завершится.
Таким образом, здесь путь токена зависит не от выбора на шлюзе, а от того, какие события произошли после него.
Собирающие шлюзы — ожидание нескольких токенов
Помимо шлюзов, которые разветвляют токены, существуют и собирающие шлюзы, которые ожидают прихода нескольких токенов, чтобы продолжить процесс.
Рассмотрим ситуацию: параллельный шлюз на старте создает два токена. Эти токены движутся по разным веткам и приходят к собирающему шлюзу, который ожидает оба токена.
Если один токен приходит раньше, процесс ждет второго. Только когда приходят оба токена, шлюз пропускает один токен дальше, а два входящих токена уничтожаются.
Это важный механизм для синхронизации параллельных веток процесса.
Особенности работы с токенами у разных шлюзов
Разные типы шлюзов имеют свои особенности по работе с токенами:
- Параллельный шлюз рождает токены на всех ветках.
- Инклюзивный шлюз рождает токены только на ветках с выполненными условиями.
- Комплексный шлюз задает правила, сколько токенов должно завершиться, чтобы продолжить процесс.
- Шлюзы по событиям не создают новых токенов, а ожидают наступления событий.
- Собирающие шлюзы ждут заданное количество токенов и объединяют их в один.
Понимание этих особенностей помогает правильно моделировать бизнес-процессы и предсказывать поведение процесса при исполнении.
Работа с промежуточными событиями и токенами
События в BPMN бывают двух типов — catch (ожидающие) и throw (отправляющие).
Если процесс достигает промежуточного события catch, токен "зависает" и ждёт наступления внешнего события (например, сообщения или сигнала). После получения события токен движется дальше.
Промежуточные события throw срабатывают мгновенно — как только событие отправлено, токен продолжает движение.
Существуют также промежуточные события, которые не специфицированы внутри — через них токен пролетает мгновенно, так как нет конкретного ожидания.
Прикрепленные события и их влияние на токены
Прикрепленные события — это особый тип событий, которые "висят" на действиях и активируются, если происходит определённое условие (например, таймер).
Если действие выполняется, и проходит время, заданное в прикрепленном событии, токены могут быть уничтожены, а процесс переходит к новому действию, связанному с этим событием.
Если событие произошло раньше, чем закончилось действие, токен продолжит движение по основной ветке.
Такая логика позволяет моделировать повторяющиеся или прерывающиеся действия с точным контролем над количеством запусков.
Завершающие события и их роль в завершении процесса
Завершающие события в BPMN уничтожают токены, которые достигают их, но по-разному влияют на завершение процесса:
- Обычное завершающее событие уничтожает токен, но процесс считается завершённым только если других токенов в процессе не осталось.
- Специфические завершающие события (например, отправка сообщения) также уничтожают токен, но процесс может продолжаться, если остались другие токены.
- Завершающее событие terminate (останов) — очень мощный символ, который уничтожает все токены в процессе и мгновенно завершает процесс.
Использование события terminate требует аккуратности, так как оно прерывает все действия и сбрасывает процесс.
Компенсационные события и особенности работы с токенами
Компенсационные события — это особый вид событий, которые запускают компенсирующие действия при отмене или ошибке в процессе.
Если в процессе есть действие с прикрепленным промежуточным ожиданием компенсации, и происходит событие компенсации, процесс считается завершённым, но запускается компенсирующее действие.
Например, если в процессе была операция начисления баланса клиенту, а затем произошло событие компенсации, запускается действие, которое "отменяет" эту операцию — списывает баланс обратно.
Такой механизм позволяет реализовывать сложные сценарии отката и исправления ошибок в бизнес-процессах.
Особенности потоков управления в действиях BPMN
Иногда из одного действия исходят сразу несколько потоков управления. В таком случае после выполнения действия рождается столько токенов, сколько выходящих потоков.
Это аналогично ситуации, когда после действия стоит параллельный шлюз, который создает несколько токенов.
Точно так же, если в действие входит несколько потоков управления, оно может быть выполнено несколько раз — по одному разу для каждого токена, пришедшего на вход.
Важно знать, что разные BPMS-системы могут по-разному обрабатывать такие ситуации, поэтому при моделировании стоит учитывать особенности конкретной платформы.
Токены и подпроцессы — вложенные процессы и обработчики событий
В BPMN подпроцессы — это вложенные процессы внутри основного процесса. Механика работы с токенами в них такая же, как и в основном процессе.
Ключевой момент — это способ завершения подпроцесса. Если подпроцесс завершается ошибкой, эскалацией или другим событием, и к нему прикреплен обработчик события, токен переходит в соответствующую точку родительского процесса.
Также существуют встроенные подпроцессы-обработчики, которые могут быть прерывающими и непрерывающими:
- Непрерывающие обработчики запускаются при наступлении события, но основной процесс продолжает работать, пока все токены не завершатся.
- Прерывающие обработчики при срабатывании уничтожают все активные токены процесса и запускают новый токен, который ведет выполнение обработки.
Это позволяет моделировать сложные сценарии управления ошибками, таймерами и внешними событиями.
Итоги — понимание токенов как ключ к мастерству в BPMN
Мы подробно разобрали, что такое токены в BPMN, как они рождаются, движутся и уничтожаются по диаграмме бизнес-процесса. Понимание механики токенов — это главный секрет успешного моделирования процессов.
Вы узнали, как работают разные типы шлюзов, событий, действий и подпроцессов с токенами, и почему это знание помогает строить точные и управляемые бизнес-процессы.
Теперь вы можете уверенно создавать схемы BPMN, зная, как именно в них "текут" токены и как это влияет на результат исполнения.
Поиграться с токенами в интерактивном режиме можно на нашем сервисе stormbpmn.com
FAQ: Часто задаваемые вопросы о токенах в BPMN
Что такое токен в BPMN?
Токен — это виртуальный маркер, который показывает текущую точку исполнения бизнес-процесса. Он символизирует ответственность за выполнение работы и движется по диаграмме от одного элемента к другому.
Как токены появляются и исчезают?
Токены рождаются, например, на параллельных шлюзах или в результате выполнения действий с несколькими исходящими потоками. Они исчезают при достижении завершающих событий или уничтожаются по правилам сложных шлюзов и событий.
Почему важно знать про токены в BPMN?
Понимание токенов помогает прогнозировать поведение процесса, правильно моделировать параллельность и синхронизацию, а также управлять исключениями и событиями.
Как работают токены с параллельными шлюзами?
Параллельный шлюз создает столько токенов, сколько у него выходящих потоков, и все эти токены движутся независимо друг от друга по разным веткам.
Что происходит с токенами при прерывающих и непрерывающих подпроцессах-обработчиках?
Непрерывающие обработчики запускаются параллельно основному процессу, не уничтожая токены. Прерывающие — уничтожают все активные токены и запускают новый токен для обработки события.
Можно ли несколько токенов находиться одновременно в процессе?
Да, особенно если процесс содержит параллельные ветвления или инклюзивные шлюзы, одновременно может существовать несколько токенов, каждый на своей ветке.
Что такое событие terminate (останов) и как оно влияет на токены?
Это завершающее событие, которое мгновенно уничтожает все токены и завершает процесс, независимо от того, где они находятся.
Как токены работают с событиями ожидания (catch) и отправки (throw)?
Токен на событии ожидания "зависает" и ждет внешнего сигнала, а на событии отправки срабатывает мгновенно и продолжает движение.
Можно ли моделировать откат действий с помощью токенов?
Да, используя компенсационные события, можно запускать компенсирующие действия, которые "отменяют" ранее выполненные операции.