1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > Activiti7工作流引擎:进阶篇(十一) 会签

Activiti7工作流引擎:进阶篇(十一) 会签

时间:2022-12-06 13:18:02

相关推荐

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}

@Testpublic 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);}

// 第一负责人完成审核plete("5020");

// 第二个负责人再完成,3个人有2个人完成就超过一半了,所以这个UserTask就算过了,进入下一个plete("5023");

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。