Camunda: Развертывание форм и бизнес-правил совместно с описанием процесса
Всем привет!
Выполняя обещания, данные в новогодней рассылке, мы начинаем публикацию заметок, посвященных Camunda BPM. Сегодня речь пойдет о развертывании форм и описаний бизнес-правил (DMN) совместно с описанием процесса.
Существуют различные способы развертывания описания процесса в движок Camunda BPM. Классический способ представляет собой настройку Maven-проекта, размещение модели процесса в src/main/resources, сборку и последующий деплой WAR-приложения на сервере приложений. Этот способ подробно описан в Camunda Docs и вполне понятен любому разработчику Java.
Начиная с версии 1.12 Camunda Modeler, появилась возможность настроить точку подключения (Deployment Endpoint) и развернуть процесс непосредственно из моделера.
Отчасти это решило проблему развертывания процесса "на лету" и сохранило кучу времени архитектору бизнес-процесса. Однако, при необходимости развернуть вместе с процессом пользовательские формы (embedded forms) или DMN-модели, приходилось либо прибегать к помощи разработчика (см. выше), либо использовать Enterprise-версию Cockpit'a (где эта возможность доступна "из коробки").
К счастью, существует замечательный механизм REST API, позволяющий развертывать как описания процессов, так и вспомогательные файлы при помощи HTTP.
В Form Key для User Task (вкладка Forms) необходимо указать способ развертывания и имя формы:
embedded:deployment:YOUR_FORM_NAME.html
Для DMN-моделей следует выбрать Binding: deployment.
Нужные HTTP-запросы выполняются при помощи утилиты curl. Ранее мы использовали ее в процессе нагрузочного тестирования OTRS. В MacOS и любой Linux-системе эта утилита доступна out-of-box или легко устанавливается из репозитория. Существует также порт curl для Windows. Развертывание выполняется в два этапа.
Первый этап - авторизация в Cockpit и сохранение полученных cookie в файл. Далее, используя cookie (JSESSIONID), необходимо загрузить описание процесса и вспомогательные файлы (формы, DMN-модели). Ниже приведен пример shell-скрипта, загружающего описание процесса (файл PROCESS.bpmn) совместно с формами (step-*.html) и бизнес-правилами (*.dmn).
#!/bin/sh curl -w "\n" \ --cookie-jar ./cookie \ -H "Accept: application/json" \ -d "username=USERNAME" \ -d "password=PASSWORD" \ https://CAMUNDA_HOST:8080/camunda/app/cockpit curl -w "\n" \ --cookie ./cookie \ -H "Accept: application/json" \ -F "deployment-name=DEPLOYMENT_NAME" \ -F "enable-duplicate-filtering=false" \ -F "deploy-changed-only=falses" \ -F "PROCESS.bpmn=@PROCESS.bpmn" \ -F "step1-1.dmn=@step1-1.dmn" \ -F "step1-2.dmn=@step1-2.dmn" \ -F "step1-3.dmn=@step1-3.dmn" \ -F "step1-1.html=@step1-1.html" \ -F "step1-2.html=@step1-2.html" \ -F "step1-3.html=@step1-3.html" \ -F "step1-4.html=@step1-4.html" \ -F "step1-5.html=@step1-5.html" \ -F "step1-6.html=@step1-6.html" \ https://CAMUNDA_HOST:8080/engine-rest/deployment/create
Проверяем корректность загруженного описания процесса в Camunda Cockpit.
Описанный выше подход к загрузке описания работает в Camunda BPM версии 7.8 - 7.10. Синтаксис команд утилиты curl может отличаться в зависимости от версий утилиты и операционной системы.
другие статьи