根据Camunda的文档(https://docs.camunda.org/manual/latest/user-guide/process-applications/process-application-event-listeners/),可将“全局”事件处理程序(ExecutionListener或TaskListener)添加到ProcessApplication
。
尽管如此,我还是无法在运行时找到添加类似(“全局”)事件处理程序的方法。此功能在Activiti中使用引擎的(https://www.activiti.org/javadocs/org/activiti/engine/RuntimeService.html#addEventListener-org.activiti.engine.delegate.event.ActivitiEventListener-)的方法addEventListener
存在,但Camunda的RuntimeService
中不再存在。
如何在运行时添加“全局”事件处理程序?
注意:事件处理程序将被添加到的ProcessApplication
不能被修改,因为我想从不同的库中添加处理程序。
谢谢大家,Camunda在运行时添加事件处理程序(ExecutionListener或TaskListener)
2
A
回答
3
社区延伸camunda-bpm-reactor允许您登记propgates事件的每一个听众将被触发时间eventbus。然后您可以在这些事件上注册侦听器。所以bpmn和监听器代码在运行时耦合在一起。
@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) {
...
}
}
2
我认为Activiti的方法addEventListener
加入Camunda分叉的Activiti后,这就是为什么该方法不适用于Camunda的RuntimeService。
正如文档所述,您可以定义一个返回全局执行/任务侦听器的进程应用程序。要在运行时定义流程应用程序,您可以使用EmbeddedProcessApplication
和ManagementService#registerProcessApplication
方法。
见下面的例子:
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());
+0
但是,如果流程应用程序已经被定义和初始化了,我该怎么办?我可以修改processApplication以添加处理程序吗?我想添加从库的处理程序到现有的应用程序... –
相关问题
- 1. 如何在运行时添加通用事件处理程序
- 2. 在运行时添加单选按钮事件处理程序
- 3. 在运行时添加控件时无法处理事件
- 4. 添加一个新的事件处理程序运行第一
- 5. Camunda Executionlistener实现与时间戳
- 6. ASP.net Dropdowlist在运行时添加 - 事件处理程序不被解雇
- 7. 添加自己的事件处理程序在其他事件处理程序
- 8. 更改已附加事件处理程序运行时
- 9. 处理在运行时添加的控件(ON USER CONTROL或WEB PART)的事件
- 10. 添加Google Analytics事件处理程序
- 11. 添加事件处理程序
- 12. 动态添加事件处理程序
- 13. 如何在运行时克隆控件事件处理程序?
- 14. 处理运行时添加的控件的事件
- 15. 如何在运行时添加TreeView时添加AfterCheck事件处理程序到TreeNode
- 16. 在XAML中添加事件处理程序时出现XamlParseException
- 17. 在backbone.js中扩展视图时添加事件处理程序?
- 18. 运行时控件事件处理程序窗体
- 19. 如何在运行时向事件添加更一般的事件处理程序
- 20. 将事件处理程序附加到事件OnInit或OnLoad上
- 21. 添加iPhone OS事件的jQuery样式事件处理程序
- 22. 当用户添加图像时的事件处理程序
- 23. 在一个永久线程中运行事件处理程序
- 24. 无法在添加事件处理程序后签出组件或页面
- 25. 在运行时添加事件
- 26. 在事件处理程序
- 27. HTML事件处理程序与React事件处理程序
- 28. 在哪里添加事件处理程序
- 29. 在实例化之后向jqGrid添加事件处理程序
- 30. 如何在VB.NET中添加事件处理程序?
太棒了!正是我需要的 –