Подключение движка BPMN

Для работы схем нужны три вещи: включённый плагин BPMN в конфигурации ERP, доступный движок Camunda и общий с ним брокер ActiveMQ. Все ключи ниже задаются в основной конфигурации.

Включение плагина

plugin:bpmn.enabled=1

Ключ открывает меню BPMN и вкладку Схема БП в редакторе типа процесса. Без него меню и вкладка не показываются.

Клиент движка

ERP публикует схемы и запускает их экземпляры через REST API движка. Клиент описывается в разделе api.camunda по общим правилам HTTP-клиентов:

api.camunda.name=Camunda
api.camunda.url=http://<хост движка>:8080/
В url указывается адрес сервиса без engine-rest/: этот префикс ERP добавляет сам.

Чтобы в сведениях о BPMN-процессе была ссылка на экземпляр в Camunda Cockpit, задайте адрес, к которому ERP допишет идентификатор экземпляра:

plugin.bpmn.camunda.baseCockpitUrl=<адрес страницы экземпляра в Cockpit>

Запуск схемы при создании процесса

plugin.bpmn.listener.process.start=1
plugin.bpmn.log.failed.attempts.start.process=1

plugin.bpmn.listener.process.start включает запуск экземпляра схемы при создании процесса. По умолчанию он выключен: процессы создаются, но схема для них не запускается.

Ошибка запуска не прерывает создание процесса. Процесс остаётся без схемы, а сообщение об ошибке попадает в лог только при включённом plugin.bpmn.log.failed.attempts.start.process (уровень DEBUG). Если у новых процессов не появляются задачи схемы, начните проверку с этих двух ключей.

Брокер и обработчики сообщений

Движок сообщает ERP о задачах и завершении процесса через очереди ActiveMQ. ERP и движок должны работать с одним брокером:

amq.host=tcp://<хост брокера>:61616
amq.username=<пользователь>
amq.password=<пароль>

Сообщения принимают обработчики плагина Apache Camel, поэтому плагин должен быть включён (camel.enabled=1). Обработчик работает, только если его класс перечислен в camel.handler.<n>.class. Для исполнения схем обязательны:

camel.handler.<n>.class=ru.bgcrm.plugin.bpmn.camunda.listener.task.user.UserTaskListener
camel.handler.<n>.class=ru.bgcrm.plugin.bpmn.camunda.listener.task.service.ServiceTaskListener
camel.handler.<n>.class=ru.bgcrm.plugin.bpmn.camunda.listener.process.ProcessListener
camel.handler.<n>.class=ru.bgcrm.plugin.bpmn.camunda.listener.timer.TimeEventListener
camel.handler.<n>.class=ru.bgcrm.plugin.bpmn.core.listener.ServiceTaskListener
camel.handler.<n>.class=ru.bgcrm.plugin.bpmn.core.listener.ProcessDeletedListener
camel.handler.<n>.class=ru.bgcrm.plugin.bpmn.core.temp.ProcessUpdateListener

Вместо <n> подставьте свободные номера.

Очередь Что передаётся

camunda.userTask.create, .complete, .delete

Создание, завершение и отмену пользовательской задачи.

camunda.serviceTask.start, .end

Начало и окончание сервисной задачи.

camunda.process.end

Завершение экземпляра схемы.

camunda.request.service.timer.getTime

Запрос времени срабатывания таймера.

erp.serviceTask.created, erp.serviceTask.completing

Внутренние шаги ERP при выполнении сервисной задачи.

erp.process.deleted

Удаление процесса ERP, у которого есть экземпляр схемы.

erp.automation.<id блока>

Выполнение действия блока автоматизации.

Сообщение, которое обработчик не смог принять после повторных попыток, уходит в очередь с суффиксом .DLQ. Растущая DLQ-очередь — признак того, что обработчик не подключён или падает.

Блоки автоматизации

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

  • действие на сервисной задаче отправляется в очередь erp.automation.<id блока>. Её слушатель тоже указывается в camel.handler.<n>.class; встроенные слушатели лежат в пакете ru.bgcrm.plugin.bpmn.automationhandlers. Без слушателя сообщение остаётся в брокере, и сервисная задача не завершается;

  • условие ветки шлюза вызывается внутри приложения по ключу transport.runtime.interface.<id блока>=<класс>. Без него выбор ветки завершается ошибкой «Не найден адресат для запроса»;

  • источники значений полей блока регистрируются ключами valuesProvider.provider.<имя> (списки) и fieldsProvider.provider.<имя> (наборы полей). Без них список в настройке блока остаётся пустым.

Справочник BPMN → Автоматизации показывает у каждого блока найденные проблемы регистрации: выключенный Camel, отсутствующий слушатель очереди, обработчик условия или источник значений. Проверяйте его после изменения конфигурации.

Проверка

  1. В меню есть пункт BPMN, в редакторе типа процесса — вкладка Схема БП.

  2. В справочнике BPMN → Автоматизации у используемых блоков нет проблем регистрации.

  3. Опубликованная схема видна в Camunda Cockpit.

  4. У нового процесса типа со схемой в карточке появилась первая пользовательская задача.

  5. Очереди camunda..DLQ и erp..DLQ в брокере пусты.