| | |
| | | package com.iailab.module.bpm.framework.flowable.core.behavior; |
| | | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import com.iailab.framework.common.util.collection.SetUtils; |
| | | import com.iailab.module.bpm.framework.flowable.core.candidate.BpmTaskCandidateInvoker; |
| | | import com.iailab.module.bpm.framework.flowable.core.util.FlowableUtils; |
| | | import lombok.Setter; |
| | |
| | | super.collectionElementVariable = FlowableUtils.formatExecutionCollectionElementVariable(execution.getCurrentActivityId()); |
| | | |
| | | // 第二步,获取任务的所有处理人 |
| | | Set<Long> assigneeUserIds = new LinkedHashSet<>(taskCandidateInvoker.calculateUsers(execution)); // 保证有序!!! |
| | | execution.setVariable(super.collectionVariable, assigneeUserIds); |
| | | @SuppressWarnings("unchecked") |
| | | Set<Long> assigneeUserIds = (Set<Long>) execution.getVariable(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); |
| | | } |
| | | } |
| | | return assigneeUserIds.size(); |
| | | } |
| | | |
| | | } |