Package de.danet.an.workflow.api

Examples of de.danet.an.workflow.api.WorkflowService


     * Import the process definitions from a XPDL file
     * unsing the ProcessDefinitionDirectory bean.
     */
    public void importProcessDefinitions() throws Exception {
  WorkflowServiceFactory wsf = WorkflowServiceFactory.newInstance();
  WorkflowService ws = wsf.newWorkflowService();
  pdd = ws.processDefinitionDirectory();
  InputStream is = getClass().getResourceAsStream("/load/processes.xml");
  assertTrue (is != null);
  BufferedReader br = new BufferedReader
      (new InputStreamReader(is, "ISO-8859-1"));
  StringBuffer sb = new StringBuffer();
View Full Code Here


  HttpSession session = request.getSession(true);
  if (logger.isDebugEnabled()) {
      logger.debug("Post called for session " + session.getId());
  }

  WorkflowService wfs = getWorkflowService();
  if (wfs == null) {
      response.sendError
    (HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
     "Unable to retrieve workflow service");
      return;
  }
  Channel channel = null;
  boolean invalidateSession = false;
  try {
      // Retrieve (or create) process
      ProcessLookup pl = lookupProcess
    (session, packageID, processID,
     sendData, dataItemName, dataItemValue);
     
      // Open channel to process (and start process, or send data)
            if (waitForResponse) {
                channel = openChannel(pl);
            }
            if (pl.created) {
                pl.process.start();
            } else {
                sendData (session, channel, sendData);
            }
            // If no response expected, that's it
            if (!waitForResponse) {
                response.setStatus(HttpServletResponse.SC_OK);
                return;
            }

      // forward answer from process
      Map data = receiveData (session, channel);
      ResponseInfo responseInfo = getResponseInfo(data);
      invalidateSession = responseInfo.invalidateSession;

      response.setStatus(HttpServletResponse.SC_OK);
      String mt = responseInfo.mimeType;
      if (mt.indexOf("charset=") < 0) {
    mt = mt + "; charset=UTF-8";
      }
      if (logger.isDebugEnabled ()) {
    logger.debug ("Response (of type \"" + mt + "\") is:\n"
            + responseInfo.responseData);
      }
      response.setContentType(mt);
      PrintWriter ow = response.getWriter ();
      ow.write(responseInfo.responseData);
      ow.close();
      return;
  } catch (CannotStartException e) {
      logger.error(e.getMessage());
            response.sendError
                (HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage());
  } catch (AlreadyRunningException e) {
      logger.error(e.getMessage());
            response.sendError
                (HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage());
  } catch (ProcessingException e) {
      response.sendError (e.getStatusCode(), e.getMessage());
      return;
  } finally {
      if (channel != null ) {
    wfs.release(channel);
      }
      if (invalidateSession) {
    session.invalidate();
      }
  }
View Full Code Here

      if (tok.hasMoreTokens()) {
    processID = tok.nextToken();
      }
  }

  WorkflowService wfs = getWorkflowService();
  if (wfs == null) {
      response.sendError
    (HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
     "Unable to retrieve workflow service");
      return;
  }

  // Create new process
  Channel channel = null;
  try {
      ProcessData sendData = new DefaultProcessData();
      // Create new process
      ProcessLookup pl = lookupProcess
    (null, packageID, processID, sendData, null, null);
     
      // Build connection to process and start process
      channel = openChannel(pl);
            if (pl.created) {
                pl.process.start();
            }
     
      // Send data to process and forward answer from process
            if (!pl.created) {
                sendData (null, channel, sendData);
            }
      Map data = receiveData (null, channel);
      ResponseInfo responseInfo = getResponseInfo(data);
      response.setStatus(HttpServletResponse.SC_OK);
      String mt = responseInfo.mimeType;
      if (mt.indexOf("charset=") < 0) {
    mt = mt + "; charset=UTF-8";
      }
      if (logger.isDebugEnabled ()) {
    logger.debug ("Response (of type \"" + mt + "\") is:\n"
            + responseInfo.responseData);
      }
      response.setContentType(mt);
      PrintWriter ow = response.getWriter ();
      ow.write(responseInfo.responseData);
      ow.close();
      return;
        } catch (CannotStartException e) {
            logger.error(e.getMessage());
            response.sendError
                (HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage());
        } catch (AlreadyRunningException e) {
            logger.error(e.getMessage());
            response.sendError
                (HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage());
  } catch (ProcessingException e) {
      response.sendError (e.getStatusCode(), e.getMessage());
      return;
  } finally {
      if (channel != null ) {
    wfs.release(channel);
      }
  }
    }
View Full Code Here

  (HttpSession session, String packageID, String processID,
   ProcessData initData, String dataItemName, String dataItemValue)
  throws ProcessingException {
  while (true) {
      try {
    WorkflowService wfs = getWorkflowService();
    if (wfs == null) {
        throw new ProcessingException
      (HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
       "Unable to retrieve workflow service");
    }
    ProcessLookup pl = new ProcessLookup();
    ProcessDefinitionDirectory procDefDir
                    = wfs.processDefinitionDirectory();
    if ( packageID != null && processID != null ) {
                    ProcessMgr mgr = null;
        try {
      mgr = procDefDir.processMgr(packageID, processID);
        } catch (InvalidKeyException e) {
      throw new ProcessingException
          (HttpServletResponse.SC_BAD_REQUEST,
           e.getMessage());
        }
                    String mgrName = mgr.name();
        if (dataItemName != null && dataItemValue != null) {
      // Try to connect to existing process
      Collection procs = mgr
          .findByDataItem(dataItemName, dataItemValue);
      if (procs.size() == 1)  {
                            pl.process = (WfProcess)procs.iterator().next();
          pl.procKey = pl.process.key();
          pl.packageId = packageID;
          pl.processId = processID;
          if ( session != null) {
        session.setAttribute("WfM_mgrName", mgr.name());
        session.setAttribute("WfM_procKey", pl.procKey);
          }
                            return pl;
                        }
      if (procs.size() > 1) {
          logger.error
                                ("More than one process found for " + mgr.name()
                                 + ", data item: " + dataItemName + " = "
         + dataItemValue);
          throw new ProcessingException
        (HttpServletResponse.SC_CONFLICT,
         "More than one matching process found");
      }
                        // add to init data for creation
                        initData.put(dataItemName, dataItemValue);
        }
                    // Not found, create new process
                    MethodInvocationBatch mib = new MethodInvocationBatch();
                    mib.addInvocation
                        (mgr, "createProcess", new String[]
                         {"de.danet.an.workflow.omgcore.WfRequester"},
                         new Object[]{new DefaultRequester(wfs)});
                    mib.addInvocation
                        (-1, "setProcessContext", new String[]
                         {"de.danet.an.workflow.omgcore.ProcessData"},
                         new Object[]{initData}, false);
                    mib.addInvocation(-2, "key", null, null, false);
                    MethodInvocationBatch.Result mir
                        = (MethodInvocationBatch.Result)wfs.executeBatch(mib);
                    if (mir.hasExceptions ()) {
                        Exception e = mir.firstException ();
                        logger.error ("Problem executing batch: "
                                      + e.getMessage(), e);
                        throw new ProcessingException
                            (HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
                             mir.firstException ().getMessage());
                    }
                    pl.process = (WfProcess)mir.result(0);
                    pl.procKey = mir.resultAsString(2);
                    pl.packageId = packageID;
                    pl.processId = processID;
                    pl.created = true;
                    if ( session != null) {
                        session.setAttribute("WfM_mgrName", mgrName);
                        session.setAttribute("WfM_procKey", pl.procKey);
                    }
                    return pl;
    }
    if (session != null) {
        // Retrieve process key from session context
        String mgrName
                        = (String)session.getAttribute("WfM_mgrName");
        String procKey
                        = (String)session.getAttribute("WfM_procKey");
        if (mgrName == null || procKey == null) {
                        throw new ProcessingException
                            (HttpServletResponse.SC_BAD_REQUEST,
                             "No process information available");
                    }
        ProcessDirectory procDir = wfs.processDirectory();
        try {
            pl.process
                = procDir.lookupProcess(mgrName, procKey);
            pl.procKey = pl.process.key();
        } catch (InvalidKeyException e) {
View Full Code Here

     */
    private Channel openChannel  (ProcessLookup pl)
  throws ProcessingException {
  while (true) {
       try {
    WorkflowService wfs = getWorkflowService();
    if (wfs == null) {
        throw new ProcessingException
      (HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
       "Unable to retrieve workflow service");
    }
    ProcessDefinitionDirectory procDefDir
                    = wfs.processDefinitionDirectory();
    ProcessMgr mgr = null;
    try {
        mgr = procDefDir.processMgr(pl.packageId, pl.processId);
    } catch (InvalidKeyException e) {
        throw new ProcessingException
      (HttpServletResponse.SC_BAD_REQUEST,
       e.getMessage());
    }
    ProcessDirectory procDir = wfs.processDirectory();
    WfProcess proc = null;
    try {
        proc = procDir.lookupProcess(mgr.name(), pl.procKey);
    } catch (InvalidKeyException e) {
        throw new ProcessingException
      (HttpServletResponse.SC_GONE,
       "Process has been removed");
    }
    return wfs.getChannel(proc, "initiator");
      } catch (RemoteException e) {
    logger.debug (e.getMessage(), e);
      }
  }
    }
View Full Code Here

        mib.addInvocation (process(), "processDefinition", null, null);
        mib.addInvocation(-1, "contextSignature", null, null, true);
        mib.addInvocation(process(), "processContext", null, null);
        MethodInvocationBatch.Result mir = null;
        try {
            WorkflowService wfs = WorkflowServiceConnection
                .instance("workflowServiceConnection").getWorkflowService();
            mir = (MethodInvocationBatch.Result)wfs.executeBatch(mib);
        } catch (InvocationTargetException e) {
            throw (IllegalStateException)
                (new IllegalStateException (e.getMessage())).initCause(e);
        }
        if (mir.hasExceptions ()) {
View Full Code Here

        out.println("<html>");
        out.println("<head><title>Test Servlet</title></head>");
        out.println("<body>");
        out.println("<h1>Process definitions</h1>");

  WorkflowService wfs = null;
  ProcessDefinitionDirectory pdd = null;
  try {
      WorkflowServiceFactory wfsf = WorkflowServiceFactory.newInstance ();
      wfs = wfsf.newWorkflowService();
      pdd = wfs.processDefinitionDirectory();
      for (Iterator i = pdd.processDefinitions().iterator ();
     i.hasNext();) {
    ProcessDefinition pd = (ProcessDefinition)i.next ();
    out.println(pd.packageName() + "/" + pd.processName() + "<br>");
      }
  } finally {
      if (wfs != null) {
    wfs.release(pdd);
    wfs.release(wfs);
      }
  }
        out.println("</body></html>");
    }
View Full Code Here

                    "Unable to access SOAP subsystem: " + e.getMessage());
            return;
        }

        SOAPMessage respMsg = null;
        WorkflowService wfs = null;
        // workaround JaWE bug
        boolean agentIsJaWE = false;
        Throwable fatalProblem = null;

        try {
View Full Code Here

            } catch (LoginException e) {
                logger.error("login error", e);
                return;
            }

            WorkflowService wfs = null;
            while (running && wfs == null) {
                try {
                    wfs = getWorkflowService();
                } catch (FactoryConfigurationError fce) {
                    try {
                        sleep(500);
                    } catch (InterruptedException e) {
                        return;
                    }
                }
            }
           
            try {
                eventSubscriber = wfs.createEventSubscriber();
            } catch (IOException e) {
                logger.error
                    ("Cannot create event subscriber: " + e.getMessage(), e);
                return;
            }
View Full Code Here

     * realized. Override this method to change this way.
     * @exception Exception if an error occurs
     */
    protected void setUp() throws Exception {
  super.setUp();
  WorkflowService wfs = WorkflowServiceFactory.newInstance()
      .newWorkflowService();
  try {
      defDir = new WrappedProcessDefinitionDirectory
    (wfs.processDefinitionDirectory());
  } catch(RemoteException exc) {
      System.err.println("Process definition directory not accessible: "
             + exc.getMessage());
      System.exit(-1);
  }

  procDir = wfs.processDirectory();
  requester = new DefaultRequester(wfs);
    }
View Full Code Here

TOP

Related Classes of de.danet.an.workflow.api.WorkflowService

Copyright © 2018 www.massapicom. 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.