1. 程式人生 > >flowable 多實例動態添加人

flowable 多實例動態添加人

節點 character nbsp don opd arrays str false proc

背景:

由於在日常情況下,我們的多實例要動態添加人員的場景,有沒有這樣的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) "對象值"));

flowable 多實例動態添加人