camunda 流程引擎如何开始并行任务,且有哪些实现方式?

2023-11-20

认识并行任务
在流程引擎开发中,稍微复杂一点的项目都会遇到并行任务!什么是并行任务呢?就是在完成一个流程节点后,下一步会同时开始多个任务,且任务与任务之间互不影响。
这个说起来真的有点绕,刚开始我真不理解,试了好多次才想明白,下面就画2条不同的流程图一起理解。

 

比如像上面的报销流程图中,在申请人发起申请后,执行【自动知会】节点后,会同时产生 【人事审批】节点任务和【行政审批】节点任务,这2个任务之间互不影响(谁先完成谁后完成都没关系),只有这2个节点的任务都成功执行了,才会到达【经理审批】节点。
像这样同时产生了2条并行的分支任务就是并行任务。
那还有没有其它事情呢?还真有,看下面的情况:

 

上面的流程图,在【评估纠正预防措施】节点,产生了2条需要评估纠正预防措施,就会同时产生2条【跟踪验证】的子流程,在2条子流程都执行完了,整个大流程才算走完。
通过上面的2个流程图实例,相信大家对并行任务有了理解。
通过上面的图,大家也一定看出来了实现并行任务的2种方式:
1)网关
2)子流程
确实是这样的,目前我在做流程开发,所能想到的也就只有这2种方式,如果你还有其它的方式,请留言。
网关
我在实际项目中,我是怎样使用【网关】来实现并行任务的,首先还是画流程图,并配制流程图

 

 

上面的流程图很好画,主要是配制任务执行人参数。就是图中的红色边框。
在流程中,所有 User Task 类型的节点产生的任务都是要指定人的。

 

在此流程中,下一个节点是自动任务节点,所以在【申请人】节点我就通过传递参数的方式指定了【人事审批】和【行政审批】的执行人。即使以后公司在人事或者行政的人事变动,需要不同的人来审批,都不需要调整流程。程序仍然可用。
子流程
上面的网关能完成一定情况的并行任务,但并不能应对所有的实际业务场景。于是嵌套多实例的子流程的情况就产生了。

 

相信大家对左边的子流程框肯定都理解。我就主要说下另边红色小框表示什么:
竖起的三根线:表示任务并行,任务同时开始,相互之间不影响
横起的三根线:表示任务串行,任务按顺序执行,也就是如果要产生3个任务,就是第1个任务完成了,才会产生第二个,第二个完成,产生第三个任务
参数:
Collection: userIdList ( 多个执行人,以数组的方式传递 )
Element Variable: userId 
Completion Condition: (配制完成条件,我这里是需要3个都完成)
    nrOfCompletedInstances  : 完成的实例(流程引擎自带的参数名,固定的不能更改)
    nrOfInstances                    :总共实例(流程引擎自带的参数名,固定的不能更改
条件可以配制成大于 ${nrOfCompletedInstances/nrOfInstances > 0.3}、小于 ${nrOfCompletedInstances/nrOfInstances < 0.8},根据项目的实际情况来

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

camunda 流程引擎如何开始并行任务,且有哪些实现方式? 的相关文章

  • Testflight 添加外部测试人员

    内部测试人员 不需要提供所有的metadata 外部测试人员 为了使得外部人员可以测试app的预发布build 必须提供如下的metadata What to test App description Feedback email Mark

随机推荐

  • 利用Python读取MongoDB的数据

    近日在处理数据的时候遇到一个问题 数据存储在MongoDB数据库 如图1 而MongoDB模式自由 具有很大的灵活性 可以把不同结构的文档存储在同一个数据库里 即表的字段不是完全固定的 当某个字段有值时就会显示该字段 而当该字段没有值时就不
  • 3.git 将本地仓库推到远程

    1 创建一个本地仓库 git init 2 把文件添加到版本仓库中 git add 3 生成提交记录 git commit m git init 4 关联到远程库 git remote add origin 你的远程库 5 获取远程库与本地
  • jsoncpp封装和解析字符串、数字、布尔值和数组

    使用jsoncpp进行字符串 数字 布尔值和数组的封装与解析 1 下载jsoncpp的代码库 百度网盘地址 http pan baidu com s 1ntqQhIT 2 解压缩文件 jsoncpp rar unzip jsoncpp ra
  • 解决BeanNotOfRequiredTypeException办法(@Autowired和@Resource注解的不同)

    1 错误信息 org springframework beans factory BeanNotOfRequiredTypeException Bean named aisleService must be of type com gdie
  • Nmap源码分析(主机发现)

    Nmap源码分析 主机发现 2012年8月9日 Nmap在进行真正的端口扫描之前 通常需要确定目标主机是否在线 主机发现过程 以免发送大量探测包到不在线的主机 主机发现作为Nmap的基本功能之一 用户也可以单独运用 例如 仅仅需要确定局域网
  • 盘点3款超好用的免费录屏软件,快来看!

    在现代数字化社会中 录屏软件成为了各行各业中必备的工具之一 用于记录操作步骤 制作教程 分享游戏精彩瞬间等 而寻找一款免费的 功能强大的录屏软件也变得越来越重要 本文将为您介绍3款免费录屏软件 并详细说明使用步骤 帮助您找到适合自己需求的录
  • 制作OLED图标

    制作OLED图标 陈拓 2021 06 24 2021 06 26 1 概述 制作用于OLED显示的图标 获取C语言图像点阵数据 2 图标库 先准备图标图像 可以从图标库中找需要的图案 下面两个是我常用的图标网站 2 1 Font Awes
  • 什么是gdb,gdb的简单用法

    在Linux中 gdb是GNU调试器 GNU debugger 的缩写 它是一个强大的命令行调试工具 用于调试C C 和其他编程语言的程序 使用gdb可以执行以下任务 启动程序并逐行执行代码 设置断点 以便在特定位置停止程序执行 检查变量的
  • php漏洞eval,Web安全之代码执行漏洞

    原标题 Web安全之代码执行漏洞 内容 1 代码执行漏洞的概述 2 代码执行漏洞的危害 3 代码执行漏洞的利用 4 代码执行漏洞的防御 背景介绍 在Web应用中有时候程序员为了考虑灵活性 简洁性 会在代码调用eval函数 PHP函数 去处理
  • oracle imp lrm 00101,LRM-00101: unknown parameter name解决办法

    LRM 00101 unknown parameter name解决方法 点击右边红色标题查看本文完整版 LRM 00101 unknown parameter name解决方法 SQL gt startup pfile d oracle
  • 2023华为od机试 Python【比赛冠军】

    题目 我们现在有若干个运动员 每个运动员有自己独特的id 每个运动员的能力不同 比赛按照如下规则进行 0号和1号 2号和3号 以此类推 在每一轮比赛中 获胜的进入下轮 输入描述 输入一行N个数字代表N的运动员的实力值 输出冠亚季军的id 用
  • 逻辑思维训练题

    1 估算你所在城市理发店的数量 https www jianshu com p 1431daad2c62 这种思维方式的核心 就是把你要探索的结果用一个数理公式展示出来 我们用最开始的煎饼摊例子来看怎么算 就要用到 利润 收入 变动成本 而
  • 用于包管理的基本命令APT-GET和APT-CACHE

    这篇文章解释你如何快速学习从命令行使用apt get和apt cache安装 移除 升级和搜索软件包 这篇文章提供一些有用命令 它们将帮助你在基于Debian Ubuntu的系统中处理包管理 apt get是什么 apt get工具是一个强
  • Flutter基础Dart单例的实现

    引言 在日常开发搭建基础框架时 常常用到全局使用的数据类或者工具类 比如日期工具类 地图工具类等 在项目一般使用几种单例类来分享心得 有类实例方式 工厂方式以及类静态方式 实例方式 使用DartPad cn网站来练习dart简单代码片段还是
  • [QT编程系列-40]:QML语言简介

    目录 第1章 简介 第2章 QT QML示例 第三章 QML的步骤 第1章 简介 QML Qt Meta Object Language 是Qt框架中用于构建用户界面的声明性语言 它是一个轻量级的语言 用于描述界面的结构和行为 使开发人员能
  • 樱花动漫中的视频下载分析

    昨天有个朋友问我樱花动漫中的视频怎么下载 那么今天我就写篇文章来专门分析下樱花动漫中的视频是怎么下载的 1 还是打开我们的马赛克视频助手 来分析樱花动漫的数据包 当然你们也没有用其他的抓包工具 不过我习惯了用这个 可以使用它的转到来源功能
  • EPI distortion correction形变矫正, eddy, fieldmap等五种不同方法

    EPI distortion correction形变矫正 1 topup eddy 2 fieldmap eddy 2 1 对mag做去脑壳 2 2 基于去过脑壳的mag 1volume bet nii gz数据 对fieldmap进行预
  • STM32 FLASH操作

    STM32 的闪存模块由 主存储器 信息块和闪存存储器接口寄存器等 3 部分组成 主存储器 该部分用来存放代码和数据常数 如 const 类型的数据 对于大容量产品 其被划分为 256 页 每页 2K 字节 注意 小容量和中容量产品则每页只
  • 解决iframe在ios中无法滚动的bug

    在解决iframe在ios无法滚动的bug中 需要在iframe外面包裹一层div 如下 div class scroll wrapper div 然后设置scroll wrapper的样式 给scroll wrapper添加 webkit
  • camunda 流程引擎如何开始并行任务,且有哪些实现方式?

    认识并行任务 在流程引擎开发中 稍微复杂一点的项目都会遇到并行任务 什么是并行任务呢 就是在完成一个流程节点后 下一步会同时开始多个任务 且任务与任务之间互不影响 这个说起来真的有点绕 刚开始我真不理解 试了好多次才想明白 下面就画2条不同