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