此问题终于解决了,看了 NodeRTProcessBean 的代码,看到isCreateAble方法对于聚合是这样处理的:
当一个节点提交到聚合节点时,遍历所有节点,找出聚合节点的分散起始点相同的点,如果除了当前节点其他都完成,这样聚合节点才能到达。
其实这是有逻辑问题的,因为节点分散后,可能有多个聚合节点,如果聚合时要判断所有分散的点就有问题了,正确的做法是只判断和此聚合节点有关系的点。
具体处理方法如下:
cn.myapps.core.workflow.storage.runtime.ejb.NodeRTProcessBean.java 的 isCreateAble方法找到这个一行在后面加上代码- Vector backStepNodeList = instance.getFlowVO().toFlowDiagram().getBackSetpNode(nextNode);
复制代码 再找到这行- if (!nrt.getId().equals(nodeRT.getId()))
复制代码 把它改成- boolean isRelationToNextNode = false;
- for (Object node : backStepNodeList)
- if (nrt.getNodeid().equals(((Node)node).id))
- isRelationToNextNode = true;
- if (!nrt.getId().equals(nodeRT.getId()) && isRelationToNextNode)
复制代码 你们觉得这是一个bug呢还是bug呢还是一个bug? |