潘志宝
9 天以前 9d5be382e52f9ac57199d5ef75cc23f925a4cdb0
提交 | 用户 | 时间
e7c126 1 package com.iailab.module.bpm.framework.flowable.core.candidate;
H 2
3 import com.iailab.module.bpm.framework.flowable.core.enums.BpmTaskCandidateStrategyEnum;
bb2880 4 import org.flowable.bpmn.model.BpmnModel;
e7c126 5 import org.flowable.engine.delegate.DelegateExecution;
H 6
bb2880 7 import java.util.Map;
e7c126 8 import java.util.Set;
H 9
10 /**
11  * BPM 任务的候选人的策略接口
bb2880 12  * <p>
e7c126 13  * 例如说:分配审批人
H 14  *
bb2880 15  * @author hou
e7c126 16  */
H 17 public interface BpmTaskCandidateStrategy {
18
19     /**
20      * 对应策略
21      *
22      * @return 策略
23      */
24     BpmTaskCandidateStrategyEnum getStrategy();
25
26     /**
27      * 校验参数
28      *
29      * @param param 参数
30      */
31     void validateParam(String param);
32
33     /**
34      * 是否一定要输入参数
35      *
36      * @return 是否
37      */
38     default boolean isParamRequired() {
39         return true;
40     }
41
bb2880 42     /**
H 43      * 基于候选人参数,获得任务的候选用户们
44      *
45      * 注意:实现 calculateUsers 系列方法时,有两种选择:
46      * 1. 只重写 calculateUsers 默认方法
47      * 2. 都重写 calculateUsersByTask 和 calculateUsersByActivity 两个方法
48      *
49      * @param param 执行任务
50      * @return 用户编号集合
51      */
52     default Set<Long> calculateUsers(String param) {
53         throw new UnsupportedOperationException("该分配方法未实现,请检查!");
54     }
55
56     /**
57      * 基于【执行任务】,获得任务的候选用户们
58      *
59      * @param execution 执行任务
60      * @return 用户编号集合
61      */
62     default Set<Long> calculateUsersByTask(DelegateExecution execution, String param) {
63         return calculateUsers(param);
64     }
65
66     /**
67      * 基于【流程活动】,获得任务的候选用户们
68      * <p>
69      * 目的:用于获取未执行节点的候选用户们
70      *
71      * @param bpmnModel 流程图
72      * @param activityId 活动 ID (对应 Bpmn XML id)
73      * @param param     节点的参数
74      * @param startUserId  流程发起人编号
75      * @param processDefinitionId 流程定义编号
76      * @param processVariables 流程变量
77      * @return 用户编号集合
78      */
79     @SuppressWarnings("unused")
80     default Set<Long> calculateUsersByActivity(BpmnModel bpmnModel, String activityId, String param,
81                                                Long startUserId, String processDefinitionId, Map<String, Object> processVariables) {
82         return calculateUsers(param);
83     }
84
e7c126 85 }