Apache-ODE ProcessManagement

2019-08-14 16:21发布

问题:

I can access this API/WS through
http://localhost:8080/ode/processes/ProcessManagement?wsdl.

  1. I would like to get the Process Info of a Process through this service and active it.
    The serivce has the matching operations getProcessInfo and activate.
    With listAllProcesses I get all Processes of a delpoyed package.
    For getProcessInfo/activate I need the Process pid.
    I get a <ns:pid>, using this gets me a load of Exceptions.
    Using the name of the process and other stuff I receive earlier doesn't work either.
    The pid is of type QName, perhaps thats the root of the problem.
    However I don't now how to typecast here.
    (Tried all with the eclipse Web Services Explorer and soapUI)

    question: How does a proper request for both Operations look like?

  2. When I try to consume the webservice with axi2 via eclipse, there is a undeclared variable local in the AnySimpleType class. I'm not keen on using the service this way. But since I'm already writing a Client for the DeploymentService I thought about this approach.

    question: How do I properly access the ProcessManagement?

EDIT: I have a simular problem with the DeploymentService and the undeploy Operation.
EDIT2: I figured the Problem with the DeploymentService undeploy out.
I had to get the Packagename as String. Then a made a javax.xml.namespace.QName out of it. Then I used the setPackageName of said undeploy operation.

Answer to question number 1: soapUI with listAllProcesses returns
<ns:pid>{ode/bpel/unit-test}HelloWorld2-1</ns:pid>
getProcessInfo wants

<pmap:getProcessInfo>
    <pid>?</pid>
</pmap:getProcessInfo>

Now I replaced <pid>?</pid> with
<pid xmlns:odetest="http://ode/bpel/unit-test">odetest:HelloWorld2-1</pid> and it worked like a charm.

回答1:

I remember that there was an issue with parameter ordering when using the Axis2 generated WSDL. Could you try if building a request against the original WSDL located at http://localhost:8080/ode/deployment/services/ProcessManagement works?

EDIT: Now that I got the question correctly, the problem is that ODE expects the QName to be serialized differently, i.e. in the XML way instead of the Java way. Thus, instead of <ns:pid>{ode/bpel/unit-test}HelloWorld2-1</ns:pid> the correct notation is <ns:pid xmlns:odetest="ode/bpel/unit-test">odetest:HelloWorld2-1</ns:pid>.