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

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

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

周周的JAVA技术栈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值