我们正在使用 flowable 6.5 并拥有在 Activiti 5.15 中创建的运行中的遗留流程,并继续在向后兼容的 flowable 5 引擎中工作。
问题 - 我们在传统的飞行过程中发送信号,它在 org.flowable.engine.impl.agenda.TriggerExecutionOperation 中失败,NPE 给定 ActivityBehavior activityBehavior = (ActivityBehavior) ((FlowNode) currentFlowElement).getBehavior() 从返回 NULL下面的代码。
理想情况下,FlowNode 行为由 bpmn 解析器设置,这些解析器将流程定义部署在内存中。尽管对于 flowable 5 兼容的流程定义,解析器设置了 ActivitiImpl 而不是 FlowNode。因此,当信号被调用时,它会进入 TriggerExecutionOperation 并尝试在 FlowNode 中查找当前行为但找不到它,因为它不是由 bpmn 解析处理程序为遗留进程设置的。
如果我使用在 flowable 6.5 引擎中实例化的新流程定义发送信号,则相同的流程效果很好。
任何想法为什么会发生这种情况?
TriggerExecutionOperation 中失败的代码
public void run() {
FlowElement currentFlowElement = getCurrentFlowElement(execution);
if (currentFlowElement instanceof FlowNode) {
ActivityBehavior activityBehavior = (ActivityBehavior) ((FlowNode)
currentFlowElement).getBehavior();
....
}
谢谢比尼什