当前位置: 首页 > news >正文

Springboot +Flowable,三种常见网关的使用(排他、并行、包容网关)(一)

一.简介

Flowable 中常用的网关主要有三种类型,分别是:

  1. 排他网关
  2. 并行网关
  3. 包容网关

下面来说下这三种的网关的概念和用法。

二.排他网关

排他网关,也叫互斥网关,截图如下:
在这里插入图片描述
排他网关有一个入口,多个有效出口。

下面举个例子:
假设有一个请假流程,请假 1 天,组长审批,请假小于 3 天,项目经理审批,请假大于 3 天,总监审批,绘制流程图,截图如下:
在这里插入图片描述
在这个流程图中,当流程从排他网关出来的时候,设置一个变量,根据变量的值,来决定下一个走哪一个 Task,例如组长审批,做如下配置,截图如下:

在这里插入图片描述
这个流条件表示当 days 这个变量的值小于等于 1 的时候,就会进入到组长审批这个 Task。

以此类推,设置经理审批,截图如下:

在这里插入图片描述

设置总监审批,截图如下:

在这里插入图片描述
下载这个XML文件,XML文件的内容如下:

<process id="demo01" name="测试流程" isExecutable="true"><documentation>测试流程</documentation><startEvent id="startEvent1" flowable:formFieldValidation="true"></startEvent><exclusiveGateway id="sid-C4E389D6-C507-4B8E-8469-2288AA5B44A5"></exclusiveGateway><sequenceFlow id="sid-DF97CC8B-3AD5-447D-AE67-1082CAB7B189" sourceRef="startEvent1" targetRef="sid-C4E389D6-C507-4B8E-8469-2288AA5B44A5"></sequenceFlow><userTask id="sid-B4CD08AF-52B5-44F2-AC45-B2F5E154A5F0" name="组长审批" flowable:formFieldValidation="true"></userTask><userTask id="sid-07B7951C-4E76-4639-989C-407C610C5BA8" name="经理审批" flowable:formFieldValidation="true"></userTask><userTask id="sid-1A81B40F-D8D4-4158-B0B9-26DB8FB7DD2E" name="总监审批" flowable:formFieldValidation="true"></userTask><endEvent id="sid-0F56FE56-1A8C-4B47-8F0D-196700DDF7B8"></endEvent><sequenceFlow id="sid-E4B4B580-F078-4BB9-B5D3-966E80737C4C" sourceRef="sid-B4CD08AF-52B5-44F2-AC45-B2F5E154A5F0" targetRef="sid-0F56FE56-1A8C-4B47-8F0D-196700DDF7B8"></sequenceFlow><endEvent id="sid-F05670CB-A8F4-44A3-B53D-46CFB6F65581"></endEvent><sequenceFlow id="sid-3EC62E5D-ACDA-480E-93B4-C24D8F6E9042" sourceRef="sid-07B7951C-4E76-4639-989C-407C610C5BA8" targetRef="sid-F05670CB-A8F4-44A3-B53D-46CFB6F65581"></sequenceFlow><endEvent id="sid-52711414-1769-4EC3-9AE5-6BA426123095"></endEvent><sequenceFlow id="sid-C81500B2-D1EA-429F-8402-A3D8C8CA0E29" sourceRef="sid-1A81B40F-D8D4-4158-B0B9-26DB8FB7DD2E" targetRef="sid-52711414-1769-4EC3-9AE5-6BA426123095"></sequenceFlow><sequenceFlow id="sid-807C7B79-4AFA-4525-847F-4D0FE1C0F0F3" name="小于1天" sourceRef="sid-C4E389D6-C507-4B8E-8469-2288AA5B44A5" targetRef="sid-B4CD08AF-52B5-44F2-AC45-B2F5E154A5F0"><conditionExpression xsi:type="tFormalExpression"><![CDATA[${days<=1}]]></conditionExpression></sequenceFlow><sequenceFlow id="sid-3D3DF742-BF47-4536-9EE9-747CD284A1BA" name="1-3天" sourceRef="sid-C4E389D6-C507-4B8E-8469-2288AA5B44A5" targetRef="sid-07B7951C-4E76-4639-989C-407C610C5BA8"><conditionExpression xsi:type="tFormalExpression"><![CDATA[${days>1 && days<=3}]]></conditionExpression></sequenceFlow><sequenceFlow id="sid-2AD41E43-AFEC-47A1-B8D1-0B4299434BF8" name="大于3天" sourceRef="sid-C4E389D6-C507-4B8E-8469-2288AA5B44A5" targetRef="sid-1A81B40F-D8D4-4158-B0B9-26DB8FB7DD2E"><conditionExpression xsi:type="tFormalExpression"><![CDATA[${days>3}]]></conditionExpression></sequenceFlow></process>

可以看到,在 sequenceFlow 标签中,有一个 conditionExpression 标签,这个标签的内容就是具体的条件了。
接下来部署一下这个流程,代码如下:

@Test
void test01() {Map<String, Object> variables = new HashMap<>();variables.put("days", 3);ProcessInstance pi = runtimeService.startProcessInstanceByKey("demo01", variables);logger.info("id:{},activityId:{}", pi.getId(), pi.getActivityId());
}

注意,这个启动的时候,传入一个 days 变量,系统将来会根据这个变量来决定这个流程要走到哪一个 Task。流程启动成功之后,去查询 ACT_RU_TASK 表,就可以看到流程的执行是否和我们所预想的一致。

http://www.lryc.cn/news/66718.html

相关文章:

  • 软考高项(一)信息化发展 ★重点集萃★
  • 大项目准备(2)
  • 计算机网络【2】 子网掩码
  • linux发行家族和发行版及安装软件方式
  • FE_Vue学习笔记 条件渲染[v-show v-if] 列表渲染[v-for] 列表过滤 列表排序
  • 基于C++实现旅行线路设计
  • Lenovo m93 mini 电脑 Hackintosh 黑苹果efi引导文件
  • 【论文阅读】COPA:验证针对中毒攻击的离线强化学习的稳健策略
  • Java笔记_18(IO流)
  • 前端vue3一键打包发布
  • 13 | visual studio与Qt的结合
  • 纯手动搭建大数据集群架构_记录019_集群机器硬盘爆满了_从搭建虚拟机开始_做个200G的虚拟机---大数据之Hadoop3.x工作笔记0179
  • 变量大小:—揭开不同类型的字节数
  • 23.自定义指令
  • OPNET Modeler 例程——停等协议的建模和仿真
  • JavaScript - 基础+WebAPI(笔记)
  • API调用的注意事项及好处!
  • ros2中常用命令,与ros1的区别
  • 利用MySQL语句批量替换指定wordpress文章中的图片路径
  • Linux必会100个命令(六十)curl
  • 物联网硬件安全与整改梳理(1)
  • 【大数据学习篇3】HDFS命令操作与MR单词统计
  • java中设计模式总结
  • ChatGPT不到1分钟生成全部代码,你就说慌不慌吧?
  • Python进阶知识(1)—— 什么是爬虫?爬文档,爬图片,万物皆可爬,文末附模板
  • 如何在andorid native layer中加log function.【转】
  • FreeRTOS 空闲任务
  • 快速生成HTML结构语法、快速生成CSS样式语法以及emmet
  • 企业直播该如何做?硬件设备、网络环境、设备连接和观看权限等整个直播流程教程
  • 第4章 静态网站部署