| | |
| | | import org.flowable.engine.impl.bpmn.behavior.AbstractBpmnActivityBehavior; |
| | | import org.flowable.engine.impl.bpmn.behavior.SequentialMultiInstanceBehavior; |
| | | |
| | | import java.util.LinkedHashSet; |
| | | import java.util.Set; |
| | | |
| | | /** |
| | |
| | | super.collectionElementVariable = FlowableUtils.formatExecutionCollectionElementVariable(execution.getCurrentActivityId()); |
| | | |
| | | // 第二步,获取任务的所有处理人 |
| | | // 不使用 execution.getVariable 原因:目前依次审批任务回退后 collectionVariable 变量没有清理, 如果重新进入该任务不会重新分配审批人 |
| | | @SuppressWarnings("unchecked") |
| | | Set<Long> assigneeUserIds = (Set<Long>) execution.getVariable(super.collectionVariable, Set.class); |
| | | Set<Long> assigneeUserIds = (Set<Long>) execution.getVariableLocal(super.collectionVariable, Set.class); |
| | | if (assigneeUserIds == null) { |
| | | assigneeUserIds = taskCandidateInvoker.calculateUsersByTask(execution); |
| | | execution.setVariable(super.collectionVariable, assigneeUserIds); |
| | | if (CollUtil.isEmpty(assigneeUserIds)) { |
| | | // 特殊:如果没有处理人的情况下,至少有一个 null 空元素,避免自动通过! |
| | | // 这样,保证在 BpmUserTaskActivityBehavior 至少创建出一个 Task 任务 |
| | | // 用途:1)审批人为空时;2)审批类型为自动通过、自动拒绝时 |
| | | assigneeUserIds = SetUtils.asSet((Long) null); |
| | | } |
| | | execution.setVariableLocal(super.collectionVariable, assigneeUserIds); |
| | | } |
| | | return assigneeUserIds.size(); |
| | | } |