潘志宝
9 天以前 6b13839488edcd06046e26a41fe897358176689c
提交 | 用户 | 时间
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;
bb2880 5 import com.iailab.module.bpm.controller.admin.task.vo.instance.*;
e7c126 6 import org.flowable.engine.history.HistoricProcessInstance;
H 7 import org.flowable.engine.runtime.ProcessInstance;
8
9 import javax.validation.Valid;
10 import java.util.List;
11 import java.util.Map;
12 import java.util.Set;
13
14 import static com.iailab.framework.common.util.collection.CollectionUtils.convertMap;
15
16 /**
17  * 流程实例 Service 接口
18  *
bb2880 19  * @author 芋道源码
e7c126 20  */
H 21 public interface BpmProcessInstanceService {
bb2880 22
H 23     // ========== Query 查询相关方法 ==========
e7c126 24
H 25     /**
26      * 获得流程实例
27      *
28      * @param id 流程实例的编号
29      * @return 流程实例
30      */
31     ProcessInstance getProcessInstance(String id);
32
33     /**
34      * 获得流程实例列表
35      *
36      * @param ids 流程实例的编号集合
37      * @return 流程实例列表
38      */
39     List<ProcessInstance> getProcessInstances(Set<String> ids);
40
41     /**
42      * 获得流程实例 Map
43      *
44      * @param ids 流程实例的编号集合
45      * @return 流程实例列表 Map
46      */
47     default Map<String, ProcessInstance> getProcessInstanceMap(Set<String> ids) {
48         return convertMap(getProcessInstances(ids), ProcessInstance::getProcessInstanceId);
49     }
50
51     /**
52      * 获得历史的流程实例
53      *
54      * @param id 流程实例的编号
55      * @return 历史的流程实例
56      */
57     HistoricProcessInstance getHistoricProcessInstance(String id);
58
59     /**
60      * 获得历史的流程实例列表
61      *
62      * @param ids 流程实例的编号集合
63      * @return 历史的流程实例列表
64      */
65     List<HistoricProcessInstance> getHistoricProcessInstances(Set<String> ids);
66
67     /**
68      * 获得历史的流程实例 Map
69      *
70      * @param ids 流程实例的编号集合
71      * @return 历史的流程实例列表 Map
72      */
73     default Map<String, HistoricProcessInstance> getHistoricProcessInstanceMap(Set<String> ids) {
74         return convertMap(getHistoricProcessInstances(ids), HistoricProcessInstance::getId);
75     }
76
77     /**
78      * 获得流程实例的分页
79      *
80      * @param userId    用户编号
81      * @param pageReqVO 分页请求
82      * @return 流程实例的分页
83      */
84     PageResult<HistoricProcessInstance> getProcessInstancePage(Long userId,
85                                                                @Valid BpmProcessInstancePageReqVO pageReqVO);
86
bb2880 87     // TODO @芋艿:重点在 review 下
H 88     /**
89      * 获取审批详情。
90      * <p>
91      * 可以是准备发起的流程、进行中的流程、已经结束的流程
92      *
93      * @param loginUserId  登录人的用户编号
94      * @param reqVO 请求信息
95      * @return 流程实例的进度
96      */
97     BpmApprovalDetailRespVO getApprovalDetail(Long loginUserId, @Valid BpmApprovalDetailReqVO reqVO);
98
99     /**
100      * 获取流程实例的 BPMN 模型视图
101      *
102      * @param id 流程实例的编号
103      * @return BPMN 模型视图
104      */
105     BpmProcessInstanceBpmnModelViewRespVO getProcessInstanceBpmnModelView(String id);
106
107     // ========== Update 写入相关方法 ==========
108
e7c126 109     /**
H 110      * 创建流程实例(提供给前端)
111      *
112      * @param userId      用户编号
113      * @param createReqVO 创建信息
114      * @return 实例的编号
115      */
116     String createProcessInstance(Long userId, @Valid BpmProcessInstanceCreateReqVO createReqVO);
117
118     /**
119      * 创建流程实例(提供给内部)
120      *
121      * @param userId       用户编号
122      * @param createReqDTO 创建信息
123      * @return 实例的编号
124      */
125     String createProcessInstance(Long userId, @Valid BpmProcessInstanceCreateReqDTO createReqDTO);
126
127     /**
128      * 发起人取消流程实例
129      *
130      * @param userId      用户编号
131      * @param cancelReqVO 取消信息
132      */
133     void cancelProcessInstanceByStartUser(Long userId, @Valid BpmProcessInstanceCancelReqVO cancelReqVO);
134
135     /**
136      * 管理员取消流程实例
137      *
bb2880 138      * @param userId      用户编号
e7c126 139      * @param cancelReqVO 取消信息
H 140      */
141     void cancelProcessInstanceByAdmin(Long userId, BpmProcessInstanceCancelReqVO cancelReqVO);
142
143     /**
bb2880 144      * 更新 ProcessInstance 为不通过
e7c126 145      *
bb2880 146      * @param processInstance 流程实例
H 147      * @param reason          理由。例如说,审批不通过时,需要传递该值
e7c126 148      */
bb2880 149     void updateProcessInstanceReject(ProcessInstance processInstance, String reason);
H 150
151     // ========== Event 事件相关方法 ==========
e7c126 152
H 153     /**
bb2880 154      * 处理 ProcessInstance 完成事件,例如说:审批通过、不通过、取消
e7c126 155      *
H 156      * @param instance 流程任务
157      */
bb2880 158     void processProcessInstanceCompleted(ProcessInstance instance);
e7c126 159
H 160 }