首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Camunda中的运行时添加事件处理程序(ExecutionListener或TaskListener)

在Camunda中的运行时添加事件处理程序(ExecutionListener或TaskListener)
EN

Stack Overflow用户
提问于 2017-04-19 10:14:06
回答 2查看 4K关注 0票数 2

根据Camunda的doc (https://docs.camunda.org/manual/latest/user-guide/process-applications/process-application-event-listeners/),可以将“全局”事件处理程序(ExecutionListener或TaskListener)添加到ProcessApplication中。

尽管如此,我还没有找到在运行时添加类似(“全局”)事件处理程序的方法。此特性在Activiti中使用了引擎的addEventListener‘s RuntimeService (https://www.activiti.org/javadocs/org/activiti/engine/RuntimeService.html#addEventListener-org.activiti.engine.delegate.event.ActivitiEventListener-)方法,但在Camunda的RuntimeService中不再存在。

如何在运行时添加“全局”事件处理程序?

注意事项:将向其中添加事件处理程序的ProcessApplication不能被修改,因为我想从不同的库中添加处理程序。

谢谢大家,

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-20 12:31:57

社区扩展卡蒙达-bpm反应器允许您注册一个事件总线,它每次触发侦听器时都会推进事件。然后,可以在这些事件上注册侦听器。因此,bpmn和侦听器代码在运行时耦合。

代码语言:javascript
运行
复制
@CamundaSelector(type = "userTask", event = TaskListener.EVENTNAME_CREATE)
public class TaskCreateListener implements TaskListener {

   public TaskCreateListener(EventBus eventBus) {
     eventBus.register(this);
   }

   @Override
   public void notify(DelegateTask delegateTask) {
      ...
   }
}
票数 3
EN

Stack Overflow用户

发布于 2017-04-19 11:08:15

我认为activiti方法addEventListener是在Camunda分叉Activiti之后添加的,这就是为什么这个方法在Camunda的RuntimeService上不可用的原因。

如文档所述,您可以定义一个流程应用程序,它返回全局执行/任务侦听器。要在运行时定义进程应用程序,可以使用EmbeddedProcessApplicationManagementService#registerProcessApplication方法。

见以下示例:

代码语言:javascript
运行
复制
EmbeddedProcessApplication processApplication = new EmbeddedProcessApplication() {
  public ExecutionListener getExecutionListener() {
    return new ExecutionListener() {
      public void notify(DelegateExecution execution) throws Exception {
      // do your stuff       
      }              
    };
  }
};

// register app so that it is notified about events
managementService.registerProcessApplication(deploymentId, processApplication.getReference());
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43492731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档