ProcessInstanceController.java :  » Workflow-Engines » bpmscript » org » bpmscript » web » Java Open Source

Java Open Source » Workflow Engines » bpmscript 
bpmscript » org » bpmscript » web » ProcessInstanceController.java
package org.bpmscript.web;

import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.bpmscript.IProcessInstance;
import org.bpmscript.IProcessSource;
import org.bpmscript.jbi.tasklist.IRemoteTaskListManager;
import org.bpmscript.jbi.tasklist.ITask;
import org.bpmscript.remote.IRemoteProcessManager;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.ParameterizableViewController;

public class ProcessInstanceController extends ParameterizableViewController {

  private IRemoteProcessManager remoteProcessManager;
  private IRemoteTaskListManager remoteTaskListManager;
  
  @Override
  protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
    Map<String,Object> model = new HashMap<String,Object>();

    String processInstanceId = request.getParameter("processInstanceId");

    IProcessInstance processInstance = remoteProcessManager.getProcessInstance(processInstanceId);
    List<ITask> tasks = null;
    try {
      tasks = remoteTaskListManager.getTasksForInstance(processInstanceId);
    } catch(Exception exception) {
      tasks = new ArrayList<ITask>();
      model.put("tasksUnavailable", true);
    }
    List<IProcessInstance> children = remoteProcessManager.getChildProcessInstances(processInstanceId);
    IProcessSource processSource = remoteProcessManager.getMainSource(processInstance.getProcess().getId());
    Throwable throwable = processInstance.getThrowable();
    String stackTrace = null;
    if(throwable != null) {
      StringWriter st = new StringWriter();
      throwable.printStackTrace(new PrintWriter(st));
      stackTrace = st.toString();
    }

    model.put("processInstance", processInstance);
    model.put("tasks", tasks);
    model.put("children", children);
    model.put("processSource", processSource);
    model.put("stackTrace", stackTrace);
    return new ModelAndView(getViewName(), model);
  }

  public void setRemoteProcessManager(IRemoteProcessManager remoteProcessManager) {
    this.remoteProcessManager = remoteProcessManager;
  }

  public void setRemoteTaskListManager(
      IRemoteTaskListManager remoteTaskListManager) {
    this.remoteTaskListManager = remoteTaskListManager;
  }
  
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.