Концепции BPM
В этом разделе кратко описаны ключевые концепции, необходимые для понимания работы Jmix BPM и движка Flowable.
Жизненный цикл процесса
Каждый процесс проходит несколько стадий от создания модели до завершения. Вот как это происходит шаг за шагом:

-
Моделирование
Жизненный цикл начинается с этапа моделирования, на котором разрабатываются и определяются bpm:process-artifacts.adoc#process-models с использованием нотации BPMN 2.0.
Кроме создания модели, данный этап обычно включает дополнительные шаги для создания полностью исполняемого процесса в приложении Jmix:
-
Реализация бизнес-логики
-
Создание форм пользовательского интерфейса
-
Определение таблиц решений (Decision Tables)
-
Настройка слушателей событий и обработка ошибок
-
-
Развертывание
Готовые модели процессов могут быть развернуты на движке процессов. На этом шаге происходит упаковка модели и связанных ресурсов в артефакт развертывания на основе которого будут создаваться экземпляры процессов.
-
Создание экземпляра
После того как процесс развернут, его можно запустить. В результате запуска создается экземпляр процесса, который получает уникальный идентификатор и инициализируется необходимыми данными.
-
Выполнение
По мере выполнения экземпляр процесса проходит через разные состояния, которые контролирует движок. Движок управляет потоком работы на основе модели процесса, перемещаясь между задачами, событиями и шлюзами. Во время выполнения движок может создавать артефакты выполнения для управления параллельными путями, многократными действиями или подпроцессами, чтобы все элементы процесса были правильно организованы.
-
Управление состоянием
Во время выполнения экземпляр процесса может пе из одного состояние в другое. Например, из состояния выполнения он может перейти в состояние приостановки. Движок управляет состояниями, позволяя приостанавливать или возобновлять процессы по мере необходимости. Эта возможность касается не только экземпляров процессов, но и определений процессов, что позволяет приостанавливать и активировать их по мере необходимости.
-
Завершение
Экземпляр процесса считается завершенным, когда все задачи выполнены, и в процессе не осталось активных элементов. В этот момент движок завершает выполнение, и экземпляр переходит в конечное состояние. Все связанные данные могут быть извлечены для отчетности или аудита.
В некоторых случаях экземпляр процесса может быть завершен преждевременно из-за ошибок или по требованию пользователя. Движок предоставляет механизмы для корректного завершения, обеспечивая сохранение согласованности состояния процесса. -
Запись в историю
Flowable ведет историю экземпляров процессов, фиксируя все важные события. Эти исторические данные ценны для аудита, отчетности и анализа производительности процессов. Они позволяют организациям пересматривать прошлые выполнения и получать информацию об эффективности процессов.
Токены
Токен — это ключевое понятие в BPMN, которое помогает понять и определить поведение процесса во время его выполнения. Токен представляет текущее состояние процесса и служит средством визуализации его поведения в реальном времени.
Токены перемещаются по определению процесса, переходя от одной активности к другой в соответствии с логикой процесса. По мере движения токена он запускает выполнение задач, шлюзов, событий и других элементов, определенных в модели процесса. На параллельных шлюзах токен может разделяться на несколько токенов, а в других точках процесса эти токены могут объединяться. Достижение токеном конечного события означает завершение экземпляра процесса. Важно отметить, что токены не могут перемещаться по потокам сообщений; только сообщения могут проходить по этим потокам.
Каждый экземпляр процесса имеет свой токен, который отслеживает его состояние. Таким образом несколько экземпляров процесса могут работать одновременно, и каждый из них будет иметь свой токен.

NOTE: Хотя вы можете наблюдать за токенами, вы не сможете с ними взаимодействовать напрямую, так как это может привести к непредсказуемому поведению и нарушить процесс. Лучше управлять поведением токенов через модель и другие инструменты, предоставляемые API Flowable.
Бизнес-ключ
Бизнес-ключ — это способ идентификации экземпляра процесса на основе специфических для бизнеса критериев, а не только по системному идентификатору. Он позволяет связать экземпляр процесса с конкретной бизнес-единицей или контекстом.
Примером бизнес-ключей могут служить:
-
Номер заказа
-
Идентификатор сотрудника
-
Номер контракта
-
Адрес
Когда у экземпляра процесса есть бизнес-ключ, пользователям проще понять бизнес-контекст.
Бизнес-ключ можно определить в форме ввода данных для стартового события. Подробности приведены в инструкции по настройке такой формы. Также, можно задать бизнес-ключ для процессной формы как показано здесь. Кроме того, вы можете установить или обновить бизнес-ключ программно через API. Пример можно найти здесь.
Контекст процесса
Контекст процесса — это совокупность данных, используемых на протяжении выполнения процесса. Он включает в себя всю важную информацию, такую как переменные процесса, состояние выполнения, роли пользователей и любые другие данные, необходимые для выполнения. Контекст служит основой для принятия решений и операционного потока в процессе, обеспечивая доступ всех компонентов к необходимой информации для корректной работы.
Важно отметить, что контекст процесса представляет собой абстрактную модель, которая не существует в виде отдельного объекта в системе. Движок процесса не создает отдельный объект или класс для контекста процесса.