我们采用的是flowable 6.5,并具有在Activiti 5.15和 继续在向后兼容的flowable 5引擎中工作。
问题-我们正在通过进行中的传统流程发送信号,但在 org.flowable.engine.impl.agenda.TriggerExecutionOperation带有给定的ActivityActivity的NPE ActivityBehavior activityBehavior =(ActivityBehavior)(((FlowNode)currentFlowElement).getBehavior()从下面的代码返回NULL。
理想情况下,FlowNode行为由bpmn解析器设置,该解析器将进程定义部署在内存中。虽然对于可流动的5个兼容的流程定义,解析器设置ActivitiImpl而不是FlowNode。因此,当信号被调用时,它会进入TriggerExecutionOperation并尝试在FlowNode中查找当前行为,但找不到它,因为bpmn解析处理程序没有为旧进程设置它。
如果我发送的信号具有在flowable 6.5引擎中实例化的新流程定义,则相同的流程效果很好。
有什么想法为什么会发生?
public void run() {
FlowElement currentFlowElement = getCurrentFlowElement(execution);
if (currentFlowElement instanceof FlowNode) {
ActivityBehavior activityBehavior = (ActivityBehavior) ((FlowNode)
currentFlowElement).getBehavior();
....
}
谢谢 宾语