南昌医院网站建设中山口碑seo推广
目录
- 定义
- 图形标记
- XML内容
- 示例
- 视频教程
定义
排他网关,也叫异或(XOR)网关,是 BPMN 中使用的最常见的网关之一,用来在流转中实
现发散分支决策。排他网关需要和条件顺序流搭配使用,当流程执行到排他网关,所有流出的顺序
流都会被按顺序求解计算一遍,其中第一个条件解析为 true 的顺序流会被选中(当多个顺序流程的
条件为 true 时,只有第一个会被选中)并且不再计算其它流出分支,让流程沿着第一条被选中的执
行线运行;如果所有顺序流条件计算结果都为 false 且该网关定义了一个默认顺序流,那么该默认
顺序流将被执行;如果所有顺序流条件计算结果都为 false 且没有定义默认顺序流,则抛出异常,
中断执行,在流程设计时应该避免这种情况的发生,至少需要确保有一条分支的顺序流计算结果为true。
排他网关的流程分支的顺序流建议配置条件,未设置条件的顺序流被计算为 true。
排他网关没有合并的效果,只要有一个流入的顺序流到达,该网关流出的顺序流被激活开始执
行计算。如果前置可能会有多个正在执行的分支,排他网关之后的路径将在每个分支到达时被重复
实例化(除非业务需求的确如此,否则应避免这种情况的发生)。
图形标记
排他网关用内部带有“X”图标的标准网关(菱形)表示,“X”图标表示异或(XOR)语义。
排他网关的图形标志如图所示。
XML内容
排他网关用一行定义了网关,条件表达式定义在流出顺序流中:
<exclusiveGateway id="Gateway_1gse3sj" default="Flow_1gdshzv"/>
示例
<process id="ServiceSpringCloudBackServiceProcess" name="服务-Springcloud回调服务" isExecutable="true"><startEvent id="a39b8c7712bb742a7aa081cf731563c96" /><userTask id="ad7ca5657f18f4e64aa6e309db12fc47b" name="费用申请"><extensionElements><flowable:formData /><flowable:assigneeType>static</flowable:assigneeType></extensionElements><outgoing>Flow_0tmo406</outgoing></userTask><sequenceFlow id="a653af6d1d2774d02afc0301d2f0121e2" sourceRef="a39b8c7712bb742a7aa081cf731563c96" targetRef="ad7ca5657f18f4e64aa6e309db12fc47b" /><endEvent id="Event_1vogsar"><incoming>Flow_0odeyuq</incoming></endEvent><exclusiveGateway id="Gateway_1gse3sj" default="Flow_1gdshzv"><incoming>Flow_0tmo406</incoming><outgoing>Flow_1gdshzv</outgoing><outgoing>Flow_0mdfhgf</outgoing></exclusiveGateway><userTask id="Activity_0b7092y" name="经理"><extensionElements><flowable:formData /><flowable:assigneeType>static</flowable:assigneeType></extensionElements><incoming>Flow_1gdshzv</incoming><outgoing>Flow_0c58ztv</outgoing></userTask><userTask id="Activity_1gvbrzi" name="总监"><extensionElements><flowable:formData /><flowable:assigneeType>static</flowable:assigneeType></extensionElements><incoming>Flow_0c58ztv</incoming><incoming>Flow_0mdfhgf</incoming><outgoing>Flow_0ovnf34</outgoing></userTask><sequenceFlow id="Flow_0c58ztv" sourceRef="Activity_0b7092y" targetRef="Activity_1gvbrzi" /><userTask id="Activity_0ol5zjn" name="总经理"><extensionElements><flowable:formData /><flowable:assigneeType>static</flowable:assigneeType></extensionElements><incoming>Flow_0ovnf34</incoming><outgoing>Flow_0odeyuq</outgoing></userTask><sequenceFlow id="Flow_0ovnf34" sourceRef="Activity_1gvbrzi" targetRef="Activity_0ol5zjn" /><sequenceFlow id="Flow_0odeyuq" sourceRef="Activity_0ol5zjn" targetRef="Event_1vogsar" /><sequenceFlow id="Flow_0tmo406" sourceRef="ad7ca5657f18f4e64aa6e309db12fc47b" targetRef="Gateway_1gse3sj" /><sequenceFlow id="Flow_1gdshzv" sourceRef="Gateway_1gse3sj" targetRef="Activity_0b7092y" /><sequenceFlow id="Flow_0mdfhgf" name="大于10000" sourceRef="Gateway_1gse3sj" targetRef="Activity_1gvbrzi"><conditionExpression xsi:type="tFormalExpression">${money>10000}</conditionExpression></sequenceFlow></process>
在以上代码中,加粗代码定义了排他网关 Gateway_1gse3sj,它流出的条件顺序流有
Flow_1gdshzv、Flow_0mdfhgf,分别定义了条件 默认流、Flow_0mdfhgf。
视频教程
排他网关