免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Activiti工作流學(xué)習(xí)(三)Activiti工作流與spring集成
參考:https://www.cnblogs.com/hongwz/p/5548473.html
前言
前面Activiti工作流的學(xué)習(xí),說明了Activiti的基本應(yīng)用,在我們開發(fā)中可以根據(jù)實(shí)際的業(yè)務(wù)參考Activiti的API去更好的理解以及鞏固。我們實(shí)際的開發(fā)中我們基本上都使用spring框架進(jìn)行開發(fā),現(xiàn)在來說明一下Activiti工作流與spring集成,Activiti工作流與spring集成還算比較簡(jiǎn)單,可以參考Activiti的API來進(jìn)行整合。
二.Activiti常用的表
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
---------------------------------------------部署對(duì)象和流程定義相關(guān)的表---------------------------------------------
--部署對(duì)象信息表
SELECT T.*, T.ROWID FROM ACT_RE_DEPLOYMENT T;
--流程定義表
--ID_ 由KEY_ + VERSION_ + 隨機(jī)生成是數(shù)組成
SELECT T.*, T.ROWID FROM ACT_RE_PROCDEF T where t.category_='1' order by t.version_ asc;
--資源文件表
SELECT T.*, T.ROWID FROM ACT_GE_BYTEARRAY T;
--主鍵生成策略表
SELECT T.*, T.ROWID FROM ACT_GE_PROPERTY T;
------------------------------------------流程實(shí)例、執(zhí)行對(duì)象、任務(wù)------------------------------------------------
--正在執(zhí)行的執(zhí)行對(duì)象表
-- 執(zhí)行ID_ 56  流程實(shí)例ID_ 56  流程定義ID_ _3701622B-4133-7B3D-F50F-E14B4F21E847:1:55  正在運(yùn)行的任務(wù)定義ID_ 【可變】 USERTASKE736BEF8-4133-7B3D-F510-7B2DE7BEA8C6
SELECT T.*, T.ROWID FROM ACT_RU_EXECUTION T;
--流程實(shí)例歷史表 開始信息
--歷史流程定義ID_ 56 流程S實(shí)例ID_ 56 業(yè)務(wù)KEY_10000001 流程定義ID_ _3701622B-4133-7B3D-F50F-E14B4F21E847:1:55 開始任務(wù)節(jié)點(diǎn)ID_ STARTEVENT52B3145F-C133-7B3D-F50F-E6D48BA60EAE
SELECT T.*, T.ROWID FROM ACT_HI_PROCINST T;
--正在執(zhí)行的任務(wù)對(duì)象表
--任務(wù)ID_ 68  執(zhí)行ID_ 56  流程實(shí)例ID_ 56  流程定義ID_ _3701622B-4133-7B3D-F50F-E14B4F21E847:1:55  任務(wù)節(jié)點(diǎn)ID_ USERTASKE736BEF8-4133-7B3D-F510-7B2DE7BEA8C6
SELECT T.*, T.ROWID FROM ACT_RU_TASK T;
--歷史任務(wù)流程實(shí)例信息
--歷史任務(wù)ID_ 68   流程實(shí)例ID_ 56  執(zhí)行實(shí)例ID_ 56   流程定義ID_ _3701622B-4133-7B3D-F50F-E14B4F21E847:1:55  任務(wù)節(jié)點(diǎn)ID_ USERTASKE736BEF8-4133-7B3D-F510-7B2DE7BEA8C6   表單KEY_ /PAGES/HOLIDAY/HOLIDAYMANAGE/HOLIDAYFORMHANDLE.JSP
--歷史任務(wù)ID_ 74   流程實(shí)例ID_ 56  執(zhí)行實(shí)例ID_ 56  流程定義ID_ _3701622B-4133-7B3D-F50F-E14B4F21E847:1:55  任務(wù)節(jié)點(diǎn)ID_ USERTASK04A84BE1-1133-7B3D-F511-1D0B7BB0A668   表單KEY_ /PAGES/HOLIDAY/HOLIDAYMANAGE/HOLIDAYFORMVIEW.JSP
SELECT T.*, T.ROWID FROM ACT_HI_TASKINST T;
--所有活動(dòng)節(jié)點(diǎn)歷史任務(wù)表
--歷史任務(wù)ID_58 流程定義ID_ _3701622B-4133-7B3D-F50F-E14B4F21E847:1:55 流程實(shí)例ID_ 56  流程執(zhí)行ID_ 56  任務(wù)節(jié)點(diǎn)ID_ STARTEVENT52B3145F-C133-7B3D-F50F-E6D48BA60EAE
--歷史任務(wù)ID_67 流程定義ID_ _3701622B-4133-7B3D-F50F-E14B4F21E847:1:55 流程實(shí)例ID_ 56  流程執(zhí)行ID_ 56  任務(wù)節(jié)點(diǎn)ID_ USERTASKE736BEF8-4133-7B3D-F510-7B2DE7BEA8C6   任務(wù)ID_ 68
--歷史任務(wù)ID_73 流程定義ID_ _3701622B-4133-7B3D-F50F-E14B4F21E847:1:55 流程實(shí)例ID_ 56  流程執(zhí)行ID_ 56  任務(wù)節(jié)點(diǎn)ID_ USERTASK04A84BE1-1133-7B3D-F511-1D0B7BB0A668   任務(wù)ID_ 74
SELECT T.*, T.ROWID FROM ACT_HI_ACTINST T;
----------------------------------------流程變量信息--------------------------------------------------
--正在執(zhí)行的流程變量信息
SELECT T.*, T.ROWID FROM ACT_RU_VARIABLE T;
--歷史流程變量信息 存放歷史表單重要信息
--流程實(shí)例ID_ 56  執(zhí)行實(shí)例ID_ 56 任務(wù)ID_
SELECT T.*, T.ROWID FROM ACT_HI_VARINST T;
-------------------------------------------歷史意見信息-----------------------------------------------
--歷史審批意見表
--任務(wù)ID_ 68  流程定義ID_ 56
SELECT T.*, T.ROWID FROM ACT_HI_COMMENT T;
-----------------------------------------節(jié)點(diǎn)參與者信息-------------------------------------------------
--任務(wù)辦理人表(個(gè)人任務(wù)、組任務(wù))
SELECT T.*, T.ROWID FROM ACT_RU_IDENTITYLINK T;
--歷史任務(wù)辦理人表(個(gè)人任務(wù)、組任務(wù))
SELECT T.*, T.ROWID FROM ACT_HI_IDENTITYLINK T;
--臨時(shí)對(duì)象
SELECT T.*, T.ROWID FROM EA_IST.IST_APPR_BUSI_DATA T
三.Activiti與spring整合xml配置文件
向spring配置文件中,添加一個(gè)spring-workflow2-activiti.xml配置文件,里面如下:
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> <!--工作流引擎配置 --> <bean id="processEngineConfiguration" class="com.shine.workflow2.spring.ShineSpringProcessEngineConfiguration"> <property name="dataSource" ref="dataSource" /> <property name="transactionManager" ref="transactionManager" /> <property name="databaseSchemaUpdate" value="false" /> <property name="jobExecutorActivate" value="false" /> <!-- 組織機(jī)構(gòu)適配 --> <property name="organizationConnector" ref="organizationAdapter" /> </bean> <!-- 組織機(jī)構(gòu)適配實(shí)現(xiàn) --> <bean id="organizationAdapter" class="com.shine.workflow2.organization.impl.OrganizationAdapter" /> <!--工作流引擎 --> <bean id="processEngine" class="com.shine.workflow2.spring.ShineProcessEngineFactoryBean"> <property name="processEngineConfiguration" ref="processEngineConfiguration" /> </bean> <!--擴(kuò)展服務(wù) --> <bean id="processDefinitionService" factory-bean="processEngine" factory-method="getProcessDefinitionService" /> <bean id="processLogService" factory-bean="processEngine" factory-method="getProcessLogService" /> <bean id="processManagementService" factory-bean="processEngine" factory-method="getProcessManagementService" /> <!--原生服務(wù) --> <bean id="repositoryService" factory-bean="processEngine" factory-method="getRepositoryService" /> <bean id="runtimeService" factory-bean="processEngine" factory-method="getRuntimeService" /> <bean id="taskService" factory-bean="processEngine" factory-method="getTaskService" /> <bean id="historyService" factory-bean="processEngine" factory-method="getHistoryService" /> <bean id="managementService" factory-bean="processEngine" factory-method="getManagementService" /> <bean id="formService" factory-bean="processEngine" factory-method="getFormService" /> <bean id="identityService" factory-bean="processEngine" factory-method="getIdentityService" /> </beans>
四.Activiti工作流常用service
1.BaseProcessService
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
/**
*
*/
package com.shine.eosp.workflow2.common.process;
import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity;
import org.activiti.engine.impl.pvm.PvmActivity;
import org.activiti.engine.impl.pvm.process.ActivityImpl;
import org.activiti.engine.impl.task.TaskDefinition;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.runtime.Execution;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import com.shine.workflow2.exception.WorkflowException;
/**
*
* 類說明: 常用工作流核心操作封裝 .
*
* <pre>
* 修改日期          修改人              修改原因
* 2016-6-2     hongwz         新建
* </pre>
*/
public interface BaseProcessService {
/**
* 方法說明 : 根據(jù)流程定義Key查詢最新流程定義.
*
* @param processDefinitionKey
* @throws WorkflowException
*/
public ProcessDefinition findLatestProcessDefinitionByPrcDefKey(String processDefinitionKey) throws WorkflowException;
/**
* 方法說明 : 根據(jù)流程定義Id查詢流程定義.
*
* @param processDefinitionId  流程定義Id
* @throws WorkflowException
*/
public ProcessDefinitionEntity findProcessDefinitionEntityByProcDefId(String processDefinitionId) throws WorkflowException;
/**
*
* 方法說明  : 根據(jù)流程實(shí)例Id查詢流程實(shí)例.
*
* @param processInstanceId 流程實(shí)例Id
* @return
* @throws WorkflowException
*/
public ProcessInstance findProcessInstanceByProcInst(String processInstanceId) throws WorkflowException;
/**
* 根據(jù)流程實(shí)例Id查詢流程實(shí)例.
*
* @param processInstanceId
* @throws WorkflowException
*/
public Execution findExecutionByProcInst(String processInstanceId) throws WorkflowException;
/**
* 方法說明 : 根據(jù)流程實(shí)例Id查詢?nèi)蝿?wù).
*
* @param processInstanceId 流程實(shí)例Id
* @throws WorkflowException
*/
public Task findTaskByProcInstId(String processInstanceId) throws WorkflowException;
/**
* 方法說明 : 根據(jù)實(shí)例Id查詢?nèi)蝿?wù).
*
* @param executionId 實(shí)例Id
* @throws WorkflowException
*/
public Task findTaskByExecutionId(String executionId) throws WorkflowException;
/**
* 方法說明 : 根據(jù)活動(dòng)節(jié)點(diǎn)查詢?nèi)蝿?wù)定義.
*
* @param activityImpl  活動(dòng)節(jié)點(diǎn)
* @throws WorkflowException
*/
public TaskDefinition findTaskDefinitionByActivityImpl(ActivityImpl activityImpl) throws WorkflowException;
/**
* 方法說明 : 查詢上一個(gè)節(jié)點(diǎn).
*
* @param activityImpl 活動(dòng)節(jié)點(diǎn)
* @param activityId 當(dāng)前活動(dòng)節(jié)點(diǎn)ID
* @param elString
* @throws ShineException
*/
public TaskDefinition beforeTaskDefinition(ActivityImpl activityImpl,String activityId, String elString) throws WorkflowException;
/**
* 方法說明 : 查詢下一個(gè)節(jié)點(diǎn).
*
* @param activityImpl 活動(dòng)節(jié)點(diǎn)
* @param activityId 當(dāng)前活動(dòng)節(jié)點(diǎn)ID
* @param elString
* @throws ShineException
*/
public TaskDefinition nextTaskDefinition(ActivityImpl activityImpl,String activityId, String elString) throws WorkflowException;
/**
* 方法說明: 根據(jù)活動(dòng)節(jié)點(diǎn)、活動(dòng)線路查詢線路的連接線.
*
* @throws WorkflowException
*/
public PvmActivity findPvmActivity(ActivityImpl activityImpl, String transitions) throws WorkflowException;
/**
* 方法說明 :根據(jù)流程定義Id查詢?nèi)蝿?wù)定義
*
* @param processDefinitionId 流程定義Id
* @return
* @throws WorkflowException
*/
public TaskDefinition findTaskDefinition(String processDefinitionId) throws WorkflowException;
/**
* 方法說明 : 添加任務(wù)意見.
*
* @param taskId      任務(wù)Id
* @param processInstanceId   流程實(shí)例Id
* @param comment     意見
* @throws WorkflowException
*/
public void addTaskComment(String taskId, String processInstanceId, String comment) throws WorkflowException;
/**
* 方法說明 : 拾取任務(wù).
*
* @param taskId  任務(wù)Id
* @param operator 辦理人
* @throws WorkflowException
*/
public void claimTask(String taskId, String operator) throws WorkflowException;
/**
* 方法說明 : 根據(jù)流程定義Id查詢最新流程定義.
*
* @param processDefinitionId 流程定義Id
* @return
* @throws WorkflowException
*/
public ProcessDefinition findProcessDefinitionByPrcDefId(String processDefinitionId) throws WorkflowException;
}
2.BaseProcessServiceImpl
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
/**
*
*/
package com.shine.eosp.workflow2.common.process;
import java.util.Iterator;
import java.util.List;
import org.activiti.engine.HistoryService;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.impl.RepositoryServiceImpl;
import org.activiti.engine.impl.bpmn.behavior.UserTaskActivityBehavior;
import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity;
import org.activiti.engine.impl.pvm.PvmActivity;
import org.activiti.engine.impl.pvm.PvmTransition;
import org.activiti.engine.impl.pvm.process.ActivityImpl;
import org.activiti.engine.impl.task.TaskDefinition;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.runtime.Execution;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import com.shine.util.CollectionUtil;
import com.shine.workflow2.exception.WorkflowException;
/**
*
* 類說明: 常用工作流核心操作封裝 .
*
* <pre>
* 修改日期          修改人              修改原因
* 2016-6-2     hongwz         新建
* </pre>
*/
public class BaseProcessServiceImpl implements BaseProcessService {
/**
* log.
*/
private static Logger logger = LoggerFactory.getLogger(BaseProcessServiceImpl.class);
@Autowired
private RepositoryService repositoryService;
@Autowired
private RuntimeService runtimeService;
@Autowired
private TaskService taskService;
@Autowired
private HistoryService historyService;
/**
* 方法說明 : 根據(jù)流程定義Key查詢最新流程定義.
*
* @param processDefinitionKey  流程定義Key
* @return
* @throws WorkflowException
*/
@Override
public ProcessDefinition findLatestProcessDefinitionByPrcDefKey(String processDefinitionKey) throws WorkflowException{
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery()
.processDefinitionKey(processDefinitionKey)
.latestVersion()
.singleResult();
return processDefinition;
}
/**
* 方法說明 : 根據(jù)流程定義Id查詢最新流程定義.
*
* @param processDefinitionId 流程定義Id
* @return
* @throws WorkflowException
*/
@Override
public ProcessDefinition findProcessDefinitionByPrcDefId(String processDefinitionId) throws WorkflowException{
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery()
.processDefinitionId(processDefinitionId)
.orderByProcessDefinitionVersion()
.desc()
.singleResult();
return processDefinition;
}
/**
* 方法說明 : 根據(jù)流程定義Id查詢流程定義.
*
* @param processDefinitionId  流程定義Id
* @return
* @throws WorkflowException
*/
@Override
public ProcessDefinitionEntity findProcessDefinitionEntityByProcDefId(String processDefinitionId) throws WorkflowException{
ProcessDefinitionEntity processDefinitionEntity  = (ProcessDefinitionEntity) ((RepositoryServiceImpl) repositoryService)
.getDeployedProcessDefinition(processDefinitionId);
return processDefinitionEntity;
}
/**
*
* 方法說明  : 根據(jù)流程實(shí)例Id查詢流程實(shí)例.
*
* @param processInstanceId 流程實(shí)例Id
* @return
* @throws WorkflowException
*/
@Override
public ProcessInstance findProcessInstanceByProcInst(String processInstanceId) throws WorkflowException{
return runtimeService.createProcessInstanceQuery()
.processInstanceId(processInstanceId)
.singleResult();
}
/**
* 根據(jù)流程實(shí)例Id查詢流程實(shí)例.
*
* @param processInstanceId
* @return
* @throws WorkflowException
*/
@Override
public Execution findExecutionByProcInst(String processInstanceId) throws WorkflowException{
return runtimeService.createExecutionQuery().processInstanceId(processInstanceId).singleResult();
}
/**
* 方法說明 : 根據(jù)流程實(shí)例Id查詢?nèi)蝿?wù).
*
* @param processInstanceId 流程實(shí)例Id
* @return
* @throws WorkflowException
*/
@Override
public Task findTaskByProcInstId(String processInstanceId) throws WorkflowException{
return taskService.createTaskQuery().processInstanceId(processInstanceId).singleResult();
}
/**
* 方法說明 : 根據(jù)實(shí)例Id查詢?nèi)蝿?wù).
*
* @param executionId 實(shí)例Id
* @return
* @throws WorkflowException
*/
@Override
public Task findTaskByExecutionId(String executionId) throws WorkflowException{
return taskService.createTaskQuery().executionId(executionId).singleResult();
}
/**
* 方法說明 : 根據(jù)活動(dòng)節(jié)點(diǎn)查詢?nèi)蝿?wù)定義.
*
* @param activityImpl  活動(dòng)節(jié)點(diǎn)
* @return
* @throws WorkflowException
*/
@Override
public TaskDefinition findTaskDefinitionByActivityImpl(ActivityImpl activityImpl) throws WorkflowException{
return ((UserTaskActivityBehavior)activityImpl.getActivityBehavior()).getTaskDefinition();
}
/**
* 方法說明 : 查詢上一個(gè)節(jié)點(diǎn).
*
* @param activityImpl 活動(dòng)節(jié)點(diǎn)
* @param activityId 當(dāng)前活動(dòng)節(jié)點(diǎn)ID
* @param elString
* @return
* @throws ShineException
*/
@Override
public TaskDefinition beforeTaskDefinition(ActivityImpl activityImpl,String activityId, String elString) throws WorkflowException {
if("userTask".equals(activityImpl.getProperty("type")) && !activityId.equals(activityImpl.getId())){
TaskDefinition taskDefinition = null;
if(activityImpl != null){
taskDefinition = findTaskDefinitionByActivityImpl(activityImpl);
}
return taskDefinition;
}else{
List<PvmTransition> inTransitions = activityImpl.getIncomingTransitions();   //通過活動(dòng)節(jié)點(diǎn)查詢所有線路
if(!CollectionUtil.isEmpty(inTransitions)){
List<PvmTransition> inTransitionsTemp = null;
for(PvmTransition tr:inTransitions){
PvmActivity ac = tr.getSource();      //獲取線路的前節(jié)點(diǎn)
if("exclusiveGateway".equals(ac.getProperty("type"))){
inTransitionsTemp = ac.getIncomingTransitions();
if(inTransitionsTemp.size() == 1){
return beforeTaskDefinition((ActivityImpl)inTransitionsTemp.get(0).getSource(), activityId, elString);
}else if(inTransitionsTemp.size() > 1){
for(PvmTransition tr1 : inTransitionsTemp){
Object s = tr1.getProperty("conditionText");
if(elString.equals(StringUtils.replacePattern(StringUtils.trim(s.toString()), " ", ""))){
return beforeTaskDefinition((ActivityImpl)tr1.getSource(), activityId, elString);
}
}
}
}
}
}
return null;
}
}
/**
* 方法說明 : 查詢下一個(gè)節(jié)點(diǎn).
*
* @param activityImpl 活動(dòng)節(jié)點(diǎn)
* @param activityId 當(dāng)前活動(dòng)節(jié)點(diǎn)ID
* @param elString
* @return
* @throws ShineException
*/
@Override
public TaskDefinition nextTaskDefinition(ActivityImpl activityImpl,String activityId, String elString) throws WorkflowException {
if("userTask".equals(activityImpl.getProperty("type")) && !activityId.equals(activityImpl.getId())){
TaskDefinition taskDefinition = null;
if(activityImpl != null){
taskDefinition = findTaskDefinitionByActivityImpl(activityImpl);
}
return taskDefinition;
}else{
List<PvmTransition> outTransitions = activityImpl.getOutgoingTransitions();   //通過活動(dòng)節(jié)點(diǎn)查詢所有線路
if(!CollectionUtil.isEmpty(outTransitions)){
List<PvmTransition> outTransitionsTemp = null;
for(PvmTransition tr:outTransitions){
PvmActivity ac = tr.getDestination();         //獲取線路的終點(diǎn)節(jié)點(diǎn)
if("exclusiveGateway".equals(ac.getProperty("type"))){
outTransitionsTemp = ac.getOutgoingTransitions();
if(outTransitionsTemp.size() == 1){
return nextTaskDefinition((ActivityImpl)outTransitionsTemp.get(0).getDestination(), activityId, elString);
}else if(outTransitionsTemp.size() > 1){
for(PvmTransition tr1 : outTransitionsTemp){
Object s = tr1.getProperty("conditionText");
if(s != null && elString.equals(StringUtils.replacePattern(StringUtils.trim(s.toString()), " ", ""))){
return nextTaskDefinition((ActivityImpl)tr1.getDestination(), activityId, elString);
}
}
}
}else if("userTask".equals(ac.getProperty("type"))){
return findTaskDefinitionByActivityImpl((ActivityImpl)ac);
}
else if("startEvent".equals(ac.getProperty("type"))){
return findTaskDefinitionByActivityImpl((ActivityImpl)ac);
}
else{
logger.info(ac.getProperty("type").toString());
}
}
}
return null;
}
}
/**
* 方法說明: 根據(jù)活動(dòng)節(jié)點(diǎn)、活動(dòng)線路查詢線路的連接線.
*
* @return
* @throws WorkflowException
*/
@SuppressWarnings("rawtypes")
@Override
public PvmActivity findPvmActivity(ActivityImpl activityImpl, String transitions) throws WorkflowException{
PvmActivity activity = null;
List<PvmTransition> pvmTransitions = activityImpl.getOutgoingTransitions();   //獲取所有線路
for (Iterator iterator = pvmTransitions.iterator(); iterator.hasNext();) {
PvmTransition pvmTransition = (PvmTransition) iterator.next();
PvmActivity pvmActivity = pvmTransition.getDestination();           //獲取下一個(gè)任務(wù)節(jié)點(diǎn)
String transitionsVal = (String) pvmActivity.getProperty("name");
if(transitions.equals(transitionsVal)){
activity = pvmActivity;
break;
}
}
return activity;
}
/**
* 方法說明 :根據(jù)流程定義Id查詢?nèi)蝿?wù)定義
*
* @param processDefinitionId 流程定義Id
* @return
* @throws WorkflowException
*/
@Override
public TaskDefinition findTaskDefinition(String processDefinitionId) throws WorkflowException{
//獲取流程定義
ProcessDefinitionEntity processDefinitionEntity = findProcessDefinitionEntityByProcDefId(processDefinitionId);
TaskDefinition tdf = null;
if(processDefinitionEntity != null){
List<ActivityImpl> activityImpls = processDefinitionEntity.getActivities();    //獲取所有活動(dòng)的節(jié)點(diǎn)
for(int i = activityImpls.size() - 1; i > 0; i-- ){
ActivityImpl activityImpl = activityImpls.get(i);
String startEventType = (String) activityImpl.getProperty("type");
if("startEvent".equals(startEventType)){
tdf = nextTaskDefinition(activityImpl, activityImpl.getId(), null);
}
}
}
return tdf;
}
/**
* 方法說明 : 添加任務(wù)意見.
*
* @param taskId      任務(wù)Id
* @param processInstanceId   流程實(shí)例Id
* @param comment     意見
* @throws WorkflowException
*/
@Override
public void addTaskComment(String taskId,String processInstanceId,String comment) throws WorkflowException{
taskService.addComment(taskId, processInstanceId, comment);
}
/**
* 方法說明 : 拾取任務(wù).
*
* @param taskId  任務(wù)Id
* @param operator 辦理人
* @throws WorkflowException
*/
@Override
public void claimTask(String taskId,String operator) throws WorkflowException{
taskService.claim(taskId, operator);
}
}
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
osworkflow api 之 com.opensymphony.workflow
jbpm 4.4 sql 查詢實(shí)例
馳騁工作流引擎 -Webservice接口說明文檔
flowable 查詢、完成、作廢、刪除 任務(wù)
Spring Security3的使用方法有4種
mongodb 3.2 實(shí)戰(zhàn)(三)整合Spring Data MongoDB
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服