Flowable工作流之各种网关

1. 网关作用

流程中的网关用于控制顺序流的分支和汇合,如果不需要进行顺序流的控制,则可以不使用网关

2. 网关分类

2.1. 排他网关

排他网关就好像一个人走到了一个岔路口,只能选择一条路前进,至于选择哪条路由顺序流的条件决定

排他网关用内部带有 X 图标的标准网关(菱形)表示,X 图标代表异或的含义。请注意内部没有图标的网关默认为排他网关。BPMN 2.0 规范不允许在同一个流程中混合使用有及没有 X 的菱形标志

在这里插入图片描述
案例

在这里插入图片描述

  • 如果只有一个顺序流的条件满足要求,则就走这个顺序流
  • 如果有多个顺序流的条件满足要求,则哪个顺序流的定义在流程文件中靠前,走哪个顺序流
  • 如果没有顺序流的条件满足要求,则抛出异常

2.2. 并行网关

并行网关对执行流会有两种行为:分岔和合并

  • 分岔:可以让一个执行流变为多个同时进行的并发执行流
  • 合并:可以让多个执行流合并为一个执行流
  • 并行网关并不要求成对出现,即有了分岔并不一定有合并,有了合并也不一定有分岔
  • 一个并行网关允许同时出现分岔和合并两种行为,即多个执行流到达该并行网关时被合并,然后随机又被分岔为多个执行流
    在这里插入图片描述
  • 与其他网关的主要区别是,并行网关不会解析流条件。 即使顺序流中定义了流条件,也会被忽略

并行网关案例

在这里插入图片描述

2.2.1. 并行网关实现

2.2.1.1. 工作流程图

在这里插入图片描述
对应的 xml 文件如下,其中绘制流程图时已指定下述变量

  • 任务的发起人使用变量指定:${workers}
  • 项目经理审批任务的执行人使用变量指定:${ProjectManager}
  • 技术经理审批任务的执行人使用变量指定:${TechnicalManager}
  • 总经理审批任务的执行人使用变量指定:${boss}
  • 请假天数大于 3 天使用变量指定:${num>3}
  • 请假天数小于等于 3 天使用变量指定:${num<=3}
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:flowable="http://flowable.org/bpmn"
             xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"
             xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI"
             typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath"
             targetNamespace="http://www.flowable.org/processdef" exporter="Flowable Open Source Modeler"
             exporterVersion="6.7.2">
    <process id="Leave1" name="Leave1" isExecutable="true">
        <documentation>公司请假申请流程</documentation>
        <startEvent id="sid-EDEC0102-C387-4F9A-B5EF-157587793A4D" flowable:formFieldValidation="true"></startEvent>
        <userTask id="userId" name="请假申请" flowable:assignee="${workers}" flowable:formFieldValidation="true">
            <extensionElements>
                <modeler:initiator-can-complete xmlns:modeler="http://flowable.org/modeler">
                    <![CDATA[false]]></modeler:initiator-can-complete>
            </extensionElements>
        </userTask>
        <sequenceFlow id="sid-A62E0666-ABAF-4A31-B7A6-43157D7F59B2" sourceRef="sid-EDEC0102-C387-4F9A-B5EF-157587793A4D"
                      targetRef="userId"></sequenceFlow>
        <sequenceFlow id="sid-0EED4703-83C6-4B57-9015-A75B06927C0C" sourceRef="userId"
                      targetRef="sid-FF0BB60C-47D5-4DB5-8C3E-C21A1DFC1F81"></sequenceFlow>
        <parallelGateway id="sid-FF0BB60C-47D5-4DB5-8C3E-C21A1DFC1F81"></parallelGateway>
        <userTask id="xmjlId" name="项目经理审批" flowable:assignee="${ProjectManager}" flowable:formFieldValidation="true">
            <extensionElements>
                <modeler:initiator-can-complete xmlns:modeler="http://flowable.org/modeler">
                    <![CDATA[false]]></modeler:initiator-can-complete>
            </extensionElements>
        </userTask>
        <userTask id="jsjlId" name="技术经理审批" flowable:assignee="${TechnicalManager}" flowable:formFieldValidation="true">
            <extensionElements>
                <modeler:initiator-can-complete xmlns:modeler="http://flowable.org/modeler">
                    <![CDATA[false]]></modeler:initiator-can-complete>
            </extensionElements>
        </userTask>
        <sequenceFlow id="sid-7A21D68A-3115-447A-B147-CDC6144D6D71" sourceRef="sid-FF0BB60C-47D5-4DB5-8C3E-C21A1DFC1F81"
                      targetRef="jsjlId"></sequenceFlow>
        <sequenceFlow id="sid-EF7EDB7C-3719-485D-85C6-EDF2DA8DBE33" sourceRef="sid-FF0BB60C-47D5-4DB5-8C3E-C21A1DFC1F81"
                      targetRef="xmjlId"></sequenceFlow>
        <sequenceFlow id="sid-25F6DB53-F695-4A0D-BBFC-6B8A45371EDF" sourceRef="jsjlId"
                      targetRef="sid-B961DC17-1F54-4B6B-BCA9-9EA15DEFDC29"></sequenceFlow>
        <parallelGateway id="sid-B961DC17-1F54-4B6B-BCA9-9EA15DEFDC29"></parallelGateway>
        <sequenceFlow id="sid-C7AA05DF-F958-476D-8710-F9B8DD51BE85" sourceRef="xmjlId"
                      targetRef="sid-B961DC17-1F54-4B6B-BCA9-9EA15DEFDC29"></sequenceFlow>
        <exclusiveGateway id="sid-3C064FB3-2132-4C38-88E0-F1AD3CA14A1C"></exclusiveGateway>
        <sequenceFlow id="sid-4C96EBB0-7EAC-4FD5-BF06-6
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值