|
@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.lang.Assert;
|
|
|
import cn.hutool.core.util.RandomUtil;
|
|
|
import cn.iocoder.yudao.module.bpm.framework.flowable.core.candidate.BpmTaskCandidateInvoker;
|
|
|
+import cn.iocoder.yudao.module.bpm.service.task.BpmTaskAssignRuleService;
|
|
|
import lombok.Setter;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.flowable.bpmn.model.UserTask;
|
|
@@ -14,6 +15,7 @@ import org.flowable.engine.impl.cfg.ProcessEngineConfigurationImpl;
|
|
|
import org.flowable.engine.impl.util.TaskHelper;
|
|
|
import org.flowable.task.service.TaskService;
|
|
|
import org.flowable.task.service.impl.persistence.entity.TaskEntity;
|
|
|
+import org.springframework.context.annotation.Lazy;
|
|
|
|
|
|
import java.util.List;
|
|
|
import java.util.Set;
|
|
@@ -30,6 +32,9 @@ public class BpmUserTaskActivityBehavior extends UserTaskActivityBehavior {
|
|
|
|
|
|
@Setter
|
|
|
private BpmTaskCandidateInvoker taskCandidateInvoker;
|
|
|
+ @Setter
|
|
|
+ @Lazy // 解决循环依赖
|
|
|
+ private BpmTaskAssignRuleService bpmTaskRuleService;
|
|
|
|
|
|
public BpmUserTaskActivityBehavior(UserTask userTask) {
|
|
|
super(userTask);
|
|
@@ -55,7 +60,9 @@ public class BpmUserTaskActivityBehavior extends UserTaskActivityBehavior {
|
|
|
|
|
|
// 情况二,如果非多实例的任务,则计算任务处理人
|
|
|
// 第一步,先计算可处理该任务的处理人们
|
|
|
- Set<Long> candidateUserIds = taskCandidateInvoker.calculateUsers(execution);
|
|
|
+// Set<Long> candidateUserIds = taskCandidateInvoker.calculateUsers(execution);
|
|
|
+ Set<Long> candidateUserIds = bpmTaskRuleService.calculateTaskCandidateUsers(execution);
|
|
|
+
|
|
|
// 第二步,后随机选择一个任务的处理人
|
|
|
// 疑问:为什么一定要选择一个任务处理人?
|
|
|
// 解答:项目对 bpm 的任务是责任到人,所以每个任务有且仅有一个处理人。
|