Слушатели событий в процессных приложениях
|
Этот раздел перенесён из документации Camunda 7 и в дальнейшем будет доработан с учётом особенностей OpenBPM Engine |
Движок управления процессами поддерживает определение двух типов слушателей событий: Слушатели событий задач (Task Event Listeners) и слушатели событий выполнений (Execution Event Listeners). Слушатели событий задач позволяют реагировать на события задач (Created (создана), Assigned (назначена), Completed (завершена)). Слушатели выполнений позволяют реагировать на события, происходящие по мере выполнения этапов, отраженных на диаграмме: активности могут быть Started (начаты), Ended (закончены), кроме того, происходят переходы (Transitions).
При использовании API процессного приложения движок управления процессами обеспечивает гарантию того, что все события будут делегированы правильно выбранному процессному приложению. Например, предположим, что существует процессное приложение, задеплоенное как "invoice.war", которое деплоит определение процесса с именем "invoice". Процесс "invoice" содержит задачу под названием "archive invoice" (архивировать счет). Приложение "invoice.war" в дальнейшем предоставляет Java-класс, реализующий интерфейс ExecutionListener, сконфигурированный таким образом, чтобы вызываться всякий раз, когда происходит событие END на активности "archive invoice". Двидок управления процессами убеждается в том, чтобы событие было делегировано классу слушателя, находящемуся внутри процессного приложения:

Поверх слушателей Execution и Task, которые are яво конфигурируются в BPMN 2.0 XML, API процессного приложения поддерживает определение глобального ExecutionListener и глобального TaskListener, которые получают уведомление обо всех событиях, происходящих в процессах, задеплоенных процессным приложением:
@ProcessApplication
public class InvoiceProcessApplication extends ServletProcessApplication {
public TaskListener getTaskListener() {
return new TaskListener() {
public void notify(DelegateTask delegateTask) {
// handle all Task Events from Invoice Process
}
};
}
public ExecutionListener getExecutionListener() {
return new ExecutionListener() {
public void notify(DelegateExecution execution) throws Exception {
// handle all Execution Events from Invoice Process
}
};
}
}
Чтобы использовать слушатели событий глобального процессного приложения, вам необходимо активировать соответствующий плагин движка управления процессами:
<process-engine name="default">
...
<plugins>
<plugin>
<class>io.openbpm.bpm.application.impl.event.ProcessApplicationEventListenerPlugin</class>
</plugin>
</plugins>
</process-engine>
Заметьте, что в предварительно упакованных дистрибутивах Camunda 7 плагин активируется по умолчанию.
Интерфейс слушателя событий для процессного приложения также является хорошим местом для добавления моста CdiEventListener, если вы хотите bridge if you want to использовать CDI-события в комбинации с разделенным движком управления процессами.
Лицензия и атрибуция
Эта документация была создана на базе материала "Camunda 7 Docs" от Camunda, находится под лицензией Creative Commons Attribution-ShareAlike 3.0 Unported License .
Оригинал документации: https://docs.camunda.org