1

我们正在使用 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();
....
}

谢谢比尼什

4

0 回答 0