Activiti7工作流引擎:进阶篇 会签
Posted vbirdbest
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Activiti7工作流引擎:进阶篇 会签相关的知识,希望对你有一定的参考价值。
之前的任务负责人Assignee都是一个,而任务可以有多个人有权限审批,只要其中有一部分人完成审批任务就算整个任务完成。同一个任务需要多个负责人来完成被称之为“会签”。 会签就是一种
投票
,满足投票人数就过。
会签是通过多实例Multi Instance
来设置的:
- Sequential:执行顺序,true表示多实例顺序执行,false表示多实例并行。
- Loop Cardinality:循环基数,选填,会签人数。
- Completion Condition:完成条件,Activiti预定义了3个变量,可以在UEL表达式中直接使用,可以根据表达式设置按数量、按比例、一票通过、一票否定等条件。
- nrOfInstances:总实例数,Collection中的数量。
- nrOfCompletedInstances:已经完成的实例数。
- nrOfActiveInstances:还没有完成的实例数。
- Collection:Assignee集合,可以在启动实例时赋值变量。
- Element Variable:元素变量,必须和Assignee一样。
- Assignee:负责人占位符,会通过Collection自动赋值的。
// 一个人完成审批,整个任务就算通过
$nrOfCompletedInstances==1
// 所有人完成审批,整个任务才算过
$nrOfCompletedInstances==nrOfInstances
// 一半人以上完成审批整个任务才算通过
$nrOfCompletedInstances/nrOfInstances > 0.5
@Test
public void testStart()
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
Deployment deploy = processEngine.getRepositoryService()
.createDeployment()
.addClasspathResource("bpmn/multiInstance.bpmn")
.name("会签")
.deploy();
Map<String, Object> variables = new HashMap<>();
variables.put("approveUserList", Arrays.asList("zhagnsan", "lisi", "wangwu"));
processEngine.getRuntimeService()
.startProcessInstanceByKey("multiInstance", variables);
// 第一负责人完成审核
taskService.complete("5020");
// 第二个负责人再完成,3个人有2个人完成就超过一半了,所以这个UserTask就算过了,进入下一个UserTask
taskService.complete("5023");
以上是关于Activiti7工作流引擎:进阶篇 会签的主要内容,如果未能解决你的问题,请参考以下文章
Activiti7工作流引擎:进阶篇 Activiti7与Spring整合
Activiti7工作流引擎:进阶篇 ProcessRuntime和TaskRuntime
Activiti7工作流引擎:进阶篇 SpringBoot整合工作流Activiti7