背景:
由於在日常情況下,我們的多實例要動態添加人員的場景,有沒有這樣的api呢?新的flowable有這樣的功能。
具體實現
xml
<userTask id="miTasks" name="My Task ${loopCounter}" activiti:assignee="${assignee}">
<multiInstanceLoopCharacteristics isSequential="false">
<loopDataInputRef>assigneeList</loopDataInputRef>
<inputDataItem name="assignee" />
<completionCondition>${nrOfCompletedInstances/nrOfInstances >= 0.6 }</completionCondition>
</multiInstanceLoopCharacteristics>
</userTask>
具體實現
List<String> assigneeList = Arrays.asList("kermit", "gonzo", "mispiggy", "fozzie", "bubba"); String procId = runtimeService.startProcessInstanceByKey("miParallelUserTasksBasedOnCollection", CollectionUtil.singletonMap("assigneeList", assigneeList)).getId(); List<org.flowable.task.api.Task> tasks = taskService.createTaskQuery().orderByTaskAssignee().asc().list(); assertEquals(5, tasks.size()); assertEquals("bubba", tasks.get(0).getAssignee()); assertEquals("fozzie", tasks.get(1).getAssignee()); assertEquals("gonzo", tasks.get(2).getAssignee()); assertEquals("kermit", tasks.get(3).getAssignee()); assertEquals("mispiggy", tasks.get(4).getAssignee()); runtimeService.addMultiInstanceExecution("miTasks", procId, Collections.singletonMap("assignee", (Object) "johndoe")); tasks = taskService.createTaskQuery().orderByTaskAssignee().asc().list(); assertEquals(6, tasks.size());
說明:
runtimeService.addMultiInstanceExecution(要加簽的節點id,流程實例id, Collections.singletonMap("單個對象的別名", (Object) "對象值"));