引言
在流程执行到达该网关时,会按照所有出口顺序流的定义顺序对它们进行计算。选择第一个条件计算为true的顺序流,未设置选择默认序列流执行。
条件设置
条件表达式
${numValue==1}
${numValue>1 && numValue <3}
${test == 'foo'}
更多案例请参考 QL Expression
脚本
Camunda 的 Script 功能主要是指在 Camunda BPM 平台中的脚本语言支持,主要包括 Java、Groovy 和 JavaScript。这些脚本语言可以用于实现各种自定义功能,如业务规则、条件表达式、数据处理等。
Groovy文档
网关的使用重点就是对条件表达式和脚本使用的熟悉。
流程建模
<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_07roo0u" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.10.0" modeler:executionPlatform="Camunda Platform" modeler:executionPlatformVersion="7.19.0">
<bpmn:process id="Process_1e0su3p" name="排他网关" isExecutable="true">
<bpmn:startEvent id="StartEvent_1">
<bpmn:outgoing>Flow_0b5xh9k</bpmn:outgoing>
</bpmn:startEvent>
<bpmn:sequenceFlow id="Flow_0b5xh9k" sourceRef="StartEvent_1" targetRef="Activity_0bvlurn" />
<bpmn:userTask id="Activity_0bvlurn" name="请假申请" camunda:assignee="${general}">
<bpmn:extensionElements>
<camunda:formData>
<camunda:formField id="numValue" label="数值" type="long" />
<camunda:formField id="textValue" label="文本" type="string" />
</camunda:formData>
</bpmn:extensionElements>
<bpmn:incoming>Flow_0b5xh9k</bpmn:incoming>
<bpmn:outgoing>Flow_110pj61</bpmn:outgoing>
</bpmn:userTask>
<bpmn:exclusiveGateway id="Gateway_0881nsa">
<bpmn:incoming>Flow_110pj61</bpmn:incoming>
<bpmn:outgoing>Flow_1bymve9</bpmn:outgoing>
<bpmn:outgoing>Flow_086p0ox</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:sequenceFlow id="Flow_110pj61" sourceRef="Activity_0bvlurn" targetRef="Gateway_0881nsa" />
<bpmn:sequenceFlow id="Flow_1bymve9" name="${x==1}" sourceRef="Gateway_0881nsa" targetRef="Activity_17srhfi">
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${numValue==1}</bpmn:conditionExpression>
</bpmn:sequenceFlow>
<bpmn:userTask id="Activity_17srhfi" name="军师" camunda:assignee="${guide}">
<bpmn:extensionElements>
<camunda:formData>
<camunda:formField id="comment" label="文本" type="string" />
<camunda:formField id="imageUrl" label="图片" type="string" />
</camunda:formData>
</bpmn:extensionElements>
<bpmn:incoming>Flow_1bymve9</bpmn:incoming>
<bpmn:outgoing>Flow_0b418j2</bpmn:outgoing>
</bpmn:userTask>
<bpmn:sequenceFlow id="Flow_086p0ox" name="${x>3}" sourceRef="Gateway_0881nsa" targetRef="Activity_0467j8a">
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${numValue==2}</bpmn:conditionExpression>
</bpmn:sequenceFlow>
<bpmn:userTask id="Activity_0467j8a" name="主公" camunda:assignee="${leader}">
<bpmn:extensionElements>
<camunda:formData>
<camunda:formField id="comment" label="评论" type="string" />
<camunda:formField id="imageUrl" label="图片" type="string" />
</camunda:formData>
</bpmn:extensionElements>
<bpmn:incoming>Flow_086p0ox</bpmn:incoming>
<bpmn:outgoing>Flow_0yh0lc3</bpmn:outgoing>
</bpmn:userTask>
<bpmn:endEvent id="Event_0n32az2">
<bpmn:incoming>Flow_0b418j2</bpmn:incoming>
<bpmn:incoming>Flow_0yh0lc3</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="Flow_0b418j2" sourceRef="Activity_17srhfi" targetRef="Event_0n32az2" />
<bpmn:sequenceFlow id="Flow_0yh0lc3" sourceRef="Activity_0467j8a" targetRef="Event_0n32az2" />
</bpmn:process>
</bpmn:definitions>
执行效果
更多细节请观看视频教程
体验案例,请访问www.jeecgflow.com