排他网关案例

引言

在流程执行到达该网关时,会按照所有出口顺序流的定义顺序对它们进行计算。选择第一个条件计算为true的顺序流,未设置选择默认序列流执行。

条件设置

条件表达式
${numValue==1}
${numValue>1 && numValue <3}

${test == 'foo'}

更多案例请参考 QL Expression

脚本

Camunda 的 Script 功能主要是指在 Camunda BPM 平台中的脚本语言支持,主要包括 Java、Groovy 和 JavaScript。这些脚本语言可以用于实现各种自定义功能,如业务规则、条件表达式、数据处理等。

Groovy文档

网关的使用重点就是对条件表达式和脚本使用的熟悉。

流程建模

WX20231210-105152@2x.png

<?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&#62;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>

执行效果

WX20231210-105601@2x.png

WX20231210-105610@2x.png

更多细节请观看视频教程
体验案例,请访问www.jeecgflow.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值