1
22
23 package com.liferay.portlet.workflow.service.impl;
24
25 import com.liferay.portal.kernel.jbi.WorkflowComponent;
26 import com.liferay.portal.kernel.jbi.WorkflowComponentException;
27 import com.liferay.portal.kernel.util.Constants;
28 import com.liferay.portal.kernel.util.StringUtil;
29 import com.liferay.portal.service.impl.PrincipalBean;
30 import com.liferay.portlet.workflow.jbi.WorkflowURL;
31 import com.liferay.portlet.workflow.jbi.WorkflowXMLUtil;
32 import com.liferay.portlet.workflow.service.WorkflowComponentService;
33
34 import java.util.List;
35 import java.util.Map;
36
37
44 public class WorkflowComponentServiceImpl extends PrincipalBean
45 implements WorkflowComponentService, WorkflowComponent {
46
47 public List getCurrentTasks(
48 long instanceId, long tokenId)
49 throws WorkflowComponentException {
50
51 try {
52 String xml = getCurrentTasksXml(instanceId, tokenId);
53
54 return WorkflowXMLUtil.parseList(xml, "tasks");
55 }
56 catch (Exception e) {
57 throw new WorkflowComponentException(e);
58 }
59 }
60
61 public String getCurrentTasksXml(
62 long instanceId, long tokenId)
63 throws WorkflowComponentException {
64
65 try {
66 WorkflowURL url = getWorkflowURL();
67
68 url.setParameter(Constants.CMD, "getCurrentTasksXml");
69 url.setParameter("instanceId", instanceId);
70 url.setParameter("tokenId", tokenId);
71
72 return url.getContent();
73 }
74 catch (Exception e) {
75 throw new WorkflowComponentException(e);
76 }
77 }
78
79 public String deploy(String xml) throws WorkflowComponentException {
80 try {
81 WorkflowURL url = getWorkflowURL();
82
83 xml = StringUtil.replace(
84 xml,
85 new String[] {
86 "\n", "\r", "\t"
87 },
88 new String[] {
89 "", "", ""
90 });
91
92 url.setParameter(Constants.CMD, "deploy");
93 url.setParameter("xml", xml);
94
95 String content = url.getContent();
96
97 return WorkflowXMLUtil.parseString(content, "definitionId");
98 }
99 catch (Exception e) {
100 throw new WorkflowComponentException(e);
101 }
102 }
103
104 public Object getDefinition(long definitionId)
105 throws WorkflowComponentException {
106
107 try {
108 String xml = getDefinitionXml(definitionId);
109
110 return WorkflowXMLUtil.parseDefinition(xml);
111 }
112 catch (Exception e) {
113 throw new WorkflowComponentException(e);
114 }
115 }
116
117 public List getDefinitions(
118 long definitionId, String name, int begin, int end)
119 throws WorkflowComponentException {
120
121 try {
122 String xml = getDefinitionsXml(definitionId, name, begin, end);
123
124 return WorkflowXMLUtil.parseList(xml, "definitions");
125 }
126 catch (Exception e) {
127 throw new WorkflowComponentException(e);
128 }
129 }
130
131 public String getDefinitionsXml(
132 long definitionId, String name, int begin, int end)
133 throws WorkflowComponentException {
134
135 try {
136 WorkflowURL url = getWorkflowURL();
137
138 url.setParameter(Constants.CMD, "getDefinitionsXml");
139 url.setParameter("definitionId", definitionId);
140 url.setParameter("name", name);
141 url.setParameter("begin", begin);
142 url.setParameter("end", end);
143
144 return url.getContent();
145 }
146 catch (Exception e) {
147 throw new WorkflowComponentException(e);
148 }
149 }
150
151 public int getDefinitionsCount(long definitionId, String name)
152 throws WorkflowComponentException {
153
154 try {
155 String xml = getDefinitionsCountXml(definitionId, name);
156
157 return WorkflowXMLUtil.parseInt(xml, "count");
158 }
159 catch (Exception e) {
160 throw new WorkflowComponentException(e);
161 }
162 }
163
164 public String getDefinitionsCountXml(long definitionId, String name)
165 throws WorkflowComponentException {
166
167 try {
168 WorkflowURL url = getWorkflowURL();
169
170 url.setParameter(Constants.CMD, "getDefinitionsCountXml");
171 url.setParameter("definitionId", definitionId);
172 url.setParameter("name", name);
173
174 return url.getContent();
175 }
176 catch (Exception e) {
177 throw new WorkflowComponentException(e);
178 }
179 }
180
181 public String getDefinitionXml(long definitionId)
182 throws WorkflowComponentException {
183
184 try {
185 WorkflowURL url = getWorkflowURL();
186
187 url.setParameter(Constants.CMD, "getDefinitionXml");
188 url.setParameter("definitionId", definitionId);
189
190 return url.getContent();
191 }
192 catch (Exception e) {
193 throw new WorkflowComponentException(e);
194 }
195 }
196
197 public List getInstances(
198 long definitionId, long instanceId, String definitionName,
199 String definitionVersion, String startDateGT, String startDateLT,
200 String endDateGT, String endDateLT, boolean hideEndedTasks,
201 boolean andOperator, int begin, int end)
202 throws WorkflowComponentException {
203
204 try {
205 String xml = getInstancesXml(
206 definitionId, instanceId, definitionName, definitionVersion,
207 startDateGT, startDateLT, endDateGT, endDateLT, hideEndedTasks,
208 andOperator, begin, end);
209
210 return WorkflowXMLUtil.parseList(xml, "instances");
211 }
212 catch (Exception e) {
213 throw new WorkflowComponentException(e);
214 }
215 }
216
217 public int getInstancesCount(
218 long definitionId, long instanceId, String definitionName,
219 String definitionVersion, String startDateGT, String startDateLT,
220 String endDateGT, String endDateLT, boolean hideEndedTasks,
221 boolean andOperator)
222 throws WorkflowComponentException {
223
224 try {
225 String xml = getInstancesCountXml(
226 definitionId, instanceId, definitionName, definitionVersion,
227 startDateGT, startDateLT, endDateGT, endDateLT, hideEndedTasks,
228 andOperator);
229
230 return WorkflowXMLUtil.parseInt(xml, "count");
231 }
232 catch (Exception e) {
233 throw new WorkflowComponentException(e);
234 }
235 }
236
237 public String getInstancesCountXml(
238 long definitionId, long instanceId, String definitionName,
239 String definitionVersion, String startDateGT, String startDateLT,
240 String endDateGT, String endDateLT, boolean hideEndedTasks,
241 boolean andOperator)
242 throws WorkflowComponentException {
243
244 try {
245 WorkflowURL url = getWorkflowURL();
246
247 url.setParameter(Constants.CMD, "getInstancesCountXml");
248 url.setParameter("definitionId", definitionId);
249 url.setParameter("instanceId", instanceId);
250 url.setParameter("definitionName", definitionName);
251 url.setParameter("definitionVersion", definitionVersion);
252 url.setParameter("startDateGT", startDateGT);
253 url.setParameter("startDateLT", startDateLT);
254 url.setParameter("endDateGT", endDateGT);
255 url.setParameter("endDateLT", endDateLT);
256 url.setParameter("hideEndedTasks", hideEndedTasks);
257 url.setParameter("andOperator", andOperator);
258
259 return url.getContent();
260 }
261 catch (Exception e) {
262 throw new WorkflowComponentException(e);
263 }
264 }
265
266 public String getInstancesXml(
267 long definitionId, long instanceId, String definitionName,
268 String definitionVersion, String startDateGT, String startDateLT,
269 String endDateGT, String endDateLT, boolean hideEndedTasks,
270 boolean andOperator, int begin, int end)
271 throws WorkflowComponentException {
272
273 try {
274 WorkflowURL url = getWorkflowURL();
275
276 url.setParameter(Constants.CMD, "getInstancesXml");
277 url.setParameter("definitionId", definitionId);
278 url.setParameter("instanceId", instanceId);
279 url.setParameter("definitionName", definitionName);
280 url.setParameter("definitionVersion", definitionVersion);
281 url.setParameter("startDateGT", startDateGT);
282 url.setParameter("startDateLT", startDateLT);
283 url.setParameter("endDateGT", endDateGT);
284 url.setParameter("endDateLT", endDateLT);
285 url.setParameter("hideEndedTasks", hideEndedTasks);
286 url.setParameter("andOperator", andOperator);
287 url.setParameter("begin", begin);
288 url.setParameter("end", end);
289
290 return url.getContent();
291 }
292 catch (Exception e) {
293 throw new WorkflowComponentException(e);
294 }
295 }
296
297 public List getTaskFormElements(long taskId)
298 throws WorkflowComponentException {
299
300 try {
301 String xml = getTaskFormElementsXml(taskId);
302
303 return WorkflowXMLUtil.parseList(xml, "taskFormElements");
304 }
305 catch (Exception e) {
306 throw new WorkflowComponentException(e);
307 }
308 }
309
310 public String getTaskFormElementsXml(long taskId)
311 throws WorkflowComponentException {
312
313 try {
314 WorkflowURL url = getWorkflowURL();
315
316 url.setParameter(Constants.CMD, "getTaskFormElementsXml");
317 url.setParameter("taskId", taskId);
318
319 return url.getContent();
320 }
321 catch (Exception e) {
322 throw new WorkflowComponentException(e);
323 }
324 }
325
326 public List getTaskTransitions(long taskId)
327 throws WorkflowComponentException {
328
329 try {
330 String xml = getTaskTransitionsXml(taskId);
331
332 return WorkflowXMLUtil.parseList(xml, "taskTransitions");
333 }
334 catch (Exception e) {
335 throw new WorkflowComponentException(e);
336 }
337 }
338
339 public String getTaskTransitionsXml(long taskId)
340 throws WorkflowComponentException {
341
342 try {
343 WorkflowURL url = getWorkflowURL();
344
345 url.setParameter(Constants.CMD, "getTaskTransitionsXml");
346 url.setParameter("taskId", taskId);
347
348 return url.getContent();
349 }
350 catch (Exception e) {
351 throw new WorkflowComponentException(e);
352 }
353 }
354
355 public List getUserTasks(
356 long instanceId, String taskName, String definitionName,
357 String assignedTo, String createDateGT, String createDateLT,
358 String startDateGT, String startDateLT, String endDateGT,
359 String endDateLT, boolean hideEndedTasks, boolean andOperator,
360 int begin, int end)
361 throws WorkflowComponentException {
362
363 try {
364 String xml = getUserTasksXml(
365 instanceId, taskName, definitionName, assignedTo, createDateGT,
366 createDateLT, startDateGT, startDateLT, endDateGT, endDateLT,
367 hideEndedTasks, andOperator, begin, end);
368
369 return WorkflowXMLUtil.parseList(xml, "tasks");
370 }
371 catch (Exception e) {
372 throw new WorkflowComponentException(e);
373 }
374 }
375
376 public int getUserTasksCount(
377 long instanceId, String taskName, String definitionName,
378 String assignedTo, String createDateGT, String createDateLT,
379 String startDateGT, String startDateLT, String endDateGT,
380 String endDateLT, boolean hideEndedTasks, boolean andOperator)
381 throws WorkflowComponentException {
382
383 try {
384 String xml = getUserTasksCountXml(
385 instanceId, taskName, definitionName, assignedTo, createDateGT,
386 createDateLT, startDateGT, startDateLT, endDateGT, endDateLT,
387 hideEndedTasks, andOperator);
388
389 return WorkflowXMLUtil.parseInt(xml, "count");
390 }
391 catch (Exception e) {
392 throw new WorkflowComponentException(e);
393 }
394 }
395
396 public String getUserTasksCountXml(
397 long instanceId, String taskName, String definitionName,
398 String assignedTo, String createDateGT, String createDateLT,
399 String startDateGT, String startDateLT, String endDateGT,
400 String endDateLT, boolean hideEndedTasks, boolean andOperator)
401 throws WorkflowComponentException {
402
403 try {
404 WorkflowURL url = getWorkflowURL();
405
406 url.setParameter(Constants.CMD, "getUserTasksCountXml");
407 url.setParameter("instanceId", instanceId);
408 url.setParameter("taskName", taskName);
409 url.setParameter("definitionName", definitionName);
410 url.setParameter("assignedTo", assignedTo);
411 url.setParameter("createDateGT", createDateGT);
412 url.setParameter("createDateLT", createDateLT);
413 url.setParameter("startDateGT", startDateGT);
414 url.setParameter("startDateLT", startDateLT);
415 url.setParameter("endDateGT", endDateGT);
416 url.setParameter("endDateLT", endDateLT);
417 url.setParameter("hideEndedTasks", hideEndedTasks);
418 url.setParameter("andOperator", andOperator);
419
420 return url.getContent();
421 }
422 catch (Exception e) {
423 throw new WorkflowComponentException(e);
424 }
425 }
426
427 public String getUserTasksXml(
428 long instanceId, String taskName, String definitionName,
429 String assignedTo, String createDateGT, String createDateLT,
430 String startDateGT, String startDateLT, String endDateGT,
431 String endDateLT, boolean hideEndedTasks, boolean andOperator,
432 int begin, int end)
433 throws WorkflowComponentException {
434
435 try {
436 WorkflowURL url = getWorkflowURL();
437
438 url.setParameter(Constants.CMD, "getUserTasksXml");
439 url.setParameter("instanceId", instanceId);
440 url.setParameter("taskName", taskName);
441 url.setParameter("definitionName", definitionName);
442 url.setParameter("assignedTo", assignedTo);
443 url.setParameter("createDateGT", createDateGT);
444 url.setParameter("createDateLT", createDateLT);
445 url.setParameter("startDateGT", startDateGT);
446 url.setParameter("startDateLT", startDateLT);
447 url.setParameter("endDateGT", endDateGT);
448 url.setParameter("endDateLT", endDateLT);
449 url.setParameter("hideEndedTasks", hideEndedTasks);
450 url.setParameter("andOperator", andOperator);
451 url.setParameter("begin", begin);
452 url.setParameter("end", end);
453
454 return url.getContent();
455 }
456 catch (Exception e) {
457 throw new WorkflowComponentException(e);
458 }
459 }
460
461 public void signalInstance(long instanceId)
462 throws WorkflowComponentException {
463
464 try {
465 WorkflowURL url = getWorkflowURL();
466
467 url.setParameter(Constants.CMD, "signalInstance");
468 url.setParameter("instanceId", instanceId);
469
470 url.getContent();
471 }
472 catch (Exception e) {
473 throw new WorkflowComponentException(e);
474 }
475 }
476
477 public void signalToken(long instanceId, long tokenId)
478 throws WorkflowComponentException {
479
480 try {
481 WorkflowURL url = getWorkflowURL();
482
483 url.setParameter(Constants.CMD, "signalToken");
484 url.setParameter("instanceId", instanceId);
485 url.setParameter("tokenId", tokenId);
486
487 url.getContent();
488 }
489 catch (Exception e) {
490 throw new WorkflowComponentException(e);
491 }
492 }
493
494 public String startWorkflow(long definitionId)
495 throws WorkflowComponentException {
496
497 try {
498 WorkflowURL url = getWorkflowURL();
499
500 url.setParameter(Constants.CMD, "startWorkflow");
501 url.setParameter("definitionId", definitionId);
502
503 return url.getContent();
504 }
505 catch (Exception e) {
506 throw new WorkflowComponentException(e);
507 }
508 }
509
510 public Map updateTask(long taskId, String transition, Map parameterMap)
511 throws WorkflowComponentException {
512
513 try {
514 String xml = updateTaskXml(taskId, transition, parameterMap);
515
516 return WorkflowXMLUtil.parseErrors(xml);
517 }
518 catch (Exception e) {
519 throw new WorkflowComponentException(e);
520 }
521 }
522
523 public String updateTaskXml(
524 long taskId, String transition, Map parameterMap)
525 throws WorkflowComponentException {
526
527 try {
528 WorkflowURL url = getWorkflowURL();
529
530 url.setParameter(Constants.CMD, "updateTaskXml");
531 url.setParameter("taskId", taskId);
532 url.setParameter("transition", transition);
533 url.addParameterMap(parameterMap);
534
535 return url.getContent();
536 }
537 catch (Exception e) {
538 throw new WorkflowComponentException(e);
539 }
540 }
541
542 protected WorkflowURL getWorkflowURL() {
543 WorkflowURL url = null;
544
545 try {
546 url = new WorkflowURL(getUser());
547 }
548 catch (Exception e) {
549 url = new WorkflowURL();
550 }
551
552 return url;
553 }
554
555 }