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