我目前遇到jBPM 6.2中的情况,其中包容性网关不等待所有序列流完成。在其中一个序列流到达包含网关后,工作流程超过了包含网关。
这怎么可能?
此外,源代码中的位置是否包含网关逻辑,用于检查是否在工作流程中继续进行?
更新:2016年5月13日:
深入研究类JoinInstanece.java
(https://github.com/droolsjbpm/jbpm/blob/738d191d338dab3e8baceeaf6fe31556b81fe07f/jbpm-flow/src/main/java/org/jbpm/workflow/instance/node/JoinInstance.java#L163)的jBPM源代码,表明在分裂连接包含或网关模式中,jBPM引擎尝试查找所有"活动& #34; " can"通往join
网关。但是,只要在xor
网关的路径中存在2个或更多join
个不同的网关,jBPM引擎就无法到达join
网关,因此得出的结论是没有& #34;有源"它的路径。
更具体地说,这些代码行可能会导致问题:
JoinInstance.java
:
if (currentNode instanceof Split && ((Split) currentNode).getType() == Split.TYPE_XOR) {
if (vistedNodes.contains(startAt.getId())) {
return false;
}
如果搜索遇到另一个" Split"节点,然后visitedNodes
将包含startAt
的ID。
也许应该是这样的:
if (vistedNodes.contains(startAt.getId()) && currentNode.getId() == startAt.getId()) {
return false;
}