Activiti 多个并发子流程的应用

本文介绍了如何使用Activiti实现多个并发子流程的场景,特别是在资金计划审批流程中的应用。通过Activiti的多实例特性,支持并行处理多个部门的资金计划审批,然后提交上级领导审批。讲解了多实例任务的类型,包括User task、Script task等,并对比了并行和串行的区别。重点展示了如何配置多实例任务,特别是子流程的并行实例,以及在任务创建监听器中分配任务执行人的方法。
摘要由CSDN通过智能技术生成

应用场景:

 

多个部门发起资金计划,最后统一到财务部审批,每个部门发起资金计划是一个子流程,财务部审批是多个部门的计划同时审批,审批完成后,再提交上级领导审批。

 

流程如下:

并发子流程

 

要解决以上问题,需要实现多个子流程并行处理的功能。在Activiti5有一个比较强的节点属性就是多实例,它可以支持多实例的子流程,多实例任务,多实体脚本等。目前支持多实例的节点类型有:

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Activiti中,可以使用多实例流程来处理并发任务。以下是一个简单的示例: 假设我们有一个主流程,其中包含一个流程流程中有一个并发多实例任务,需要同时处理多个任务。 1. 首先,在流程中创建一个并发多实例任务,可以使用以下XML代码实现: ``` <subProcess id="subProcess1" name="Sub Process"> <multiInstanceLoopCharacteristics isSequential="false"> <loopCardinality>3</loopCardinality> <completionCondition>${nrOfCompletedInstances/nrOfInstances >= 1}</completionCondition> </multiInstanceLoopCharacteristics> <userTask id="subProcessTask" name="Sub Process Task" /> </subProcess> ``` 上面的代码中,`multiInstanceLoopCharacteristics` 元素表示这是一个多实例任务,`isSequential="false"` 表示任务是并行处理的,`loopCardinality` 表示需要处理的任务数量,这里设置为3。`completionCondition` 表示任务完成的条件,这里设置为当所有任务都完成时,流程才算完成。 2. 在主流程中调用流程,可以使用以下XML代码实现: ``` <callActivity id="subProcessCall" name="Sub Process Call" calledElement="subProcess1" /> ``` 上面的代码中,`calledElement` 属性指定了被调用的流程的ID,这里为 `subProcess1`。 3. 在流程中处理多实例任务,可以使用以下Java代码实现: ``` public class SubProcessTaskDelegate implements JavaDelegate { @Override public void execute(DelegateExecution execution) throws Exception { // 获取当前任务的ID String subTaskId = execution.getCurrentActivityId(); // 处理任务 System.out.println("Processing sub task " + subTaskId); } } ``` 上面的代码中,`execute` 方法是任务处理的入口。可以通过 `getCurrentActivityId` 方法获取当前任务的ID,然后处理任务。 以上就是在Activiti中处理并发多实例流程任务的简单示例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值