项目场景:
提示:这里简述项目相关背景:
项目中使用 activi 流程引擎中排他网关设计流程模型时,保存流程模型时遇到相关的错误信息,导致保存失败。
问题描述
遇到的问题:
项目中使用 activi 流程引擎中排他网关设计流程模型时,遇到以下所示的错误信息:
org.activiti.engine.ActivitiException: Errors while parsing:
[Validation set: 'activiti-executable-process' |
Problem: 'activiti-exclusive-gateway-condition-not-allowed-on-single-seq-flow'] : Exclusive gateway has only one outgoing sequence flow.
This is not allowed to have a condition. -
[Extra info : processDefinitionId = PurApplyEntity | processDefinitionName = 采购 | | id = sid-BF0A3523-1142-46BA-A436-4C858D41D089 | ]
( line: 16, column: 5)
原因分析:
问题的分析:
根据以上的错误信息,出现了一个问题导致解析失败,原因是在一个唯一的连线上存在条件。该问题的描述是 “Exclusive gateway has only one outgoing sequence flow. This is not allowed to have a condition.” 说明该排他网关只有一个连线,不允许在其上设置条件。
在您的流程定义文件(.bpmn或.xml)中,第16行第5列可能是出现该错误的位置。请检查排他网关的连线,确保在网关上仅有一条出连线。如果确实需要在这条连线上设置条件,请添加一个令牌,这样就生成了一个条件路径,同时流程定义将无法解析生成。
这个错误是由于在 Activiti 流程中的排他网关(Exclusive Gateway)只有一个出口序列流,并且还使用了条件。根据 Activiti 的规范,排他网关在只有一个出口时是不允许添加条件的。
解决方案:
解决方案:
1、要解决这个问题,你可以检查流程设计中的排他网关,确认是否只有一个出口序列流,并且如果只有一个出口,应该移除条件表达式。
2、我们也可以考虑重新设计流程,添加其他出口流或者使用其他类型的网关来满足具体的业务需求。
另外,根据错误信息提示,我们还可以检查具体的流程定义 ID、名称和 ID,以便更好地定位并解决问题。
知识小结:
1) 一个排他网关对应一个以上信息流;
2)由排他网关流出的顺序刘都有个conditionExpression元素(以.xml形式打开),在内部维护返回boolean类型的决策结果;
3)排他网关只会返回一条结果。当刘晨执行到排他网关时,流程引擎会自动检索网关出口,从上到下检索(xml)如果发现第一条决策结果为true或者没有设置条件(默认为成立),则流出;
4)如果没有任何一个出口符合条件,则抛出异常;
5)使用流程变量,设置连线的条件,并按照连线的条件执行工作流,如果没有条件符合的,以默认的连线离开。