activiti用户任务多实例实战教程(离职会签)

简介

在学习工作流的时候,我们可以想到这样一个场景,一个员工离职,可能要很多部门或领导盖章审批,像主管、部门经理、财务部、资产管理部等等。这种过程我们就可以称之为会签。

在activiti里,允许配置了多实例特性的活动在流程运行时以顺序或并行的方式创建活动实例。其中因为用户任务(UserTask)涉及到了“人”的这个重要特性,所以学会使用用户任务的多实例变得尤为重要。

下面会依据员工离职的流程,分别介绍用户任务多实例的顺序方式办理、并行方式办理以及如何自定义设置多实例的结束条件。

还是老规矩,本教程的代码是在《SpringBoot2.0整合activiti6示例》基础上写的,这边只贴本教程相关的代码,其它的代码就可以到之前的这篇博文去看。

顺序方式办理

顺序办理,就是员工要离职,需要拿着离职单一个个找主管、部门经理、财务部、资产管理部签字审批,它们的顺序可以颠倒,但是同一时刻只能是给一个领导或部门签字。

顺序执行流程图

activiti用户任务多实例顺序执行

bpmn文件 departureSequence.bpmn20.xml

测试代码

在浏览器里访问 http://localhost:5656/departureSequence

查看数据库表,说明顺序执行成功。

离职流程的多实例顺序执行的过程

离职流程的多实例顺序执行的过程

并行方式办理

并行办理,就是离职员工拿着请假单下的N个子项目纸条,送到各个部门领导那儿,让他们审批盖章,最后再统一汇总(例子可能不太好,就是那个意思)。

流程图

并行处理方式和顺序处理方式只有一个,isSequential=”true”还是”false”,其它配置都一样。

activiti用户任务多实例并行执行

bpmn文件 departureParallel.bpmn20.xml

测试代码

在浏览器里访问 http://localhost:5656/departureParallel

查看控制台,并行处理的话,它是一下子就生成了三个任务,然后它们的assignee分别就是代码里设置的Y00008、Y00009、Y00010。

离职流程的多实例并行执行的过程

设置结束条件(completion condition)

上面两个例子都是默认所有实例的任务都完成了,任务节点才结束,那如果想提前结束呢?

比方说,员工离职本来是需要三个部门领导审批盖章的,现在放松了,可以只一个部门领导审批(随机)盖章就OK了。

流程图

在completion condition栏里设置了如下代码,意思是当已完成的实例/所有实例大于或等于我们设置的比率(比方说30%),那就结束。

bpmn文件 departureSequenceCompleteCondition.bpmn20.xml

测试代码

在浏览器里访问 http://localhost:5656/departureSequenceCompleteCondition

查看控制台

总结

activiti用户任务多实例的员工请假教程结束,有问题或者写的不对的欢迎指正留言。

参考《Activiti实战》

0

发表评论

邮箱地址不会被公开。