潘志宝
9 天以前 6b13839488edcd06046e26a41fe897358176689c
提交 | 用户 | 时间
e7c126 1 package com.iailab.module.bpm.service.definition;
H 2
3 import com.iailab.framework.common.pojo.PageResult;
bb2880 4 import com.iailab.module.bpm.controller.admin.definition.vo.model.BpmModelMetaInfoVO;
e7c126 5 import com.iailab.module.bpm.controller.admin.definition.vo.process.BpmProcessDefinitionPageReqVO;
H 6 import com.iailab.module.bpm.dal.dataobject.definition.BpmFormDO;
7 import com.iailab.module.bpm.dal.dataobject.definition.BpmProcessDefinitionInfoDO;
8 import com.iailab.module.bpm.service.definition.dto.BpmModelMetaInfoRespDTO;
9 import org.flowable.bpmn.model.BpmnModel;
10 import org.flowable.engine.repository.Deployment;
11 import org.flowable.engine.repository.Model;
12 import org.flowable.engine.repository.ProcessDefinition;
13
14 import java.util.Collection;
15 import java.util.List;
16 import java.util.Map;
17 import java.util.Set;
18
19 import static com.iailab.framework.common.util.collection.CollectionUtils.convertMap;
20
21 /**
22  * Flowable流程定义接口
23  *
24  * @author yunlong.li
25  * @author ZJQ
26  * @author iailab
27  */
28 public interface BpmProcessDefinitionService {
29
30     /**
31      * 获得流程定义分页
32      *
33      * @param pageReqVO 分页入参
34      * @return 流程定义 Page
35      */
36     PageResult<ProcessDefinition> getProcessDefinitionPage(BpmProcessDefinitionPageReqVO pageReqVO);
37
38     /**
39      * 获得流程定义列表
40      *
41      * @param suspensionState 中断状态
42      * @return 流程定义列表
43      */
bb2880 44     List<ProcessDefinition> getProcessDefinitionListBySuspensionState(Integer suspensionState, String categoryId);
e7c126 45
H 46     /**
47      * 基于流程模型,创建流程定义
48      *
49      * @param model 流程模型
50      * @param modelMetaInfo 流程模型元信息
51      * @param bpmnBytes BPMN XML 字节数组
bb2880 52      * @param simpleJson SIMPLE Model JSON
e7c126 53      * @param form 表单
H 54      * @return 流程编号
55      */
bb2880 56     String createProcessDefinition(Model model, BpmModelMetaInfoVO modelMetaInfo,
H 57                                    byte[] bpmnBytes, String simpleJson, BpmFormDO form);
e7c126 58
H 59     /**
60      * 更新流程定义状态
61      *
62      * @param id 流程定义的编号
63      * @param state 状态
64      */
65     void updateProcessDefinitionState(String id, Integer state);
bb2880 66
H 67     /**
68      * 更新模型编号
69      *
70      * @param modelId 流程定义编号
71      * @param sort 排序
72      */
73     void updateProcessDefinitionSortByModelId(String modelId, Long sort);
e7c126 74
H 75     /**
76      * 获得流程定义对应的 BPMN
77      *
78      * @param id 流程定义编号
79      * @return BPMN
80      */
81     BpmnModel getProcessDefinitionBpmnModel(String id);
82
83     /**
84      * 获得流程定义的信息
85      *
86      * @param id 流程定义编号
87      * @return 流程定义信息
88      */
89     BpmProcessDefinitionInfoDO getProcessDefinitionInfo(String id);
90
91     /**
92      * 获得流程定义的信息 List
93      *
94      * @param ids 流程定义编号数组
95      * @return 流程额定义信息数组
96      */
97     List<BpmProcessDefinitionInfoDO> getProcessDefinitionInfoList(Collection<String> ids);
98
99     default Map<String, BpmProcessDefinitionInfoDO> getProcessDefinitionInfoMap(Set<String> ids) {
100         return convertMap(getProcessDefinitionInfoList(ids), BpmProcessDefinitionInfoDO::getProcessDefinitionId);
101     }
102
103     /**
104      * 获得流程定义编号对应的 ProcessDefinition
105      *
106      * @param id 流程定义编号
107      * @return 流程定义
108      */
109     ProcessDefinition getProcessDefinition(String id);
110
111     /**
112      * 获得 ids 对应的 ProcessDefinition 数组
113      *
114      * @param ids 编号的数组
115      * @return 流程定义的数组
116      */
117     List<ProcessDefinition> getProcessDefinitionList(Set<String> ids);
118
119     default Map<String, ProcessDefinition> getProcessDefinitionMap(Set<String> ids) {
120         return convertMap(getProcessDefinitionList(ids), ProcessDefinition::getId);
121     }
122
123     /**
124      * 获得 deploymentId 对应的 ProcessDefinition
125      *
126      * @param deploymentId 部署编号
127      * @return 流程定义
128      */
129     ProcessDefinition getProcessDefinitionByDeploymentId(String deploymentId);
130
131     /**
132      * 获得 deploymentIds 对应的 ProcessDefinition 数组
133      *
134      * @param deploymentIds 部署编号的数组
135      * @return 流程定义的数组
136      */
137     List<ProcessDefinition> getProcessDefinitionListByDeploymentIds(Set<String> deploymentIds);
138
139     /**
140      * 获得流程定义标识对应的激活的流程定义
141      *
142      * @param key 流程定义的标识
143      * @return 流程定义
144      */
145     ProcessDefinition getActiveProcessDefinition(String key);
146
147     /**
bb2880 148      * 判断用户是否可以使用该流程定义,进行流程的发起
H 149      *
150      * @param processDefinition 流程定义
151      * @param userId 用户编号
152      * @return 是否可以发起流程
153      */
154     boolean canUserStartProcessDefinition(BpmProcessDefinitionInfoDO processDefinition, Long userId);
155
156     /**
e7c126 157      * 获得 ids 对应的 Deployment Map
H 158      *
159      * @param ids 部署编号的数组
160      * @return 流程部署 Map
161      */
162     default Map<String, Deployment> getDeploymentMap(Set<String> ids) {
163         return convertMap(getDeploymentList(ids), Deployment::getId);
164     }
165
166     /**
167      * 获得 ids 对应的 Deployment 数组
168      *
169      * @param ids 部署编号的数组
170      * @return 流程部署的数组
171      */
172     List<Deployment> getDeploymentList(Set<String> ids);
173
174     /**
175      * 获得 id 对应的 Deployment
176      *
177      * @param id 部署编号
178      * @return 流程部署
179      */
180     Deployment getDeployment(String id);
181
182 }