You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ode.apache.org by Krishnakumar B <ww...@gmail.com> on 2007/03/14 09:00:41 UTC

Help with basic BPEL process in ODE

I am trying to create a basic BPEL process using ODE.

The process has

1) Receive
2) Invoke
3) Reply

I have created the BPEL, WSDL for process and have the WSDL for
external web service.

I am trying to write the deploy.xml file but dont know what values to
give for Service Name And Port. The WSDL for my process doesnt have
Service Name and Port.

All the examples in ODE have service endpoints for process WSDL? Is
this required as i dont see this for BPEL flows in other products.

<deploy xmlns="http://ode.fivesight.com/schemas/2006/06/27/dd"
	xmlns:pns="http://process.com" xmlns:wns="http://wsdl.process.com">
	<process name="pns:CarRentalProcess">
		<active>true</active>
		<provide partnerLink="XXXX">
			<service name="wns:XXXX" port="XXXX"/>
		</provide>
	</process>
</deploy>

WSDL for BPEL process

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
	xmlns:tns="http://wsdl.process.com"
	xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="CarRentalProcess"
	xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/"
	xmlns:reserve="http://car.com"
	targetNamespace="http://wsdl.process.com">
	<wsdl:import namespace="http://car.com"
		location="./CarRentalManagerService.wsdl" />

	<wsdl:message name="CarRentalProcessRequestMessage">
		<wsdl:part name="checkAvailability"
type="reserve:CarRentalManagerSEI_checkAvailability" />
	</wsdl:message>
	
	<wsdl:portType name="CarRentalProcessPT">
		<wsdl:operation name="checkAvailability">
			<wsdl:input message="tns:CarRentalProcessRequestMessage" />
		</wsdl:operation>
	</wsdl:portType>
	<!-- Partner link type -->
	<plnk:partnerLinkType name="CarRentalProcessLT">
		<plnk:role name="carRentalProcessService">
			<plnk:portType name="tns:CarRentalProcessPT" />
		</plnk:role>
	</plnk:partnerLinkType>

</wsdl:definitions>

and BPEL

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

<process name="CarRentalProcess" targetNamespace="http://process.com"
         xmlns="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
         xmlns:xs="http://www.w3.org/2001/XMLSchema"
         xmlns:carrental="http://process.com"
         xmlns:reserve="http://car.com">

<partnerLinks>

       <partnerLinks>
          <partnerLink name="client"
	                     partnerLinkType="carrental:CarRentalProcessLT"
	                     myRole="carRentalProcessService"
	                     partnerRole="carRentalProcessServiceCustomer"/>
	  <partnerLink name="carRentalManager"
                   partnerLinkType="carrental:carRentalLT"
                   partnerRole="carRentalManagerService"/>

        </partnerLinks>

        <variables>
           <variable name="CarRentalProcessRequest"
	                   messageType="carrental:CarRentalProcessRequestMessage"/>
	   <variable name="CarRentalManagerRequest"
                messageType="reserve:CarRentalManagerSEI_checkAvailability"/>
           <variable name="CarRentalManagerResponse"

messageType="reserve:CarRentalManagerSEI_checkAvailabilityResponse"/>
	   <variable name="CarRentalProcessResponse"
                messageType="carrental:CarRentalProcessResponseMessage"/>
        </variables>

        <sequence>
           <sequence>
	
	         <!-- Receive the initial request for business travel from client -->
	         <receive partnerLink="client"
	                  portType="carrental:CarRentalProcessPT"
	                  operation="checkAvailability"
	                  variable="CarRentalProcessRequest"
	                  createInstance="yes" />

		   <assign>
		        <copy>
		          <from variable="CarRentalProcessRequest" part="checkAvailability"/>
		          <to variable="CarRentalManagerRequest" part="checkAvailability"/>
		        </copy>
		   </assign>

		   <invoke partnerLink="carRentalManager"
	              portType="reserve:CarRentalManagerSEI"
	              operation="checkAvailability"
	              inputVariable="CarRentalManagerRequest"
	              outputVariable="CarRentalManagerResponse" />
	
		   <assign>
		        <copy>
		          <from variable="CarRentalManagerResponse"
part="checkAvailabilityResponse"/>
		          <to variable="CarRentalManagerResponse"
part="checkAvailabilityResponse"/>
		        </copy>
		   </assign>
	
		   <reply partnerLink="client"
	                  portType="carrental:CarRentalProcessPT"
	                  operation="checkAvailability"
	                  variable="CarRentalProcessResponse"/>
        </sequence>

</partnerLinks>
</process>

Regards
Krish

Re: Help with basic BPEL process in ODE

Posted by Alex Boisvert <bo...@intalio.com>.
Hi Krish,

Yes you will need to add <service> and <binding> definitions to your WSDL in
order to make your service concrete.   This is not something that Ode does
automatically, as we deemed it better for the user explicitly define how to
expose services externally.

You can easily copy and adjust fragments from the examples:
http://svn.apache.org/repos/asf/incubator/ode/trunk/distro-axis2/src/examples/HelloWorld2/
(RPC-Lit binding)
http://svn.apache.org/repos/asf/incubator/ode/trunk/distro-axis2/src/examples/MagicSession/
(Doc-Lit binding)

(I am assuming you're using the Axis2 distribution... if you're using JBI
then it's a different ballgame)

alex



On 3/14/07, Krishnakumar B <ww...@gmail.com> wrote:
>
> I am trying to create a basic BPEL process using ODE.
>
> The process has
>
> 1) Receive
> 2) Invoke
> 3) Reply
>
> I have created the BPEL, WSDL for process and have the WSDL for
> external web service.
>
> I am trying to write the deploy.xml file but dont know what values to
> give for Service Name And Port. The WSDL for my process doesnt have
> Service Name and Port.
>
> All the examples in ODE have service endpoints for process WSDL? Is
> this required as i dont see this for BPEL flows in other products.
>
> <deploy xmlns="http://ode.fivesight.com/schemas/2006/06/27/dd"
>         xmlns:pns="http://process.com" xmlns:wns="http://wsdl.process.com
> ">
>         <process name="pns:CarRentalProcess">
>                 <active>true</active>
>                 <provide partnerLink="XXXX">
>                         <service name="wns:XXXX" port="XXXX"/>
>                 </provide>
>         </process>
> </deploy>
>
> WSDL for BPEL process
>
> <?xml version="1.0" encoding="UTF-8"?>
> <wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
>         xmlns:tns="http://wsdl.process.com"
>         xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
>         xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> name="CarRentalProcess"
>         xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/"
>         xmlns:reserve="http://car.com"
>         targetNamespace="http://wsdl.process.com">
>         <wsdl:import namespace="http://car.com"
>                 location="./CarRentalManagerService.wsdl" />
>
>         <wsdl:message name="CarRentalProcessRequestMessage">
>                 <wsdl:part name="checkAvailability"
> type="reserve:CarRentalManagerSEI_checkAvailability" />
>         </wsdl:message>
>
>         <wsdl:portType name="CarRentalProcessPT">
>                 <wsdl:operation name="checkAvailability">
>                         <wsdl:input
> message="tns:CarRentalProcessRequestMessage" />
>                 </wsdl:operation>
>         </wsdl:portType>
>         <!-- Partner link type -->
>         <plnk:partnerLinkType name="CarRentalProcessLT">
>                 <plnk:role name="carRentalProcessService">
>                         <plnk:portType name="tns:CarRentalProcessPT" />
>                 </plnk:role>
>         </plnk:partnerLinkType>
>
> </wsdl:definitions>
>
> and BPEL
>
> <?xml version="1.0" encoding="utf-8"?>
>
> <process name="CarRentalProcess" targetNamespace="http://process.com"
>          xmlns="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
>          xmlns:xs="http://www.w3.org/2001/XMLSchema"
>          xmlns:carrental="http://process.com"
>          xmlns:reserve="http://car.com">
>
> <partnerLinks>
>
>        <partnerLinks>
>           <partnerLink name="client"
>
> partnerLinkType="carrental:CarRentalProcessLT"
>                              myRole="carRentalProcessService"
>
> partnerRole="carRentalProcessServiceCustomer"/>
>           <partnerLink name="carRentalManager"
>                    partnerLinkType="carrental:carRentalLT"
>                    partnerRole="carRentalManagerService"/>
>
>         </partnerLinks>
>
>         <variables>
>            <variable name="CarRentalProcessRequest"
>
> messageType="carrental:CarRentalProcessRequestMessage"/>
>            <variable name="CarRentalManagerRequest"
>
>                 messageType="reserve:CarRentalManagerSEI_checkAvailability"/>
>            <variable name="CarRentalManagerResponse"
>
> messageType="reserve:CarRentalManagerSEI_checkAvailabilityResponse"/>
>            <variable name="CarRentalProcessResponse"
>                 messageType="carrental:CarRentalProcessResponseMessage"/>
>         </variables>
>
>         <sequence>
>            <sequence>
>
>                  <!-- Receive the initial request for business travel from
> client -->
>                  <receive partnerLink="client"
>                           portType="carrental:CarRentalProcessPT"
>                           operation="checkAvailability"
>                           variable="CarRentalProcessRequest"
>                           createInstance="yes" />
>
>                    <assign>
>                         <copy>
>                           <from variable="CarRentalProcessRequest"
> part="checkAvailability"/>
>                           <to variable="CarRentalManagerRequest"
> part="checkAvailability"/>
>                         </copy>
>                    </assign>
>
>                    <invoke partnerLink="carRentalManager"
>                       portType="reserve:CarRentalManagerSEI"
>                       operation="checkAvailability"
>                       inputVariable="CarRentalManagerRequest"
>                       outputVariable="CarRentalManagerResponse" />
>
>                    <assign>
>                         <copy>
>                           <from variable="CarRentalManagerResponse"
> part="checkAvailabilityResponse"/>
>                           <to variable="CarRentalManagerResponse"
> part="checkAvailabilityResponse"/>
>                         </copy>
>                    </assign>
>
>                    <reply partnerLink="client"
>                           portType="carrental:CarRentalProcessPT"
>                           operation="checkAvailability"
>                           variable="CarRentalProcessResponse"/>
>         </sequence>
>
> </partnerLinks>
> </process>
>
> Regards
> Krish
>