How to Use SOAP with osworkflow---client test2

View: New views
1 Messages — Rating Filter:   Alert me  

How to Use SOAP with osworkflow---client test2

by Shantanu Puranik :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Dear all:
I download osworkflow2.8 and deploy osworkflow-2.8.0-example
(my environment: JDK1.5+Tomcat5.5+MSSQL2005)

I can use soap to create a new workflow entry like this:newworkflow.jsp
========================================================
<%@ page import="com.opensymphony.workflow.Workflow"%>
<%@ page import="com.opensymphony.workflow.basic.BasicWorkflow"%>
<%@ page import="org.codehaus.xfire.client.XFireProxyFactory"%>
<%@ page import="org.codehaus.xfire.service.Service"%>
<%@ page import="org.codehaus.xfire.service.binding.ObjectServiceFactory"%>

<%
        String serviceURL = "http://localhost:8080/osworkflow/soap/Workflow";
        Service serviceModel = new ObjectServiceFactory().create(Workflow.class);
        XFireProxyFactory serviceFactory = new XFireProxyFactory();
       
        Workflow wf = (Workflow) serviceFactory.create(serviceModel, serviceURL);
    //Workflow wf = new BasicWorkflow((String) session.getAttribute("username"));
        long id = wf.initialize("example", 100, null);
%>

New workflow entry <a href="test.jsp?id=<%=id%>">#<%=id%></a> created and initialized!

<%@ include file="nav.jsp" %>
==========================================================
but when i try to do other things like:test.jsp
===========================================================
<%
.......
    Long id = Long.parseLong(request.getParameter("id"));

    String doString = request.getParameter("do");
    if (doString != null && !doString.equals("")) {
        int action = Integer.parseInt(doString);
        wf .doAction(id, action, Collections.EMPTY_MAP);
    }

    int[] actions = wf.getAvailableActions(id, null);
    WorkflowDescriptor wd =  wf.getWorkflowDescriptor(wf.getWorkflowName(id));
       
        for (int i = 0; i < actions.length; i++) {
        String name = wd.getAction(actions[i]).getName();
        %>
        <li> <a href="test.jsp?id=<%=id%>&do=<%= actions[i] %>"><%= name %></a>
        <%
    }
   
%>
......
=========================================================
i got error message:

exception

org.apache.jasper.JasperException: Exception in JSP: /test.jsp:33

30:     }
31:
32:     int[] actions = wf.getAvailableActions(id, null);
33:     WorkflowDescriptor wd =  wf.getWorkflowDescriptor(wf.getWorkflowName(id));
34:
35: for (int i = 0; i < actions.length; i++) {
36:         String name = wd.getAction(actions[i]).getName();


Stacktrace:
        org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:451)
        org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:373)
        org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
        org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


root cause

org.codehaus.xfire.XFireRuntimeException: Could not invoke service.. Nested exception is org.codehaus.xfire.fault.XFireFault: No write method for property {http://loader.workflow.opensymphony.com}commonActions in class com.opensymphony.workflow.loader.WorkflowDescriptor
        org.codehaus.xfire.client.XFireProxy.handleRequest(XFireProxy.java:92)
        org.codehaus.xfire.client.XFireProxy.invoke(XFireProxy.java:57)
        $Proxy0.getWorkflowDescriptor(Unknown Source)
        org.apache.jsp.test_jsp._jspService(test_jsp.java:87)
        org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
        org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
        org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
        org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


root cause

org.codehaus.xfire.fault.XFireFault: No write method for property {http://loader.workflow.opensymphony.com}commonActions in class com.opensymphony.workflow.loader.WorkflowDescriptor
        org.codehaus.xfire.aegis.type.basic.BeanType.writeProperty(BeanType.java:283)
        org.codehaus.xfire.aegis.type.basic.BeanType.readObject(BeanType.java:167)
        org.codehaus.xfire.aegis.AegisBindingProvider.readParameter(AegisBindingProvider.java:169)
        org.codehaus.xfire.service.binding.AbstractBinding.read(AbstractBinding.java:206)
        org.codehaus.xfire.service.binding.WrappedBinding.readMessage(WrappedBinding.java:51)
        org.codehaus.xfire.soap.handler.SoapBodyHandler.invoke(SoapBodyHandler.java:42)
        org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
        org.codehaus.xfire.client.Client.onReceive(Client.java:406)
        org.codehaus.xfire.transport.http.HttpChannel.sendViaClient(HttpChannel.java:139)
        org.codehaus.xfire.transport.http.XFireServletChannel.send(XFireServletChannel.java:48)
        org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:26)
        org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
        org.codehaus.xfire.client.Invocation.invoke(Invocation.java:79)
        org.codehaus.xfire.client.Invocation.invoke(Invocation.java:114)
        org.codehaus.xfire.client.Client.invoke(Client.java:336)
        org.codehaus.xfire.client.XFireProxy.handleRequest(XFireProxy.java:77)
        org.codehaus.xfire.client.XFireProxy.invoke(XFireProxy.java:57)
        $Proxy0.getWorkflowDescriptor(Unknown Source)
        org.apache.jsp.test_jsp._jspService(test_jsp.java:87)
        org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
        org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
        org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
        org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


why i can't get WorkflowDescriptor???
(WorkflowDescriptor wd =  wf.getWorkflowDescriptor(wf.getWorkflowName(id));)

i also can't use workflow.query() like underway.jsp
======================================================
....
List workflows = (List) wf.query(query);
.....
======================================================

the example can run without error if i use basicworkflow:
Workflow wf = new BasicWorkflow((String) session.getAttribute("username"));


Please kindly help me and excuse my poor English >""""<
Thank a lot!!
---------------------------------------------------------------------
Posted via Jive Forums
http://forums.opensymphony.com/thread.jspa?threadID=377384&messageID=463890#463890


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@...
For additional commands, e-mail: users-help@...

LightInTheBox - Buy quality products at wholesale price