根据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. Camunda Executionlistener实现与时间戳
- 5. 添加一个新的事件处理程序运行第一
- 6. 添加自己的事件处理程序在其他事件处理程序
- 7. ASP.net Dropdowlist在运行时添加 - 事件处理程序不被解雇
- 8. 更改已附加事件处理程序运行时
- 9. 处理在运行时添加的控件(ON USER CONTROL或WEB PART)的事件
- 10. 添加事件处理程序
- 11. 动态添加事件处理程序
- 12. WPF C#添加事件处理程序
- 13. 动态添加事件处理程序
- 14. 添加Google Analytics事件处理程序
- 15. 如何在运行时克隆控件事件处理程序?
- 16. 处理来自COM的事件时“无法添加事件处理程序”
- 17. javascript:可能添加在默认行为后运行的事件处理程序?
- 18. 处理运行时添加的控件的事件
- 19. 如何在运行时添加TreeView时添加AfterCheck事件处理程序到TreeNode
- 20. Onreadystatechange - 事件或事件处理程序?
- 21. 在main()中为串行端口添加事件处理程序
- 22. 在运行时添加/更改处理程序的通道
- 23. 在backbone.js中扩展视图时添加事件处理程序?
- 24. 在XAML中添加事件处理程序时出现XamlParseException
- 25. 实时附加事件处理程序
- 26. 在运行时ContextMenuStrip事件处理程序
- 27. 事件处理程序运行仅在前面的事件处理完毕
- 28. 运行时控件事件处理程序窗体
- 29. 如何在运行时向事件添加更一般的事件处理程序
- 30. 在页面加载时执行的JQuery事件处理程序
太棒了!正是我需要的 –