Forum Stats

  • 3,871,965 Users
  • 2,266,360 Discussions
  • 7,911,017 Comments

Discussions

Error calling WS from bpel

Piero Mestici
Piero Mestici Member Posts: 77 Blue Ribbon
edited Sep 21, 2020 10:11AM in BPEL

Hi All,

I create a bpel where i am calling the login webservice https://docu.ilias.de/webservice/soap/server.php?wsdl

I am able to call the login service by SOAPUI while i  have problem to call it from the bpel.

I have created the SOAP Adapter, no problem, but when i call the serivice i got the eeror below:

         <faultcode>env:Server</faultcode>

         <faultstring>Function 'process' does not exist</faultstring>

         <faultactor/>

         <detail>

  <exception>oracle.j2ee.ws.client.jaxws.JRFSOAPFaultException: Il client ha ricevuto un errore SOAP dal server: Function 'process' does not exist</exception>

I think the reason for working on SOAPUI is related to the requetst property available on the left panel.

Could anyone support me on understanding hot to configure the adapter or the invoke for calling the WS without error?

Thanks a lot.

Answers

  • Piero Mestici
    Piero Mestici Member Posts: 77 Blue Ribbon
    edited Aug 1, 2020 7:13PM

    Hi All,

    If this can help, i have notice that the payload with SOAPUi , BPEL and BPMN process are different.

    I report all of them below.

    This is the SOAPUI, working..:

    <soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:ilUserAdministration">

       <soapenv:Header/>

       <soapenv:Body>

          <urn:login soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">

             <client xsi:type="xsd:string">aaas</client>

             <username xsi:type="xsd:string">user</username>

             <password xsi:type="xsd:string">qwertyui</password>

          </urn:login>

       </soapenv:Body>

    </soapenv:Envelope>

    while the payload with BPEL invoke is:

    <?xml version="1.0" encoding="UTF-8"?><messages>

       <input>

    <toParts>

             <part xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="password">

                <stringpass xmlns:def="http://www.w3.org/2001/XMLSchema" xsi:type="def:string">qwertyui</stringpass>

             </part>

             <part xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="client">

                <stringclient xmlns:def="http://www.w3.org/2001/XMLSchema" xsi:type="def:string">aaaa</stringclient>

             </part>

             <part xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="username">

                <stringuser xmlns:def="http://www.w3.org/2001/XMLSchema" xsi:type="def:string">user</stringuser>

             </part>

          </toParts>

       </input>

       <fault>

    <bpelFault>

             <faultType>0</faultType>

             <remoteFault xmlns="http://schemas.oracle.com/bpel/extension">

                <part name="summary">

                   <summary>Function 'process' does not exist</summary>

                </part>

                <part name="code">

                   <code>{http://schemas.xmlsoap.org/soap/envelope/}Server</code>

                </part>

                <part name="detail">

                   <detail>oracle.j2ee.ws.client.jaxws.JRFSOAPFaultException: Il client ha ricevuto un errore SOAP dal server: Function 'process' does not exist</detail>

                </part>

             </remoteFault>

          </bpelFault>

       </fault>

       <faultType>

    <message>0</message>

       </faultType>

    </messages>

    while the payload with the BPM invoke is:

    <auditQueryPayload auditId="381255" ciKey="2790092" xmlns="http://xmlns.oracle.com/bpmn/engine/audit">

       <serviceInput>

          <element name="password" isBusinessIndicator="false">

             <value><password xmlns:def="http://www.w3.org/2001/XMLSchema" xsi:type="def:string" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">qwertyui</password>

    </value>

          </element>

          <element name="client" isBusinessIndicator="false">

             <value><client xmlns:def="http://www.w3.org/2001/XMLSchema" xsi:type="def:string" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">aaaa</client>

    </value>

          </element>

          <element name="username" isBusinessIndicator="false">

             <value><username xmlns:def="http://www.w3.org/2001/XMLSchema" xsi:type="def:string" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">user</username>

    </value>

          </element>

       </serviceInput>

       <dataState>

          <dataObject name="sid" isBusinessIndicator="false">

             <value>

                <![CDATA[<sid xmlns:def="http://www.w3.org/2001/XMLSchema" xsi:type="def:string" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>

    ]]>

             </value>

          </dataObject>

       </dataState>

    </auditQueryPayload>

    Thanks a lot again, i will aprreciate any support.

  • Hemanth Lakkaraju-Oracle
    Hemanth Lakkaraju-Oracle Member Posts: 412 Employee
    edited Aug 2, 2020 5:51AM

    My understanding BPEL Doesn't support RPC Style by default. Take a look at this on the way to manipulate the XML payload before invoking.

  • Piero Mestici
    Piero Mestici Member Posts: 77 Blue Ribbon
    edited Aug 2, 2020 8:56PM

    Dear Hemanth,

    Thanks for the information, i verified and in SOAP UI the style is RPC, there fore you are right.

    I tried to elaborate but i fail.

    I did the test with the below invoke

    <invoke name="Login" partnerLink="SOAPReference" portType="ns1:ILIASSoapWebservicePortType"

                operation="login"

                outputVariable="Login_lOutput" inputVariable="Login_Input" bpelx:invokeAsDetail="no"

                bpelx:inputHeaderVariable="stringclient,stringuser,stringpass"/>

    But the xml generate is completelly far away from the one from SOAP.

    Could you give me more support?

    Thanks

  • Piero Mestici
    Piero Mestici Member Posts: 77 Blue Ribbon
    edited Aug 3, 2020 4:59AM

    Dear Hemanth,

    i am trying and with the below assign and invoke definition from bpel file

        <assign name="Assign1">

          <copy>

            <from>'client'</from>

            <to expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">$Login_Input.client</to>

          </copy>

          <copy>

            <from>'username'</from>

            <to expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">$Login_Input.username</to>

          </copy>

          <copy>

            <from>'passworf'</from>

            <to expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">$Login_Input.password</to>

          </copy>

        </assign>

        <invoke name="Login" partnerLink="SOAPReference" portType="ns1:ILIASSoapWebservicePortType"

                operation="login"

                outputVariable="Login_lOutput" inputVariable="Login_Input" bpelx:invokeAsDetail="no"

                bpelx:inputHeaderVariable="Login_Input"/>

    I am getting the below payload and error:

    <input>

    <Login_Input>

             <part xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="password">

                <password xmlns:def="http://www.w3.org/2001/XMLSchema" xsi:type="def:string">passworf</password>

             </part>

             <part xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="client">

                <client xmlns:def="http://www.w3.org/2001/XMLSchema" xsi:type="def:string">client</client>

             </part>

             <part xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="username">

                <username xmlns:def="http://www.w3.org/2001/XMLSchema" xsi:type="def:string">username</username>

             </part>

          </Login_Input>

       </input>

       <fault>

    <bpelFault>

             <faultType>0</faultType>

             <remoteFault xmlns="http://schemas.oracle.com/bpel/extension">

                <part name="summary">

                   <summary>Errore durante la conversione dei nodi DOM in nodi SOAP</summary>

                </part>

                <part name="code">

                   <code>null</code>

                </part>

                <part name="detail">

                   <detail>Header child element 'password' must be namespace qualified!</detail>

                </part>

             </remoteFault>

          </bpelFault>

       </fault>

       <faultType>

    Thanks for supporting

  • Hemanth Lakkaraju-Oracle
    Hemanth Lakkaraju-Oracle Member Posts: 412 Employee
    edited Aug 10, 2020 3:55AM

    You should not be using inputHeaderVariable for the invoke. You may have to create a wrapper xml and override the inputVariable Login_Input with required XML structure.

    Piero Mestici
  • Piero Mestici
    Piero Mestici Member Posts: 77 Blue Ribbon
    edited Sep 21, 2020 10:11AM

    Dear Hermath,

    I will try to implement your suggestion.

    Thanks for the support