Package org.uengine.workflow.springws

Source Code of org.uengine.workflow.springws.GetWorkListEndpoint

package org.uengine.workflow.springws;

import java.util.List;

import javax.naming.InitialContext;
import javax.transaction.Status;
import javax.transaction.UserTransaction;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.xpath.XPath;
import org.springframework.ws.server.endpoint.AbstractJDomPayloadEndpoint;
import org.uengine.kernel.GlobalContext;
import org.uengine.processmanager.ProcessManagerFactoryBean;
import org.uengine.processmanager.ProcessManagerRemote;
import org.uengine.util.UEngineUtil;
import org.uengine.workflow.model.WorkList;
import org.uengine.workflow.springservice.WorkflowService;

public class GetWorkListEndpoint extends AbstractJDomPayloadEndpoint implements WorkflowWebServiceConstants {

  private WorkflowService workflowService;

  private XPath endpointExpression;
  private XPath filterExpression;
  private XPath pageCountExpression;
  private XPath currentPageExpression;

  public GetWorkListEndpoint(WorkflowService workflowService) {

    this.workflowService = workflowService;

    try {
      endpointExpression = XPath.newInstance("//wf:endpoint");
      endpointExpression.addNamespace(WORKFLOW_NAMESPACE);

      filterExpression = XPath.newInstance("//wf:filter");
      filterExpression.addNamespace(WORKFLOW_NAMESPACE);

      pageCountExpression = XPath.newInstance("//wf:pageCount");
      pageCountExpression.addNamespace(WORKFLOW_NAMESPACE);

      currentPageExpression = XPath.newInstance("//wf:currentPage");
      currentPageExpression.addNamespace(WORKFLOW_NAMESPACE);

    } catch (JDOMException e) {
      e.printStackTrace();
    }
  }

  @Override
  protected Element invokeInternal(Element getWorkListRequest) throws Exception {

    String endpoint = endpointExpression.valueOf(getWorkListRequest);
    String filter = filterExpression.valueOf(getWorkListRequest);
    String _pageCount = pageCountExpression.valueOf(getWorkListRequest);
    int pageCount = Integer.parseInt(UEngineUtil.isNotEmpty(_pageCount) ? _pageCount : "10");
    String _currentPage = currentPageExpression.valueOf(getWorkListRequest);
    int currentPage = Integer.parseInt(UEngineUtil.isNotEmpty(_currentPage) ? _currentPage : "1");

    ProcessManagerFactoryBean processManagerFactory = new ProcessManagerFactoryBean();
    ProcessManagerRemote pm = null;

//    InitialContext context = new InitialContext();
//    UserTransaction tx = (GlobalContext.useManagedTransaction ? (UserTransaction) context.lookup(GlobalContext.USERTRANSACTION_JNDI_NAME) : null);

    List workList = null;

    try {
      pm = processManagerFactory.getProcessManagerForReadOnly();

      workList = workflowService.getWorkList(endpoint, filter, pageCount, currentPage, pm);
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      try {
        pm.remove();
      } catch (Exception e) {
      }
    }

    Document doc = new Document(new Element(GET_WORKLIST_RESPONE, WORKFLOW_NAMESPACE));

    doc.getRootElement().addContent(new Element("totalCount", WORKFLOW_NAMESPACE).setText((String) workList.get(0)));

    for (int i = 1; i < workList.size(); i++) {
      WorkList wl = (WorkList) workList.get(i);
      Element element = new Element("workList", WORKFLOW_NAMESPACE);
      element.addContent(new Element("endpoint", WORKFLOW_NAMESPACE).setText(wl.getEndpoint()));
      element.addContent(new Element("instanceId", WORKFLOW_NAMESPACE).setText(wl.getInstanceId()));
      element.addContent(new Element("rootInstanceId", WORKFLOW_NAMESPACE).setText(wl.getRootInstanceId()));
      element.addContent(new Element("taskId", WORKFLOW_NAMESPACE).setText(wl.getTaskId()));
      element.addContent(new Element("tracingTag", WORKFLOW_NAMESPACE).setText(wl.getTracingTag()));
      element.addContent(new Element("title", WORKFLOW_NAMESPACE).setText(wl.getTitle()));
      element.addContent(new Element("defName", WORKFLOW_NAMESPACE).setText(wl.getDefName()));
      element.addContent(new Element("startDate", WORKFLOW_NAMESPACE).setText(wl.getStartDate()));
      element.addContent(new Element("duplicateTaskCount", WORKFLOW_NAMESPACE).setText(wl.getDuplicateTaskCount()));

      element.addContent(new Element("info", WORKFLOW_NAMESPACE).setText(wl.getInfo()));
      doc.getRootElement().addContent(element);
    }

    Element returnElement = doc.getRootElement();

    return returnElement;
  }

}
TOP

Related Classes of org.uengine.workflow.springws.GetWorkListEndpoint

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.