activiti用户任务Multi instance用法
解决方法:
Sequential:表示该活动的实例被串行或并行执行,勾选就是任务排队串行。
loopCardinality:任务应该循环的次数,假如设置3,就会最多生成三个任务,一般使用Collection时就不用指定loopCardinality,因为activiti会根据Collection元素个数生成相同数目的任务。
Completion Condition:多个用户任务完成流转到下一个流程节点的条件,设置为${nrOfCompletedInstances/nrOfInstances == 1 }表示所有任务都被执行才流转到下一个节点,${nrOfCompletedInstances/nrOfInstances <= 0.5 }表示假如总共4个任务,执行了2个任务之后就流转到下一个节点。
Collection:处理任务的人员集合,可在流程启动时设置,如果没配置loopCardinality的话集合有多少个元素就会生成多少个任务。
ElementVariable:就是Collection集合中的每一个元素的变量,可作为流程变量使用。
loopCounter:已经循环的次数。
nrOfInstances:任务总数
nrOfActiveInstances:尚未完成的任务数,对于勾选Sequential的多任务,该值始终为1。
nrOfCompletedInstances:已经完成的任务数。
这些参数可以在act_ru_variable中看得到。
例如Collection设置为:assigneeList,ElementVariable为assignee,Assignee为${assignee}
Map variableMap = new HashMap();
ArrayList<String> assigneeList = new ArrayList<>();
assigneeList.add("1");
assigneeList.add("2");
assigneeList.add("3");
//就会生成3个用户任务
variableMap.put("assigneeList",assigneeList);
ProcessInstance pi = runtimeService.startProcessInstanceByKey("myProcess_1", variableMap);