IProcessManager.java
10.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
package com.hotent.runtime.manager;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.hotent.base.model.CommonResult;
import com.hotent.base.query.PageList;
import com.hotent.bpm.api.model.process.inst.BpmProcessInstance;
import com.hotent.bpm.api.model.process.task.BpmTaskOpinion;
import com.hotent.bpm.persistence.model.BpmIdentityResult;
import com.hotent.bpm.persistence.model.DefaultBpmProcessInstance;
import com.hotent.bpm.persistence.model.DefaultBpmTask;
import com.hotent.runtime.params.BpmCheckOpinionVo;
import com.hotent.runtime.params.BpmImageParamObject;
import com.hotent.runtime.params.BpmNodeDefVo;
import com.hotent.runtime.params.BpmTaskResult;
import com.hotent.runtime.params.DefOtherParam;
import com.hotent.runtime.params.DoEndParamObject;
import com.hotent.runtime.params.DoNextParamObject;
import com.hotent.runtime.params.StartFlowParamObject;
import com.hotent.runtime.params.StartResult;
/**
* 流程控制接口
*
* @company 广州宏天软件股份有限公司
* @author zhangxianwen
* @email zhangxw@jee-soft.cn
* @date 2018年6月28日
*/
public interface IProcessManager
{
/**
* 客户端采用异步线程的方式启动流程
* @param startFlowParamObject
* @return
* @throws Exception
*/
CompletableFuture<StartResult> start(StartFlowParamObject startFlowParamObject) throws Exception;
/**
* 客户端提交数据,执行流程往下跳转
* @param doNextParamObject
* @return
* @throws Exception
*/
CommonResult<String> doNext(DoNextParamObject doNextParamObject) throws Exception;
/**
* 人工终止流程
* 参数格式:{account:"",taskId:"",endReason:"",messageType:""}
* account:用户账号 必填
* taskId:任务ID 必填
* endReason:终止原因 必填
* messageType:消息通知类型 非必填,默认邮件
* @param flowParamObject
* @return
* @throws Exception
*/
CommonResult<String> doEndProcess(DoEndParamObject doEndParamObject) throws Exception;
/**
* 人工终止恢复
* @param doEndParamObject
* @return
* @throws Exception
*/
CommonResult<String> renewProcess(String instId,String reason) throws Exception;
/**
* 按流程实例ID或任务实例ID取得某个流程的审批历史
* @param procInstId 实例id
* @param taskId 任务id
* @return
* @throws Exception
*/
List<BpmTaskOpinion> getHistoryOpinion(String procInstId,String taskId) throws Exception;
/**
* 按Activiti实例Id取得对应流程的审批历史,act_ru_task表的PROC_INST_ID_值
* @param actTaskId
* @return
* @throws Exception
*/
List<BpmCheckOpinionVo> getProcessOpinionByActInstId(String actTaskId) throws Exception;
/**
* 根据任务ID获取可驳回的节点
* @param taskId
* @param rejectType
* @return
* @throws Exception
*/
List<BpmNodeDefVo> getEnableRejectNode(String taskId,String rejectType) throws Exception;
/**
* 根据任务ID或流程实例ID获取BusinessKey(流程表单为URL表单的情况)
* @param procInstanceId 实例id
* @param taskId 任务id
* @return
* @throws NullPointerException
*/
CommonResult<String> getBusinessKey(String procInstanceId,String taskId) throws NullPointerException;
/**
* 根据BussinessKey获取流程实例ID
* @param businessKey
* @return
* @throws NullPointerException
*/
CommonResult<String> getProcInstId(String businessKey) throws NullPointerException;
/**
* 通过表单保存草稿
* @param flowParamObject
* @return
* @throws NullPointerException
*/
StartResult saveDraft(StartFlowParamObject startFlowParamObject) throws Exception;
/**
* 设置流程的其他参数
* @param defOtherParam
* @return
* @throws Exception
*/
CommonResult<String> setDefOtherParam(DefOtherParam defOtherParam) throws Exception;
/**
* 根据任务id获取预先设置的审批用语列表
* @param taskId
* @return
* @throws Exception
*/
List<String> getApprovalItems(String taskId) throws Exception;
/**
* 根据任务id获取其处理人
* @param taskId
* @return
* @throws Exception
*/
List<BpmIdentityResult> getNodeUsers(String taskId) throws Exception;
/**
* 根据流程taskId获取对应的流程运行对象
* @param taskId
* @return
* @throws Exception
*/
BpmProcessInstance getProcessRunByTaskId(String taskId) throws Exception;
/**
* 根据instId和nodeId获取节点的状态
* @param runId
* @param nodeId
* @return
* @throws Exception
*/
String getStatusByRunidNodeId(String instId,String nodeId) throws Exception;
/**
* 根据任务ID获取流程任务实例
* @param taskId
* @return
* @throws Exception
*/
BpmTaskResult getTaskByTaskId(String taskId) throws Exception;
/**
* 根据taskid获取taskName
* @param taskId
* @return
* @throws Exception
*/
String getTaskNameByTaskId(String taskId) throws Exception;
/**
* 通过businessKey获取运行实例
* @param businessKey
* @return
* @throws Exception
*/
DefaultBpmProcessInstance getInstancetByBusinessKey(String businessKey) throws Exception;
/**
* 通过businessKey和sysCode获取运行实例
* @param businessKey
* @param sysCode
* @return
* @throws Exception
*/
DefaultBpmProcessInstance getInstancetByBizKeySysCode(String businessKey,String sysCode) throws Exception;
/**
* 根据实例id获取实例对象
* @param instId
* @return
* @throws Exception
*/
BpmProcessInstance getInstanceByInstId(String instId) throws Exception;
/**
* 根据xml获取实例列表
* @param xml
* @return
* @throws Exception
*/
PageList<DefaultBpmProcessInstance> getInstanceListByXml(String xml) throws Exception;
/**
* 取得某个运行流程实例对应的任务列表
* @param instId
* @return
* @throws Exception
*/
PageList<DefaultBpmTask> getTasksByInstId(String instId) throws Exception;
/**
* 根据任务id获取任务的后续节点
* @param taskId
* @return
* @throws Exception
*/
List<BpmNodeDefVo> getTaskOutNodes(String taskId) throws Exception;
/**
* 根据任务id获取在线表单地址
* @param taskId
* @return
* @throws Exception
*/
String getDetailUrl(String taskId) throws Exception;
/**
* 根据任务taskId,设置流程变量(全局)
* @param taskId
* @param variables
* @return
* @throws Exception
*/
CommonResult<String> setTaskVar(String taskId,Map<String,Object> variables) throws Exception;
/**
* 设置任务节点本地变量
* @param taskId
* @param variables
* @return
* @throws Exception
*/
CommonResult<String> setTaskVarLocal(String taskId,Map<String,Object> variables) throws Exception;
/**
* 通过流程实例id挂起流程
* @param instId
* @return
* @throws Exception
*/
CommonResult<String> forbiddenInstance(String instId) throws Exception;
/**
* 通过流程实例id取消挂起流程实例
* @param instId
* @return
* @throws Exception
*/
CommonResult<String> unForbiddenInstance(String instId) throws Exception;
/**
* 根据父流程实例ID和节点定义ID查子流程实例
* @param parentInstId
* @param superNodeId
* @return
* @throws Exception
*/
List<BpmProcessInstance> getBpmProcessByParentIdAndSuperNodeId(String parentInstId,String superNodeId)throws Exception;
/**
* 通过父流程实例ID和实例的状态获取实例列表
* @param parentInstId
* @param status
* @return
* @throws Exception
*/
List<DefaultBpmProcessInstance> getInstancesByParentId(String parentInstId,String status) throws Exception;
/**
* 通过父流程定义ID和实例的状态获取实例列表
* @param defId
* @param status
* @return
* @throws Exception
*/
List<DefaultBpmProcessInstance> getInstancesByDefId(String defId,String status) throws Exception;
/**
* 根据流程实例ID查询顶级的流程实例。
* @param instId
* @return
* @throws Exception
*/
BpmProcessInstance getTopBpmProcessInstance(String instId) throws Exception;
/**
* 根据流程定义id或流程实例id或任务id或BPMN实例ID获取流程图。
* @param bpmImageParamObject
* @return
* @throws Exception
*/
String getBpmImage(BpmImageParamObject bpmImageParamObject) throws Exception;
/**
* 沟通反馈
* @param doNextParamObject
* @return
* @throws Exception
*/
CommonResult<String> doNextcommu(DoNextParamObject doNextParamObject) throws Exception;
Map<String, Object> getUrgentStateConf(ObjectNode obj) throws Exception;
/**
* 传阅回复
* @param doNextParamObject
* @return
* @throws Exception
*/
CommonResult<String> doNextCopyto(DoNextParamObject doNextParamObject) throws Exception;
/**
* 采用同步线程的方式启动流程,启动前[不校验权限]。办结撤回需要用到。1,通过线程变量控制办结撤回启动的流程不产生堆栈信息。2,通过线程变量把重启产生的任务id返回给前端,方便前端撤回后直接跳转到待办页面。
* @param startFlowParamObject
* @return
* @throws Exception
*/
StartResult syncStart(StartFlowParamObject startFlowParamObject) throws Exception;
/**
* 采用同步线程的方式启动流程,启动前校验权限。
* @param startFlowParamObject 入参,流程key和定义id二选一
* @return 启动结果
* @throws Exception
*/
StartResult syncStartWithRight(StartFlowParamObject startFlowParamObject) throws Exception;
Map<String, List<DefaultBpmTask>> instanceDetails(List<String> ids);
/**
* 获取我的请求对应实例的任务,如果为null,表示没有可以处理的任务
* 分两种情况:
* 1、如果包含退回发起人/驳回发起人,进入我的申请,如果单据退回发起人/驳回发起人状态,直接进入待办
* 2、如果情况1不满足,进入只读状态查看我的审批单,可关闭或撤回(根据按钮权限渲染)
* @param instId 实例ID(来自我的请求列表)
* @return 任务详情,如果为null,表示没有可以处理的任务
*/
DefaultBpmTask getMyRequestTask(String instId);
/**
* 会议申请绑定流程发起
* @param mappingObject
* @param flowKey
* @return
* @throws Exception
*/
CommonResult<String> meetingRoomApply(JsonNode mappingObject,String flowKey) throws Exception;
}