getEventDispatcher

本文深入探讨了Node中事件分发器(_eventDispatcher)的功能及其在节点管理中的作用,详细介绍了如何通过Director获取该实例,理解其单例模式,并提供实际应用场景示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

_eventDispatcher是Node的属性,通过它管理当前节点(如 场景、层、精灵等)的所有事件分发情况。但是它本身是一个单例模式的引用,在CCNode构造函数中,通过

Director::getInstance()->getEventDispatcher()获取

import org.camunda.bpm.engine.ProcessEngine; import org.camunda.bpm.engine.RuntimeService; import org.camunda.bpm.engine.event.Event; import org.camunda.bpm.engine.event.ProcessEngineEventType; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; @Component public class ProcessCompletedGlobalListener { @Autowired private ProcessEngine processEngine; @Autowired private RuntimeService runtimeService; // 启动时注册全局监听器(等价于Flowable的监听器初始化) @PostConstruct public void init() { // 注册事件监听器,监听所有引擎事件 processEngine.getEventDispatcher().registerEventListener(event -> { // 匹配「流程实例完成」事件(等价于Flowable的processCompleted方法触发条件) if (ProcessEngineEventType.PROCESS_COMPLETED.equals(event.getType())) { handleProcessCompleted(event); // 调用处理逻辑 } }); } // 核心处理逻辑(等价于Flowable中重写的processCompleted方法) private void handleProcessCompleted(Event event) { String processInstanceId = event.getProcessInstanceId(); if (processInstanceId == null) { return; } // 获取并修改变量(与Flowable逻辑一致) Object status = runtimeService.getVariable(processInstanceId, ProcessConstants.PROCESS_STATUS_KEY); if (ProcessStatus.RUNNING.getStatus().equals(status)) { runtimeService.setVariable(processInstanceId, ProcessConstants.PROCESS_STATUS_KEY, ProcessStatus.COMPLETED.getStatus()); } } } 这些camunda都用不了,很多方法和类都没有
07-23
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值