Process Application 事件监听

流程引擎支持定义两种类型的事件侦听器:任务事件侦听器和执行事件侦听器。 任务事件侦听器允许对任务事件做出反应(任务已创建、已分配、已完成)。 执行侦听器允许对在执行过程中通过流程设计触发的事件做出反应:活动开始、结束和转换正在进行。

使用流程应用程序 API 时,流程引擎确保将事件委托给正确的流程应用程序。 例如,假设有一个流程应用程序部署为“invoice.war”,它部署了一个名为“invoice”的流程定义。 发票流程有一个名为“归档发票”的任务。 应用程序“invoice.war”进一步提供了一个实现 执行侦听器 接口的 Java Class 并进行了配置 每当在“归档发票”活动上触发结束事件时调用。 流程引擎确保将事件委托给位于流程应用程序内部的侦听器类:

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>org.camunda.bpm.application.impl.event.ProcessApplicationEventListenerPlugin</class>
    </plugin>
  </plugins>
</process-engine>

请注意,该插件在预打包的 Camunda 平台发行版中默认激活。

如果你想结合共享流程引擎使用CDI Events流程应用,可以在Event Listener接口添加CdiEventListener桥接器。

目录: