潘志宝
2024-11-11 31bd2c17088ec34072deabe106ff1d695c8b2b49
提交 | 用户 | 时间
e7c126 1 package com.iailab.module.bpm.service.task;
H 2
3 import com.iailab.framework.common.pojo.PageResult;
4 import com.iailab.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO;
5 import com.iailab.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceCancelReqVO;
6 import com.iailab.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceCreateReqVO;
7 import com.iailab.module.bpm.controller.admin.task.vo.instance.BpmProcessInstancePageReqVO;
8 import org.flowable.engine.delegate.event.FlowableCancelledEvent;
9 import org.flowable.engine.history.HistoricProcessInstance;
10 import org.flowable.engine.runtime.ProcessInstance;
11
12 import javax.validation.Valid;
13 import java.util.List;
14 import java.util.Map;
15 import java.util.Set;
16
17 import static com.iailab.framework.common.util.collection.CollectionUtils.convertMap;
18
19 /**
20  * 流程实例 Service 接口
21  *
22  * @author iailab
23  */
24 public interface BpmProcessInstanceService {
25
26     /**
27      * 获得流程实例
28      *
29      * @param id 流程实例的编号
30      * @return 流程实例
31      */
32     ProcessInstance getProcessInstance(String id);
33
34     /**
35      * 获得流程实例列表
36      *
37      * @param ids 流程实例的编号集合
38      * @return 流程实例列表
39      */
40     List<ProcessInstance> getProcessInstances(Set<String> ids);
41
42     /**
43      * 获得流程实例 Map
44      *
45      * @param ids 流程实例的编号集合
46      * @return 流程实例列表 Map
47      */
48     default Map<String, ProcessInstance> getProcessInstanceMap(Set<String> ids) {
49         return convertMap(getProcessInstances(ids), ProcessInstance::getProcessInstanceId);
50     }
51
52     /**
53      * 获得历史的流程实例
54      *
55      * @param id 流程实例的编号
56      * @return 历史的流程实例
57      */
58     HistoricProcessInstance getHistoricProcessInstance(String id);
59
60     /**
61      * 获得历史的流程实例列表
62      *
63      * @param ids 流程实例的编号集合
64      * @return 历史的流程实例列表
65      */
66     List<HistoricProcessInstance> getHistoricProcessInstances(Set<String> ids);
67
68     /**
69      * 获得历史的流程实例 Map
70      *
71      * @param ids 流程实例的编号集合
72      * @return 历史的流程实例列表 Map
73      */
74     default Map<String, HistoricProcessInstance> getHistoricProcessInstanceMap(Set<String> ids) {
75         return convertMap(getHistoricProcessInstances(ids), HistoricProcessInstance::getId);
76     }
77
78     /**
79      * 获得流程实例的分页
80      *
81      * @param userId    用户编号
82      * @param pageReqVO 分页请求
83      * @return 流程实例的分页
84      */
85     PageResult<HistoricProcessInstance> getProcessInstancePage(Long userId,
86                                                                @Valid BpmProcessInstancePageReqVO pageReqVO);
87
88     /**
89      * 创建流程实例(提供给前端)
90      *
91      * @param userId      用户编号
92      * @param createReqVO 创建信息
93      * @return 实例的编号
94      */
95     String createProcessInstance(Long userId, @Valid BpmProcessInstanceCreateReqVO createReqVO);
96
97     /**
98      * 创建流程实例(提供给内部)
99      *
100      * @param userId       用户编号
101      * @param createReqDTO 创建信息
102      * @return 实例的编号
103      */
104     String createProcessInstance(Long userId, @Valid BpmProcessInstanceCreateReqDTO createReqDTO);
105
106     /**
107      * 发起人取消流程实例
108      *
109      * @param userId      用户编号
110      * @param cancelReqVO 取消信息
111      */
112     void cancelProcessInstanceByStartUser(Long userId, @Valid BpmProcessInstanceCancelReqVO cancelReqVO);
113
114     /**
115      * 管理员取消流程实例
116      *
117      * @param userId           用户编号
118      * @param cancelReqVO 取消信息
119      */
120     void cancelProcessInstanceByAdmin(Long userId, BpmProcessInstanceCancelReqVO cancelReqVO);
121
122     /**
123      * 更新 ProcessInstance 拓展记录为取消
124      *
125      * @param event 流程取消事件
126      */
127     void updateProcessInstanceWhenCancel(FlowableCancelledEvent event);
128
129     /**
130      * 更新 ProcessInstance 拓展记录为完成
131      *
132      * @param instance 流程任务
133      */
134     void updateProcessInstanceWhenApprove(ProcessInstance instance);
135
136     /**
137      * 更新 ProcessInstance 拓展记录为不通过
138      *
139      * @param id     流程编号
140      * @param reason 理由。例如说,审批不通过时,需要传递该值
141      */
142     void updateProcessInstanceReject(String id, String reason);
143
144 }