Мы создаем POC для проекта, где у нас будет 4 этапа утверждения.Допустим, 4 этапа:
Бухгалтер
Менеджер
Владелец
Начальник поставки
Процесс запущен, и сейчас задача пользователя, т. Е. Утверждение, находится на уровне бухгалтера.Мультиэкземпляр будет зацикливаться в коллекции, возвращаемой из класса Java Service.Пока цикл работает для этого конкретного набора пользователей, я хочу добавить в него нового пользователя.Я могу добавить больше пользователей в коллекции менеджера, владельца и руководителя доставки, поскольку этап утверждения находится на уровне бухгалтера, а вызов сбора для этих утверждающих еще не выполнен.
My Process XML:
<startEvent id="startEvent1"></startEvent>
<userTask id="accountantApproval" name="Accountant Approval" activiti:assignee="${accountant}">
<extensionElements>
<activiti:formProperty id="accountantApprovalValue" name="Accountant Approval Value" type="enum" required="true"></activiti:formProperty>
<modeler:initiator-can-complete xmlns:modeler="http://activiti.com/modeler"><![CDATA[false]]></modeler:initiator-can-complete>
</extensionElements>
<multiInstanceLoopCharacteristics isSequential="true" activiti:collection="${myService.fetchEmployeesByRole('Accountant')}" activiti:elementVariable="accountant">
<completionCondition>${status != 'Submit'}</completionCondition>
</multiInstanceLoopCharacteristics>
</userTask>
<userTask id="managerApproval" name="Manager Approval" activiti:assignee="${manager}">
<extensionElements>
<modeler:initiator-can-complete xmlns:modeler="http://activiti.com/modeler"><![CDATA[false]]></modeler:initiator-can-complete>
</extensionElements>
<multiInstanceLoopCharacteristics isSequential="true" activiti:collection="${myService.fetchEmployeesByRole('Manager')}" activiti:elementVariable="manager">
<completionCondition>${status != 'Submit'}</completionCondition>
</multiInstanceLoopCharacteristics>
</userTask>
<exclusiveGateway id="accountantEXOR" name="Accountant EXOR"></exclusiveGateway>
<serviceTask id="accountantRejectService" name="Accountant Reject Service" activiti:class="com.example.demo.RejectService"></serviceTask>
<exclusiveGateway id="managerEXOR" name="Manager EXOR"></exclusiveGateway>
<serviceTask id="managerRejectService" name="Manager Reject Service" activiti:class="com.example.demo.RejectService"></serviceTask>
<endEvent id="endProcess" name="End Process">
<terminateEventDefinition></terminateEventDefinition>
</endEvent>
<userTask id="OwnerApproval" name="Owner Approval" activiti:assignee="${accountant}">
<extensionElements>
<activiti:formProperty id="sid-52D1F400-4813-4B2F-856D-61FE4C41C6FEValue" name="Accountant Approval Value" type="enum" required="true"></activiti:formProperty>
<modeler:initiator-can-complete xmlns:modeler="http://activiti.com/modeler"><![CDATA[false]]></modeler:initiator-can-complete>
</extensionElements>
<multiInstanceLoopCharacteristics isSequential="false" activiti:collection="${myService.fetchEmployeesByRole('Owner')}" activiti:elementVariable="owner">
<completionCondition>${status == 'Submit'}</completionCondition>
</multiInstanceLoopCharacteristics>
</userTask>
Теперь предположим, чтоесли процесс начался и находится на уровне бухгалтера.Мультиэкземпляр будет извлекать сотрудников из класса обслуживания и помещать его в коллекцию, и он начнет циклически проходить через него.Допустим, это приносит 2 сотрудника David & Sam.Дэвид утверждает задачу, и она переходит к следующему утверждению, то есть Сэму.Сэм хочет добавить еще одного бухгалтера в цикл.
Есть ли способ добавить новых пользователей в текущую коллекцию циклов выполнения, т. Е. В коллекцию бухгалтеров?Если да, пожалуйста, предложите способ, желательно с использованием Java.
Если мы не можем добавить пользователя в коллекцию, есть ли способ, которым мы можем создать новое пользовательское задание и назначить его текущему процессу?Поэтому, как только цикл бухгалтера завершен, прежде чем он перейдет к следующему этапу утверждения, он должен завершить вновь созданную пользовательскую задачу.