You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ode.apache.org by Simone Maletta <si...@alice.it> on 2008/02/13 09:48:52 UTC

Async BPEL process

Hy guys I've got a question for you all,
    I'm writing a silly application made of two BPEL process: the first one, called call, is a sync process that invoke in an async manner the second one, echo, and then reply to the caller.
As you may imagine the echo process nothing do than send back the received string.
here is my problem: invoking call I've got a run-time error : "Unknown operation "echoReq" on port Type "echoOutPortType"!
The think is that I never use echoOutPortType with echoReq operation.
I don't know why I got this.
I forget: I'm using ode1.0.
Here is my bpel and wsdl files and deploy.xml too!
Thank you all, regards

Simone


-------------------call.wsdl---------------
<?xml version="1.0" encoding ="UTF-8"?>

<wsdl:definitions

targetNamespace="http://localhost:8080/call.wsdl"

xmlns="http://schemas.xmlsoap.org/wsdl/"

xmlns:tns="http://localhost:8080/call.wsdl"

xmlns:echo="http://localhost:8080/echo.wsdl"

xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 

xmlns:xsd="http://www.w3.org/2001/XMLSchema"

xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"

xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype">

<import location="echo.wsdl"

namespace="http://localhost:8080/echo.wsdl"/>

<wsdl:message name="callMessage">

<wsdl:part name="tellMe" type="xsd:string"/>

</wsdl:message>

<wsdl:portType name="callPortType">

<wsdl:operation name="call">

<wsdl:input message="tns:callMessage" name="Input"/>

<wsdl:output message="tns:callMessage" name="Output"/>

</wsdl:operation> 

</wsdl:portType> 

<wsdl:binding name="callBinding" type="tns:callPortType">

<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>

<wsdl:operation name="call">

<soap:operation soapAction="" style="rpc"/>

<wsdl:input>

<soap:body

namespace="http://localhost:8080/call.wsdl"

use="literal"/>

</wsdl:input>

<wsdl:output>

<soap:body

namespace="http://localhost:8080/call.wsdl" 

use="literal"/>

</wsdl:output>

</wsdl:operation>

</wsdl:binding>

<wsdl:service name="callService">

<wsdl:port name="callPort" binding="tns:callBinding">

<soap:address location="http://localhost:8080/ode/processes/call"/>

</wsdl:port>

</wsdl:service>


<plnk:partnerLinkType name="callPartnerLinkType">

<plnk:role name="me" portType="tns:callPortType"/>

<plnk:role name="you" portType="tns:callPortType"/>

</plnk:partnerLinkType>

</wsdl:definitions>

-------------------call.bpel----------------
<process name="Call"

targetNamespace="http://localhost:8080/call"

xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable"

xmlns:tns="http://localhost:8080/ode/call"

xmlns:xsd="http://www.w3.org/2001/XMLSchema"

xmlns:test="http://localhost:8080/call.wsdl"

xmlns:echo="http://localhost:8080/echo.wsdl"

queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"

expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0">

<import location="call.wsdl"

namespace="http://localhost:8080/call.wsdl"

importType="http://schemas.xmlsoap.org/wsdl/"/>

<!-- <import location="echo.wsdl"

namespace="http://localhost:8080/echo.wsdl"

importType="http://schemas.xmlsoap.org/wsdl/"/>-->

<partnerLinks>

<partnerLink 

name="callPartnerLink"

partnerLinkType="test:callPartnerLinkType"

myRole="me"/>


<partnerLink

name="asyncPartnerLink"

partnerLinkType="echo:echoPartnerLinkType"

myRole="you"

partnerRole="me"/>



</partnerLinks>

<variables>

<variable name="inMex" messageType="test:callMessage"/>

<variable name="invMess" messageType="echo:echoMessage"/>

<variable name="invRespMessage" messageType="echo:echoMessage"/>

<variable name="outMex" messageType="test:callMessage"/>

</variables>

<sequence>

<receive

name="rec"

operation="call"

partnerLink="callPartnerLink"

portType="test:callPortType"

variable="inMex"

createInstance="yes"/>


<assign>

<copy>

<from variable="inMex" part="tellMe"/>

<to variable="invMess" part="tellMe"/>

</copy>

</assign>

<invoke

name="inv"

operation="echoReq"

partnerLink="asyncPartnerLink"

portType="echo:echoInPortType"

inputVariable="invMess"

/>

<receive

name="respInv"

operation="echoResp"

partnerLink="asyncPartnerLink"

portType="echo:echoOutPortType"

variable="invRespMessage"

/>

<assign>

<copy>

<from variable="invRespMessage" part="tellMe"/>

<to variable="outMex" part="tellMe"/>

</copy>

</assign>

<reply operation="call"

partnerLink="callPartnerLink"

portType="test:callPortType"

variable="outMex">

</reply>

</sequence>

</process>


-------------echo.wsdl--------------------------------------

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

<wsdl:definitions

targetNamespace="http://localhost:8080/echo.wsdl"

xmlns="http://schemas.xmlsoap.org/wsdl/"

xmlns:tns="http://localhost:8080/echo.wsdl"

xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 

xmlns:xsd="http://www.w3.org/2001/XMLSchema"

xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"

xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype"

xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process">

<wsdl:message name="echoMessage">

<wsdl:part name="tellMe" element="xsd:string"/>

</wsdl:message>


<wsdl:portType name="echoInPortType">

<wsdl:operation name="echoReq">

<wsdl:input message="tns:echoMessage" name="echo"/>

</wsdl:operation> 

</wsdl:portType>

<wsdl:portType name="echoOutPortType">

<wsdl:operation name="echoResp">

<wsdl:input message="tns:echoMessage" name="echo"/>

</wsdl:operation> 

</wsdl:portType>

<bpws:properties name="echoProperty" type="xsd:string"/>

<wsdl:binding name="echoInBinding" type="tns:echoInPortType">

<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

<wsdl:operation name="echoReq">

<soap:operation soapAction="" style="document"/>

<wsdl:input>

<soap:body

namespace="http://localhost:8080/echo.wsdl"

use="literal"/>

</wsdl:input>

</wsdl:operation>

</wsdl:binding>

<wsdl:binding name="echoOutBinding" type="tns:echoOutPortType">

<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

<wsdl:operation name="echoResp">

<soap:operation soapAction="" style="document"/>

<wsdl:input>

<soap:body

namespace="http://localhost:8080/echo.wsdl"

use="literal"/>

</wsdl:input>

</wsdl:operation>

</wsdl:binding>

<wsdl:service name="echoService">

<wsdl:port name="echoInPort" binding="tns:echoInBinding">

<soap:address location="http://localhost:8080/ode/processes/echoIn"/>

</wsdl:port>

<wsdl:port name="echoOutPort" binding="tns:echoOutBinding">

<soap:address location="http://localhost:8080/ode/processes/echoOut"/>

</wsdl:port>

</wsdl:service>

<plnk:partnerLinkType name="echoPartnerLinkType">

<plnk:role name="me" portType="tns:echoInPortType"/>

<plnk:role name="you" portType="tns:echoOutPortType"/>

</plnk:partnerLinkType>

<!--<propertyAlias propertyName="tns:echoProperty" 

messageType="tns:echoMessage"

part="echoString"

/>-->


</wsdl:definitions>



-----------------------echo.bpel----------------------------

<process name="Echo"

targetNamespace="http://localhost:8080/echo"

xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable"

xmlns:tns="http://localhost:8080/ode/echo"

xmlns:xsd="http://www.w3.org/2001/XMLSchema"

xmlns:test="http://localhost:8080/echo.wsdl"

queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"

expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0">

<import location="echo.wsdl"

namespace="http://localhost:8080/echo.wsdl"

importType="http://schemas.xmlsoap.org/wsdl/"/>

<partnerLinks>

<partnerLink 

name="echoPartnerLink" 

partnerLinkType="test:echoPartnerLinkType"

myRole="me"

partnerRole="you"/>

</partnerLinks>

<variables>

<variable name="inMex" messageType="test:echoMessage"/>

<variable name="outMex" messageType="test:echoMessage"/>

</variables>

<sequence>

<receive name="rec" partnerLink="echoPartnerLink" portType="test:echoInPortType" operation="echoReq" variable="inMex" createInstance="yes"/>

<assign name="ass">

<copy>

<from variable="inMex"/>

<to variable="outMex"/>

</copy>

</assign>

<invoke 

name="echoResp"

partnerLink="echoPartnerLink"

portType="test:echoOutPortType"

operation="echoResp"

inputVariable="outMex"/>

</sequence>

</process>


---------------------deploy.xml----------------------------

<deploy xmlns="http://www.apache.org/ode/schemas/dd/2007/03"

xmlns:callB="http://localhost:8080/call" 

xmlns:callW="http://localhost:8080/call.wsdl"

xmlns:pns="http://localhost:8080/echo" 

xmlns:wns="http://localhost:8080/echo.wsdl">

<process name="callB:Call">

<active>true</active>

<provide partnerLink="callPartnerLink">

<service name="callW:callService" port="callPort"/>

</provide>

<provide partnerLink="asyncPartnerLink">

<service name="wns:echoService" port="echoOutPort"/>

</provide>

<invoke partnerLink="asyncPartnerLink">

<service name="wns:echoService" port="echoInPort"/>

</invoke>

</process>

<process name="pns:Echo">

<type>pns:Echo</type>

<provide partnerLink="echoPartnerLink">

<service name="wns:echoService" port="echoInPort"/>

</provide>

<invoke partnerLink="echoPartnerLink">

<service name="wns:echoService" port="echoOutPort"/>

</invoke>

</process>

</deploy>

Re: Async BPEL process

Posted by Simone Maletta <si...@alice.it>.
Hy guys,
    I solved the problem, I discover that to make an async call I need to 
specify two diffrent services.
Thank you all
Simone
----- Original Message ----- 
From: "Simone Maletta" <si...@alice.it>
To: "Ode User" <us...@ode.apache.org>
Sent: Wednesday, February 13, 2008 9:48 AM
Subject: Async BPEL process


Hy guys I've got a question for you all,
    I'm writing a silly application made of two BPEL process: the first one, 
called call, is a sync process that invoke in an async manner the second 
one, echo, and then reply to the caller.
As you may imagine the echo process nothing do than send back the received 
string.
here is my problem: invoking call I've got a run-time error : "Unknown 
operation "echoReq" on port Type "echoOutPortType"!
The think is that I never use echoOutPortType with echoReq operation.
I don't know why I got this.
I forget: I'm using ode1.0.
Here is my bpel and wsdl files and deploy.xml too!
Thank you all, regards

Simone


-------------------call.wsdl---------------
<?xml version="1.0" encoding ="UTF-8"?>

<wsdl:definitions

targetNamespace="http://localhost:8080/call.wsdl"

xmlns="http://schemas.xmlsoap.org/wsdl/"

xmlns:tns="http://localhost:8080/call.wsdl"

xmlns:echo="http://localhost:8080/echo.wsdl"

xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"

xmlns:xsd="http://www.w3.org/2001/XMLSchema"

xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"

xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype">

<import location="echo.wsdl"

namespace="http://localhost:8080/echo.wsdl"/>

<wsdl:message name="callMessage">

<wsdl:part name="tellMe" type="xsd:string"/>

</wsdl:message>

<wsdl:portType name="callPortType">

<wsdl:operation name="call">

<wsdl:input message="tns:callMessage" name="Input"/>

<wsdl:output message="tns:callMessage" name="Output"/>

</wsdl:operation>

</wsdl:portType>

<wsdl:binding name="callBinding" type="tns:callPortType">

<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>

<wsdl:operation name="call">

<soap:operation soapAction="" style="rpc"/>

<wsdl:input>

<soap:body

namespace="http://localhost:8080/call.wsdl"

use="literal"/>

</wsdl:input>

<wsdl:output>

<soap:body

namespace="http://localhost:8080/call.wsdl"

use="literal"/>

</wsdl:output>

</wsdl:operation>

</wsdl:binding>

<wsdl:service name="callService">

<wsdl:port name="callPort" binding="tns:callBinding">

<soap:address location="http://localhost:8080/ode/processes/call"/>

</wsdl:port>

</wsdl:service>


<plnk:partnerLinkType name="callPartnerLinkType">

<plnk:role name="me" portType="tns:callPortType"/>

<plnk:role name="you" portType="tns:callPortType"/>

</plnk:partnerLinkType>

</wsdl:definitions>

-------------------call.bpel----------------
<process name="Call"

targetNamespace="http://localhost:8080/call"

xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable"

xmlns:tns="http://localhost:8080/ode/call"

xmlns:xsd="http://www.w3.org/2001/XMLSchema"

xmlns:test="http://localhost:8080/call.wsdl"

xmlns:echo="http://localhost:8080/echo.wsdl"

queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"

expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0">

<import location="call.wsdl"

namespace="http://localhost:8080/call.wsdl"

importType="http://schemas.xmlsoap.org/wsdl/"/>

<!-- <import location="echo.wsdl"

namespace="http://localhost:8080/echo.wsdl"

importType="http://schemas.xmlsoap.org/wsdl/"/>-->

<partnerLinks>

<partnerLink

name="callPartnerLink"

partnerLinkType="test:callPartnerLinkType"

myRole="me"/>


<partnerLink

name="asyncPartnerLink"

partnerLinkType="echo:echoPartnerLinkType"

myRole="you"

partnerRole="me"/>



</partnerLinks>

<variables>

<variable name="inMex" messageType="test:callMessage"/>

<variable name="invMess" messageType="echo:echoMessage"/>

<variable name="invRespMessage" messageType="echo:echoMessage"/>

<variable name="outMex" messageType="test:callMessage"/>

</variables>

<sequence>

<receive

name="rec"

operation="call"

partnerLink="callPartnerLink"

portType="test:callPortType"

variable="inMex"

createInstance="yes"/>


<assign>

<copy>

<from variable="inMex" part="tellMe"/>

<to variable="invMess" part="tellMe"/>

</copy>

</assign>

<invoke

name="inv"

operation="echoReq"

partnerLink="asyncPartnerLink"

portType="echo:echoInPortType"

inputVariable="invMess"

/>

<receive

name="respInv"

operation="echoResp"

partnerLink="asyncPartnerLink"

portType="echo:echoOutPortType"

variable="invRespMessage"

/>

<assign>

<copy>

<from variable="invRespMessage" part="tellMe"/>

<to variable="outMex" part="tellMe"/>

</copy>

</assign>

<reply operation="call"

partnerLink="callPartnerLink"

portType="test:callPortType"

variable="outMex">

</reply>

</sequence>

</process>


-------------echo.wsdl--------------------------------------

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

<wsdl:definitions

targetNamespace="http://localhost:8080/echo.wsdl"

xmlns="http://schemas.xmlsoap.org/wsdl/"

xmlns:tns="http://localhost:8080/echo.wsdl"

xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"

xmlns:xsd="http://www.w3.org/2001/XMLSchema"

xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"

xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype"

xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process">

<wsdl:message name="echoMessage">

<wsdl:part name="tellMe" element="xsd:string"/>

</wsdl:message>


<wsdl:portType name="echoInPortType">

<wsdl:operation name="echoReq">

<wsdl:input message="tns:echoMessage" name="echo"/>

</wsdl:operation>

</wsdl:portType>

<wsdl:portType name="echoOutPortType">

<wsdl:operation name="echoResp">

<wsdl:input message="tns:echoMessage" name="echo"/>

</wsdl:operation>

</wsdl:portType>

<bpws:properties name="echoProperty" type="xsd:string"/>

<wsdl:binding name="echoInBinding" type="tns:echoInPortType">

<soap:binding style="document" 
transport="http://schemas.xmlsoap.org/soap/http"/>

<wsdl:operation name="echoReq">

<soap:operation soapAction="" style="document"/>

<wsdl:input>

<soap:body

namespace="http://localhost:8080/echo.wsdl"

use="literal"/>

</wsdl:input>

</wsdl:operation>

</wsdl:binding>

<wsdl:binding name="echoOutBinding" type="tns:echoOutPortType">

<soap:binding style="document" 
transport="http://schemas.xmlsoap.org/soap/http"/>

<wsdl:operation name="echoResp">

<soap:operation soapAction="" style="document"/>

<wsdl:input>

<soap:body

namespace="http://localhost:8080/echo.wsdl"

use="literal"/>

</wsdl:input>

</wsdl:operation>

</wsdl:binding>

<wsdl:service name="echoService">

<wsdl:port name="echoInPort" binding="tns:echoInBinding">

<soap:address location="http://localhost:8080/ode/processes/echoIn"/>

</wsdl:port>

<wsdl:port name="echoOutPort" binding="tns:echoOutBinding">

<soap:address location="http://localhost:8080/ode/processes/echoOut"/>

</wsdl:port>

</wsdl:service>

<plnk:partnerLinkType name="echoPartnerLinkType">

<plnk:role name="me" portType="tns:echoInPortType"/>

<plnk:role name="you" portType="tns:echoOutPortType"/>

</plnk:partnerLinkType>

<!--<propertyAlias propertyName="tns:echoProperty"

messageType="tns:echoMessage"

part="echoString"

/>-->


</wsdl:definitions>



-----------------------echo.bpel----------------------------

<process name="Echo"

targetNamespace="http://localhost:8080/echo"

xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable"

xmlns:tns="http://localhost:8080/ode/echo"

xmlns:xsd="http://www.w3.org/2001/XMLSchema"

xmlns:test="http://localhost:8080/echo.wsdl"

queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"

expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0">

<import location="echo.wsdl"

namespace="http://localhost:8080/echo.wsdl"

importType="http://schemas.xmlsoap.org/wsdl/"/>

<partnerLinks>

<partnerLink

name="echoPartnerLink"

partnerLinkType="test:echoPartnerLinkType"

myRole="me"

partnerRole="you"/>

</partnerLinks>

<variables>

<variable name="inMex" messageType="test:echoMessage"/>

<variable name="outMex" messageType="test:echoMessage"/>

</variables>

<sequence>

<receive name="rec" partnerLink="echoPartnerLink" 
portType="test:echoInPortType" operation="echoReq" variable="inMex" 
createInstance="yes"/>

<assign name="ass">

<copy>

<from variable="inMex"/>

<to variable="outMex"/>

</copy>

</assign>

<invoke

name="echoResp"

partnerLink="echoPartnerLink"

portType="test:echoOutPortType"

operation="echoResp"

inputVariable="outMex"/>

</sequence>

</process>


---------------------deploy.xml----------------------------

<deploy xmlns="http://www.apache.org/ode/schemas/dd/2007/03"

xmlns:callB="http://localhost:8080/call"

xmlns:callW="http://localhost:8080/call.wsdl"

xmlns:pns="http://localhost:8080/echo"

xmlns:wns="http://localhost:8080/echo.wsdl">

<process name="callB:Call">

<active>true</active>

<provide partnerLink="callPartnerLink">

<service name="callW:callService" port="callPort"/>

</provide>

<provide partnerLink="asyncPartnerLink">

<service name="wns:echoService" port="echoOutPort"/>

</provide>

<invoke partnerLink="asyncPartnerLink">

<service name="wns:echoService" port="echoInPort"/>

</invoke>

</process>

<process name="pns:Echo">

<type>pns:Echo</type>

<provide partnerLink="echoPartnerLink">

<service name="wns:echoService" port="echoInPort"/>

</provide>

<invoke partnerLink="echoPartnerLink">

<service name="wns:echoService" port="echoOutPort"/>

</invoke>

</process>

</deploy>