01: package org.bpmscript.web;
02:
03: import java.io.PrintWriter;
04: import java.io.StringWriter;
05: import java.util.ArrayList;
06: import java.util.Collections;
07: import java.util.HashMap;
08: import java.util.List;
09: import java.util.Map;
10:
11: import javax.servlet.http.HttpServletRequest;
12: import javax.servlet.http.HttpServletResponse;
13:
14: import org.bpmscript.IProcessInstance;
15: import org.bpmscript.IProcessSource;
16: import org.bpmscript.jbi.tasklist.IRemoteTaskListManager;
17: import org.bpmscript.jbi.tasklist.ITask;
18: import org.bpmscript.remote.IRemoteProcessManager;
19: import org.springframework.web.servlet.ModelAndView;
20: import org.springframework.web.servlet.mvc.ParameterizableViewController;
21:
22: public class ProcessInstanceController extends
23: ParameterizableViewController {
24:
25: private IRemoteProcessManager remoteProcessManager;
26: private IRemoteTaskListManager remoteTaskListManager;
27:
28: @Override
29: protected ModelAndView handleRequestInternal(
30: HttpServletRequest request, HttpServletResponse response)
31: throws Exception {
32: Map<String, Object> model = new HashMap<String, Object>();
33:
34: String processInstanceId = request
35: .getParameter("processInstanceId");
36:
37: IProcessInstance processInstance = remoteProcessManager
38: .getProcessInstance(processInstanceId);
39: List<ITask> tasks = null;
40: try {
41: tasks = remoteTaskListManager
42: .getTasksForInstance(processInstanceId);
43: } catch (Exception exception) {
44: tasks = new ArrayList<ITask>();
45: model.put("tasksUnavailable", true);
46: }
47: List<IProcessInstance> children = remoteProcessManager
48: .getChildProcessInstances(processInstanceId);
49: IProcessSource processSource = remoteProcessManager
50: .getMainSource(processInstance.getProcess().getId());
51: Throwable throwable = processInstance.getThrowable();
52: String stackTrace = null;
53: if (throwable != null) {
54: StringWriter st = new StringWriter();
55: throwable.printStackTrace(new PrintWriter(st));
56: stackTrace = st.toString();
57: }
58:
59: model.put("processInstance", processInstance);
60: model.put("tasks", tasks);
61: model.put("children", children);
62: model.put("processSource", processSource);
63: model.put("stackTrace", stackTrace);
64: return new ModelAndView(getViewName(), model);
65: }
66:
67: public void setRemoteProcessManager(
68: IRemoteProcessManager remoteProcessManager) {
69: this .remoteProcessManager = remoteProcessManager;
70: }
71:
72: public void setRemoteTaskListManager(
73: IRemoteTaskListManager remoteTaskListManager) {
74: this.remoteTaskListManager = remoteTaskListManager;
75: }
76:
77: }
|