2.4.2. Развертывание процесса

Созданный дизайн процесса необходимо скомпилировать, то есть создать на основе схемы исполняемый код процесса. Выберите строку с дизайном в окне Processes Design и нажмите Compile. В случае успешной компиляции в колонке Compilation date появится текущее время.

Следующий этап - развертывание процесса. Выберите строку со скомпилированным дизайном и нажмите Deploy. В диалоговом окне оставьте отмеченным флажок Create new process и нажмите Deploy. В результате происходит следующее:

  • В базе данных приложения создается новый объект Proc и соответствующие имеющимся в дизайне ролям объекты ProcRole.

  • В подкаталоге process конфигурационного каталога среднего слоя приложения создается каталог с именем вида proc_<date_time>, где date_time - момент времени развертывания процесса. Данный каталог содержит файлы, необходимые для исполнения процесса: jPDL, описатель форм, пакет локализованных сообщений.

  • Файл jPDL отправляется в механизм исполнения jBPM, который создает соответствующие записи в таблицах JBPM4_DEPLOYMENT и JBPM4_DEPLOYPROP. Идентификатором процесса jBPM становится строка, идентичная имени каталога развертывания (proc_<date_time>). Данный идентификатор записывается также в атрибут jbpmProcessKey объекта Proc.

Процесс готов к запуску, однако для целей нашего примера выполним еще одно подготовительное действие - назначим исполнителей по умолчанию для ролей в процессе.

Откройте экран Workflow -> Processes, выберите созданный процесс и откройте его на редактирование. В списке ролей процесса выберите поочередно роли Manager и Operator и в списке Default participants добавьте для них исполнителей - предварительно созданных пользователей системы manager и operator соответственно. Экран редактирования процесса примет следующий вид:

Кроме явно указанных в дизайне ролей система создала роль CARD_CREATOR с признаком Assign to creator. Эту роль можно использовать для того, чтобы пользователь, создавший карточку, автоматически становился участником процесса. В описываемом примере данная роль не используется.

Атрибут Code процесса желательно установить в некоторое осмысленное уникальное значение, так как в программном коде по этому атрибуту удобно находить процесс для запуска. В данном случае задаем значение book_scanning.

Как правило, дизайн процесса разрабатывается итеративно, поэтому система предоставляет возможность неоднократно развертывать один и тот же изменяющийся дизайн, обновляя имеющийся процесс. Фактически при развертывании дизайна в существующий процесс происходит следующее:

  • Производится проверка возможности миграции незавершенных экземпляров процесса (другими словами, активных карточек) на новую схему процесса.

  • Создается новый каталог proc_<date_time>, где date_time - текущий момент времени развертывания процесса.

  • В механизме исполнения jBPM создается новое описание процесса с новым идентификатором, эквивалентным имени каталога развертывания. Этот новый идентификатор устанавливается в атрибуте jbpmProcessKey объекта Proc.

  • Производится миграция активных карточек.

Для обновления процесса в соответствии с измененным дизайном достаточно при развертывании последнего снять флажок Create new process и в выпадающем списке Existing process указать процесс, который необходимо обновить.