`
soboer
  • 浏览: 1312215 次
文章分类
社区版块
存档分类
最新评论

BPEL实例运行[1]——改写源码

 
阅读更多

本文介绍了如何把Oracle的一个BPEL实例改写后部署到ActiveBpel上,并运行该实例。欢迎大家对其中的错误给予指正~

该实例的业务逻辑详见http://searchwebservices.techtarget.com.cn/tips/4/2551504.shtml,此教程详细描述了实例所涉及到的3个wsdl文件以及4个bpel文件,并介绍如何部署到Oracle的BPEL服务器。实例的运行需要用到Oracle BPEL Process Manager ,它提供了一个 BPEL 控制台,通过它可以在 BPEL 服务器域中执行、监视、管理和调试 BPEL 流程。

实例简介:

定义雇员出差安排的简化业务流程:客户端调用此业务流程,指定雇员姓名、目的地、出发日期以及返回日期。此 BPEL 业务流程首先检查雇员出差状态。假设存在一个可用于进行此类检查的 Web 服务。然后,此 BPEL 流程将检查以下两家航空公司的机票价格:美国航空公司和达美航空公司。再次假设这两家航空公司均提供了可用于进行此类检查的 Web 服务。最后,此 BPEL 流程将选择较低的价格并将出差计划返回给客户端。

Oracle版的实例源码可以下到,为了使它可以运行到ActiveBpel之下,首先要改变其文件目录结构。

在ActiveBPEL Designer(V3.0)下新建一个工程,命名为AirLine

新建四个文件夹,分别命名为bpel,META-INF,pdd,wsdl.

在bpel文件夹下新建5个BPEL流程文件,这5个中,client.bpel是Oracle的实例中原来没有的,其他4个原先都有。现把它们的代码粘贴如下:

美国航空公司AmericanAirline.bpel

<?xmlversion="1.0"encoding="UTF-8"?>
<!--
BPELProcessDefinition
EditedusingActiveBPEL(tm)DesignerVersion3.0.0(http://www.active-endpoints.com)
-->
<!--Airline-->
<bpws:processxmlns:aln="http://packtpub.com/service/airline/"xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/"xmlns:ns1="http://packtpub.com/service/employee/"xmlns:xsd="http://www.w3.org/2001/XMLSchema"name="AmericanAirline"targetNamespace="http://packtpub.com/service/airline/">
<bpws:partnerLinks>
<bpws:partnerLinkmyRole="airlineService"name="AmericanAirlines"partnerLinkType="aln:flightLT"partnerRole="airlineCustomer"/>
</bpws:partnerLinks>
<bpws:variables>
<!--input-->
<bpws:variablemessageType="aln:FlightTicketRequestMessage"name="FlightDetails"/>
<!--outputfromAmericanAirlines-->
<bpws:variablemessageType="aln:TravelResponseMessage"name="FlightResponseAA"/>
</bpws:variables>
<bpws:sequence>
<!--Receivetheinitialrequest-->
<bpws:receivecreateInstance="yes"operation="FlightAvailability"partnerLink="AmericanAirlines"portType="aln:FlightAvailabilityPT"variable="FlightDetails"/>
<!--Preparetheoutput-->
<bpws:assign>
<bpws:copy>
<bpws:from>
<confirmationDataxmlns="http://packtpub.com/service/airline/">
<FlightNo>123</FlightNo>
<TravelClass>Economy</TravelClass>
<Price>120</Price>
<DepartureDateTime>2004-01-01T12:12:12+08:00</DepartureDateTime>
<ReturnDateTime>2004-01-05T12:12:12+08:00</ReturnDateTime>
<Approved>true</Approved>
</confirmationData>
</bpws:from>
<bpws:topart="confirmationData"variable="FlightResponseAA"/>
</bpws:copy>
</bpws:assign>
<!--Makeacallback-->
<bpws:invokeinputVariable="FlightResponseAA"operation="FlightTicketCallback"partnerLink="AmericanAirlines"portType="aln:FlightCallbackPT"/>
</bpws:sequence>
</bpws:process>

达美航空公司DeltaAirline.bpel

<?xmlversion="1.0"encoding="UTF-8"?>
<!--
BPELProcessDefinition
EditedusingActiveBPEL(tm)DesignerVersion3.0.0(http://www.active-endpoints.com)
-->
<!--Airline-->
<bpws:processxmlns:aln="http://packtpub.com/service/airline/"xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/"xmlns:ns1="http://packtpub.com/service/employee/"xmlns:xsd="http://www.w3.org/2001/XMLSchema"name="DeltaAirline"targetNamespace="http://packtpub.com/service/airline/">
<bpws:partnerLinks>
<bpws:partnerLinkmyRole="airlineService"name="DeltaAirlines"partnerLinkType="aln:flightLT"partnerRole="airlineCustomer"/>
</bpws:partnerLinks>
<bpws:variables>
<!--input-->
<bpws:variablemessageType="aln:FlightTicketRequestMessage"name="FlightDetails"/>
<!--outputfromDeltaAirlines-->
<bpws:variablemessageType="aln:TravelResponseMessage"name="FlightResponseDA"/>
</bpws:variables>
<bpws:sequence>
<!--Receivetheinitialrequest-->
<bpws:receivecreateInstance="yes"operation="FlightAvailability"partnerLink="DeltaAirlines"portType="aln:FlightAvailabilityPT"variable="FlightDetails"/>
<!--Preparetheoutput-->
<bpws:assign>
<bpws:copy>
<bpws:from>
<confirmationDataxmlns="http://packtpub.com/service/airline/">

<FlightNo>123</FlightNo>
<TravelClass>Economy</TravelClass>
<Price>140</Price>
<DepartureDateTime>2004-01-01T12:12:12+08:00</DepartureDateTime>
<ReturnDateTime>2004-01-05T12:12:12+08:00</ReturnDateTime>
<Approved>true</Approved>
</confirmationData>
</bpws:from>
<bpws:topart="confirmationData"variable="FlightResponseDA"/>
</bpws:copy>
</bpws:assign>
<!--Makeacallback-->
<bpws:invokeinputVariable="FlightResponseDA"operation="FlightTicketCallback"partnerLink="DeltaAirlines"portType="aln:FlightCallbackPT"/>
</bpws:sequence>
</bpws:process>

雇员状态Employee.bpel

<?xmlversion="1.0"encoding="utf-8"?>

<!--Employee-->

<processname="Employee"
targetNamespace
="http://packtpub.com/service/employee/"
xmlns
="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
xmlns:emp
="http://packtpub.com/service/employee/">

<partnerLinks>
<partnerLinkname="employeeTravelStatus"
partnerLinkType
="emp:employeeLT"
myRole
="employeeTravelStatusService"/>

</partnerLinks>

<variables>
<!--inputforthisprocess-->
<variablename="EmployeeTravelStatusRequest"messageType="emp:EmployeeTravelStatusRequestMessage"/>
<!--outputfromtheEmployeeTravelStatuswebservice-->
<variablename="EmployeeTravelStatusResponse"messageType="emp:EmployeeTravelStatusResponseMessage"/>
</variables>

<sequence>

<!--Receivetheinitialrequestforbusinesstravelfromclient-->
<receivepartnerLink="employeeTravelStatus"
portType
="emp:EmployeeTravelStatusPT"
operation
="EmployeeTravelStatus"
variable
="EmployeeTravelStatusRequest"
createInstance
="yes"/>

<!--Preparetheoutput-->
<assign>
<copy>
<fromexpression="string('Economy')"/>
<tovariable="EmployeeTravelStatusResponse"part="travelClass"/>
</copy>
</assign>

<!--Sendaresponse-->
<replypartnerLink="employeeTravelStatus"
portType
="emp:EmployeeTravelStatusPT"
operation
="EmployeeTravelStatus"
variable
="EmployeeTravelStatusResponse"/>
</sequence>

</process>

主流程Travel.bpel

<?xmlversion="1.0"encoding="UTF-8"?>
<!--
BPELProcessDefinition
EditedusingActiveBPEL(tm)DesignerVersion3.0.0(http://www.active-endpoints.com)
-->
<!--AsynchrnousBPELprocess-->
<bpws:processxmlns:aln="http://packtpub.com/service/airline/"xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/"xmlns:emp="http://packtpub.com/service/employee/"xmlns:ns1="http://example.com/loan-approval/wsdl/"xmlns:trv="http://packtpub.com/bpel/travel/"xmlns:xsd="http://www.w3.org/2001/XMLSchema"name="BusinessTravelProcess"targetNamespace="http://packtpub.com/bpel/travel/">
<bpws:partnerLinks>
<bpws:partnerLinkmyRole="travelService"name="client"partnerLinkType="trv:travelLT"partnerRole="travelServiceCustomer"/>
<bpws:partnerLinkname="employeeTravelStatus"partnerLinkType="emp:employeeLT"partnerRole="employeeTravelStatusService"/>
<bpws:partnerLinkmyRole="airlineCustomer"name="AmericanAirlines"partnerLinkType="aln:flightLT"partnerRole="airlineService"/>
<bpws:partnerLinkmyRole="airlineCustomer"name="DeltaAirlines"partnerLinkType="aln:flightLT"partnerRole="airlineService"/>
</bpws:partnerLinks>
<bpws:variables>
<!--inputforthisprocess-->
<bpws:variablemessageType="trv:TravelRequestMessage"name="TravelRequest"/>
<!--inputfortheEmployeeTravelStatuswebservice-->
<bpws:variablemessageType="emp:EmployeeTravelStatusRequestMessage"name="EmployeeTravelStatusRequest"/>
<!--outputfromtheEmployeeTravelStatuswebservice-->
<bpws:variablemessageType="emp:EmployeeTravelStatusResponseMessage"name="EmployeeTravelStatusResponse"/>
<!--inputforAmericanandDeltawebservices-->
<bpws:variablemessageType="aln:FlightTicketRequestMessage"name="FlightDetails"/>
<!--outputfromAmericanAirlines-->
<bpws:variablemessageType="aln:TravelResponseMessage"name="FlightResponseAA"/>
<!--outputfromDeltaAirlines-->
<bpws:variablemessageType="aln:TravelResponseMessage"name="FlightResponseDA"/>
<!--outputfromBPELprocess-->
<bpws:variablemessageType="aln:TravelResponseMessage"name="TravelResponse"/>
</bpws:variables>
<bpws:sequence>
<!--Receivetheinitialrequestforbusinesstravelfromclient-->
<bpws:receivecreateInstance="yes"operation="TravelApproval"partnerLink="client"portType="trv:TravelApprovalPT"variable="TravelRequest"/>
<!--PreparetheinputfortheEmployeeTravelStatusWebService-->
<bpws:assign>
<bpws:copy>
<bpws:frompart="employee"variable="TravelRequest"/>
<bpws:topart="employee"variable="EmployeeTravelStatusRequest"/>
</bpws:copy>
</bpws:assign>
<!--SynchronouslyinvoketheEmployeeTravelStatusWebService-->
<bpws:invokeinputVariable="EmployeeTravelStatusRequest"operation="EmployeeTravelStatus"outputVariable="EmployeeTravelStatusResponse"partnerLink="employeeTravelStatus"portType="emp:EmployeeTravelStatusPT"/>
<!--PreparetheinputforAAandDA-->
<bpws:assign>
<bpws:copy>
<bpws:frompart="flightData"variable="TravelRequest"/>
<bpws:topart="flightData"variable="FlightDetails"/>
</bpws:copy>
<bpws:copy>
<bpws:frompart="travelClass"variable="EmployeeTravelStatusResponse"/>
<bpws:topart="travelClass"variable="FlightDetails"/>
</bpws:copy>
</bpws:assign>
<!--MakeaconcurrentinvocationtoAAinDA-->
<bpws:flow>
<bpws:sequence>
<!--AsyncinvokeoftheAAwebserviceandwaitforthecallback-->
<bpws:invokeinputVariable="FlightDetails"operation="FlightAvailability"partnerLink="AmericanAirlines"portType="aln:FlightAvailabilityPT"/>
<bpws:receiveoperation="FlightTicketCallback"partnerLink="AmericanAirlines"portType="aln:FlightCallbackPT"variable="FlightResponseAA"/>
</bpws:sequence>
<bpws:sequence>
<!--AsyncinvokeoftheDAwebserviceandwaitforthecallback-->
<bpws:invokeinputVariable="FlightDetails"operation="FlightAvailability"partnerLink="DeltaAirlines"portType="aln:FlightAvailabilityPT"/>
<bpws:receiveoperation="FlightTicketCallback"partnerLink="DeltaAirlines"portType="aln:FlightCallbackPT"variable="FlightResponseDA"/>
</bpws:sequence>
</bpws:flow>
<!--SelectthebestofferandconstructtheTravelResponse-->
<bpws:switch>
<bpws:casecondition="bpws:getVariableData('FlightResponseAA','confirmationData','/confirmationData/aln:Price')&lt;=bpws:getVariableData('FlightResponseDA','confirmationData','/confirmationData/aln:Price')">
<!--SelectAmericanAirlines-->
<bpws:assign>
<bpws:copy>
<bpws:fromvariable="FlightResponseAA"/>
<bpws:tovariable="TravelResponse"/>
</bpws:copy>
</bpws:assign>
</bpws:case>
<bpws:otherwise>
<!--SelectDeltaAirlines-->
<bpws:assign>
<bpws:copy>
<bpws:fromvariable="FlightResponseDA"/>
<bpws:tovariable="TravelResponse"/>
</bpws:copy>
</bpws:assign>
</bpws:otherwise>
</bpws:switch>
<!--Makeacallbacktotheclient-->
<bpws:invokeinputVariable="TravelResponse"operation="ClientCallback"partnerLink="client"portType="trv:ClientCallbackPT"/>
</bpws:sequence>
</bpws:process>

调用主流程的客户端Client.bpel

<?xmlversion="1.0"encoding="UTF-8"?>
<!--
BPELProcessDefinition
EditedusingActiveBPEL(tm)DesignerVersion3.0.0(http://www.active-endpoints.com)
-->
<bpel:processxmlns:aln="http://packtpub.com/service/airline/"xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable"xmlns:cli="http://packtpub.com/bpel/client/"xmlns:emp="http://packtpub.com/service/employee/"xmlns:ns1="http://example.com/loan-approval/wsdl/"xmlns:trv="http://packtpub.com/bpel/travel/"xmlns:xsd="http://www.w3.org/2001/XMLSchema"name="Client"suppressJoinFailure="yes"targetNamespace="http://Client">
<bpel:importimportType="http://schemas.xmlsoap.org/wsdl/"location="../wsdl/Airline.wsdl"namespace="http://packtpub.com/service/airline/"/>
<bpel:importimportType="http://schemas.xmlsoap.org/wsdl/"location="../wsdl/Employee.wsdl"namespace="http://packtpub.com/service/employee/"/>
<bpel:importimportType="http://schemas.xmlsoap.org/wsdl/"location="../wsdl/Travel.wsdl"namespace="http://packtpub.com/bpel/travel/"/>
<bpel:importimportType="http://schemas.xmlsoap.org/wsdl/"location="../wsdl/Client.wsdl"namespace="http://packtpub.com/bpel/client/"/>
<bpel:importimportType="http://schemas.xmlsoap.org/wsdl/"location="file:/E:/activeBPEL/Samples/CompletedTutorial/WSDL/loanServicePT.wsdl"namespace="http://example.com/loan-approval/wsdl/"/>
<bpel:partnerLinks>
<bpel:partnerLinkmyRole="travelService"name="client"partnerLinkType="cli:clientLT"/>
<bpel:partnerLinkmyRole="travelServiceCustomer"name="travel"partnerLinkType="trv:travelLT"partnerRole="travelService"/>
</bpel:partnerLinks>
<bpel:variables>
<bpel:variablemessageType="trv:TravelRequestMessage"name="travelRequest"/>
<bpel:variablemessageType="aln:TravelResponseMessage"name="travelResponse"/>
</bpel:variables>
<bpel:flow>
<bpel:links>
<bpel:linkname="receive-to-invoke"/>
<bpel:linkname="invoke-to-receive"/>
<bpel:linkname="receive-to-reply"/>
</bpel:links>
<bpel:receivecreateInstance="yes"operation="TravelApproval"partnerLink="client"portType="cli:TravelApprovalPT"variable="travelRequest">
<bpel:sources>
<bpel:sourcelinkName="receive-to-invoke"/>
</bpel:sources>
</bpel:receive>
<bpel:replyoperation="TravelApproval"partnerLink="client"portType="cli:TravelApprovalPT"variable="travelResponse">
<bpel:targets>
<bpel:targetlinkName="receive-to-reply"/>
</bpel:targets>
</bpel:reply>
<bpel:invokeinputVariable="travelRequest"operation="TravelApproval"partnerLink="travel"portType="trv:TravelApprovalPT">
<bpel:targets>
<bpel:targetlinkName="receive-to-invoke"/>
</bpel:targets>
<bpel:sources>
<bpel:sourcelinkName="invoke-to-receive"/>
</bpel:sources>
</bpel:invoke>
<bpel:receiveoperation="ClientCallback"partnerLink="travel"portType="trv:ClientCallbackPT"variable="travelResponse">
<bpel:targets>
<bpel:targetlinkName="invoke-to-receive"/>
</bpel:targets>
<bpel:sources>
<bpel:sourcelinkName="receive-to-reply"/>
</bpel:sources>
</bpel:receive>
</bpel:flow>
</bpel:process>

Client.bpel,该流程用于调用Travel.bpel流程,接收Travel.bpel的回调,并将结果返回。

在这个流程的<partnerLines>的部分定义了两个partnerLink,一个是用于接收客户端调用的”client”,这是一个同步调用,因此只指定一个角色,另一个是用于调用Travel.bpel流程和接收回调的”travel”,这个调用是异步的,因此指定两个角色。

<bpel:partnerLinks>
<bpel:partnerLinkmyRole="travelService"name="client"partnerLinkType="cli:clientLT"/>
<bpel:partnerLinkmyRole="travelServiceCustomer"name="travel"partnerLinkType="trv:travelLT"partnerRole="travelService"/>
</bpel:partnerLinks>

<variables>标签中定义了两个变量,用于接收数据和返回数据,其messageType分别为trv:TravelRequestMessagealn:TravelResponseMessage
这个流程在活动定义的部分没有使用sequence标签而使用了flow标签,因而为了让一个活动在结束以后可以跳转到下一个活动,在开始的部分定义了3个链接(link),分别用于四个活动之间的跳转。

<bpel:flow>
<!--definethelinks-->
<bpel:links>
<bpel:linkname="receive-to-invoke"/>
<bpel:linkname="invoke-to-receive"/>
<bpel:linkname="receive-to-reply"/>
</bpel:links>

在活动中,如果需要跳转,则完成<source>标签,指明所使用的linkName表示此活动为该链接的源。而如果该活动需要由别的活动跳转到,则需要完成<targer>标签,指明所使用的linkName,表示此活动为该链接的目标。如下:

<bpel:receivecreateInstance="yes"operation="TravelApproval"partnerLink="client"portType="cli:TravelApprovalPT"variable="travelRequest">
<bpel:sources>
<bpel:sourcelinkName="receive-to-invoke"/>
</bpel:sources>
</bpel:receive>
<bpel:replyoperation="TravelApproval"partnerLink="client"portType="cli:TravelApprovalPT"variable="travelResponse">
<bpel:targets>
<bpel:targetlinkName="receive-to-reply"/>
</bpel:targets>
</bpel:reply>
<bpel:invokeinputVariable="travelRequest"operation="TravelApproval"partnerLink="travel"portType="trv:TravelApprovalPT">
<bpel:targets>
<bpel:targetlinkName="receive-to-invoke"/>
</bpel:targets>
<bpel:sources>
<bpel:sourcelinkName="invoke-to-receive"/>
</bpel:sources>
</bpel:invoke>

4个WSDL文件,分别描述了四种服务,其中,AmericanAirline和DeltaAirline用的是同一个WSDL文件,统称航空公司Airline。

航空公司Airline.wsdl

<?xmlversion="1.0"encoding="utf-8"?>
<definitionsxmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
xmlns:soap
="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xs
="http://www.w3.org/2001/XMLSchema"
xmlns:soapenc
="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:emp
="http://packtpub.com/service/employee/"
xmlns:tns
="http://packtpub.com/service/airline/"
targetNamespace
="http://packtpub.com/service/airline/"
xmlns
="http://schemas.xmlsoap.org/wsdl/"
xmlns:plnk
="http://schemas.xmlsoap.org/ws/2003/05/partner-link/">

<importnamespace="http://packtpub.com/service/employee/"

location
="./Employee.wsdl"/>

<types>
<xs:schemaelementFormDefault="qualified"
targetNamespace
="http://packtpub.com/service/airline/">

<xs:complexTypename="FlightRequestType">
<xs:sequence>
<xs:elementname="OriginFrom"type="xs:string"/>
<xs:elementname="DestinationTo"type="xs:string"/>
<xs:elementname="DesiredDepartureDate"type="xs:date"/>
<xs:elementname="DesiredReturnDate"type="xs:date"/>
</xs:sequence>
</xs:complexType>

<xs:simpleTypename="TravelClassType">
<xs:restrictionbase="xs:string">
<xs:enumerationvalue="Economy"/>
<xs:enumerationvalue="Business"/>
<xs:enumerationvalue="First"/>
</xs:restriction>
</xs:simpleType>


<xs:complexTypename="FlightConfirmationType">
<xs:sequence>
<xs:elementname="FlightNo"type="xs:string"/>
<xs:elementname="TravelClass"type="tns:TravelClassType"/>
<xs:elementname="Price"type="xs:float"/>
<xs:elementname="DepartureDateTime"type="xs:dateTime"/>
<xs:elementname="ReturnDateTime"type="xs:dateTime"/>
<xs:elementname="Approved"type="xs:boolean"/>
</xs:sequence>
</xs:complexType>

</xs:schema>

<xs:schemaelementFormDefault="qualified"
targetNamespace
="http://packtpub.com/service/employee/">

<xs:simpleTypename="TravelClassType">
<xs:restrictionbase="xs:string">
<xs:enumerationvalue="Economy"/>
<xs:enumerationvalue="Business"/>
<xs:enumerationvalue="First"/>
</xs:restriction>
</xs:simpleType>

</xs:schema>
</types>

<messagename="FlightTicketRequestMessage">
<partname="flightData"type="tns:FlightRequestType"/>
<partname="travelClass"type="emp:TravelClassType"/>
</message>

<messagename="TravelResponseMessage">
<partname="confirmationData"type="tns:FlightConfirmationType"/>
</message>

<portTypename="FlightAvailabilityPT">
<operationname="FlightAvailability">
<inputmessage="tns:FlightTicketRequestMessage"/>
</operation>
</portType>

<!--ImplementedbytheBPELprocess-->
<portTypename="FlightCallbackPT">
<operationname="FlightTicketCallback">
<inputmessage="tns:TravelResponseMessage"/>
</operation>
</portType>

<bindingname="SOAPBindingAvailabilityAA"type="tns:FlightAvailabilityPT">
<soap:bindingstyle="rpc"
transport
="http://schemas.xmlsoap.org/soap/http"/>
<operationname="FlightAvailability">
<soap:operationsoapAction=""style="rpc"/>
<input>
<soap:bodyuse="encoded"namespace="http://packtpub.com/service/airline/"
encodingStyle
="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
</operation>
</binding>

<servicename="AmericanAirlinesAvailability">
<documentation>AmericanAirlinesAvailability</documentation>
<portname="SOAPPortsAvailability"binding="tns:SOAPBindingAvailabilityAA">
<soap:address
location="http://localhost:8087/active-bpel/services/AmericanAirlinesAvailability"/>
</port>
</service>

<bindingname="SOAPBindingAvailabilityDA"type="tns:FlightAvailabilityPT">
<soap:bindingstyle="rpc"
transport
="http://schemas.xmlsoap.org/soap/http"/>
<operationname="FlightAvailability">
<soap:operationsoapAction=""style="rpc"/>
<input>
<soap:bodyuse="encoded"namespace="http://packtpub.com/service/airline/"
encodingStyle
="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
</operation>
</binding>

<servicename="DeltaAirlinesAvailability">
<documentation>DeltaAirlinesAvailability</documentation>
<portname="SOAPPortsAvailabilityDA"binding="tns:SOAPBindingAvailabilityDA">
<soap:address
location="http://localhost:8087/active-bpel/services/DeltaAirlinesAvailability"/>
</port>
</service>

<bindingname="SOAPBindingb"type="tns:FlightCallbackPT">
<soap:bindingstyle="rpc"
transport
="http://schemas.xmlsoap.org/soap/http"/>
<operationname="FlightTicketCallback">
<soap:operationsoapAction=""style="rpc"/>
<input>
<soap:bodyuse="encoded"namespace="http://packtpub.com/service/airline/"
encodingStyle
="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
</operation>
</binding>

<servicename="AmericanAirlines">
<documentation>AmericanAirliness</documentation>
<portname="SOAPPortsAA"binding="tns:SOAPBindingb">
<soap:address
location="http://localhost:8087/active-bpel/services/AmericanAirlinesServices"/>
</port>
</service>

<bindingname="SOAPBindingb1"type="tns:FlightCallbackPT">
<soap:bindingstyle="rpc"
transport
="http://schemas.xmlsoap.org/soap/http"/>
<operationname="FlightTicketCallback">
<soap:operationsoapAction=""style="rpc"/>
<input>
<soap:bodyuse="encoded"namespace="http://packtpub.com/service/airline/"
encodingStyle
="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
</operation>
</binding>

<servicename="DeltaAirlines">
<documentation>AmericanAirliness</documentation>
<portname="SOAPPortsDA"binding="tns:SOAPBindingb1">
<soap:address
location="http://localhost:8087/active-bpel/services/DeltaAirlinesServices"/>
</port>
</service>

<!--Partnerlinktype-->
<plnk:partnerLinkTypename="flightLT">
<plnk:rolename="airlineService">
<plnk:portTypename="tns:FlightAvailabilityPT"/>
</plnk:role>
<plnk:rolename="airlineCustomer">
<plnk:portTypename="tns:FlightCallbackPT"/>
</plnk:role>
</plnk:partnerLinkType>

</definitions>

雇员出差状态服务 Employee.wsdl

<?xmlversion="1.0"encoding="utf-8"?>
<definitionsxmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
xmlns:soap
="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xs
="http://www.w3.org/2001/XMLSchema"
xmlns:soapenc
="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:emp
="http://packtpub.com/service/employee/"
targetNamespace
="http://packtpub.com/service/employee/"
xmlns
="http://schemas.xmlsoap.org/wsdl/"
xmlns:plnk
="http://schemas.xmlsoap.org/ws/2003/05/partner-link/">

<types>
<xs:schemaelementFormDefault="qualified"
targetNamespace
="http://packtpub.com/service/employee/">

<xs:complexTypename="EmployeeType">
<xs:sequence>
<xs:elementname="FirstName"type="xs:string"/>
<xs:elementname="LastName"type="xs:string"/>
<xs:elementname="Departement"type="xs:string"/>
</xs:sequence>
</xs:complexType>

<xs:simpleTypename="TravelClassType">
<xs:restrictionbase="xs:string">
<xs:enumerationvalue="Economy"/>
<xs:enumerationvalue="Business"/>
<xs:enumerationvalue="First"/>
</xs:restriction>
</xs:simpleType>

</xs:schema>
</types>

<messagename="EmployeeTravelStatusRequestMessage">
<partname="employee"type="emp:EmployeeType"/>
</message>

<messagename="EmployeeTravelStatusResponseMessage">
<partname="travelClass"type="emp:TravelClassType"/>
</message>

<portTypename="EmployeeTravelStatusPT">
<operationname="EmployeeTravelStatus">
<inputmessage="emp:EmployeeTravelStatusRequestMessage"/>
<outputmessage="emp:EmployeeTravelStatusResponseMessage"/>
</operation>
</portType>

<bindingname="SOAPBinding"type="emp:EmployeeTravelStatusPT">
<soap:bindingstyle="rpc"
transport
="http://schemas.xmlsoap.org/soap/http"/>
<operationname="EmployeeTravelStatus">
<soap:operationsoapAction=""style="rpc"/>
<input>
<soap:bodyuse="encoded"namespace="urn:loanapprover"
encodingStyle
="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:bodyuse="encoded"namespace="urn:loanapprover"
encodingStyle
="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
</binding>

<servicename="employeeTravelStatus">
<documentation>employeeTravelStatus</documentation>
<portname="SOAPPort"binding="emp:SOAPBinding">
<soap:address
location="http://localhost:8087/active-bpel/services/employeeTravelStatusService"/>
</port>
</service>

<!--Partnerlinktype-->
<plnk:partnerLinkTypename="employeeLT">
<plnk:rolename="employeeTravelStatusService">
<plnk:portTypename="emp:EmployeeTravelStatusPT"/>
</plnk:role>
</plnk:partnerLinkType>

</definitions>

查询航班服务Travel.wsdl

<?xmlversion="1.0"encoding="UTF-8"?>
<definitionstargetNamespace="http://packtpub.com/bpel/travel/"xmlns:tns="http://packtpub.com/bpel/travel/"xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"xmlns:aln="http://packtpub.com/service/airline/"xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/"xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:emp="http://packtpub.com/service/employee/"xmlns:xs="http://www.w3.org/2001/XMLSchema"xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"xmlns="http://schemas.xmlsoap.org/wsdl/">
<importnamespace="http://packtpub.com/service/airline/"location="./Airline.wsdl"/>
<importnamespace="http://packtpub.com/service/employee/"location="./Employee.wsdl"/>
<types>
<xs:schemaelementFormDefault="qualified"targetNamespace="http://packtpub.com/service/airline/"xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:complexTypename="FlightRequestType">
<xs:sequence>
<xs:elementname="OriginFrom"type="xs:string"/>
<xs:elementname="DestinationTo"type="xs:string"/>
<xs:elementname="DesiredDepartureDate"type="xs:date"/>
<xs:elementname="DesiredReturnDate"type="xs:date"/>
</xs:sequence>
</xs:complexType>

<xs:simpleTypename="TravelClassType">
<xs:restrictionbase="xs:string">
<xs:enumerationvalue="Economy"/>
<xs:enumerationvalue="Business"/>
<xs:enumerationvalue="First"/>
</xs:restriction>
</xs:simpleType>


<xs:complexTypename="FlightConfirmationType">
<xs:sequence>
<xs:elementname="FlightNo"type="xs:string"/>
<xs:elementname="TravelClass"type="tns:TravelClassType"/>
<xs:elementname="Price"type="xs:float"/>
<xs:elementname="DepartureDateTime"type="xs:dateTime"/>
<xs:elementname="ReturnDateTime"type="xs:dateTime"/>
<xs:elementname="Approved"type="xs:boolean"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
<xs:schemaelementFormDefault="qualified"targetNamespace="http://packtpub.com/service/employee/"xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:complexTypename="EmployeeType">
<xs:sequence>
<xs:elementname="FirstName"type="xs:string"/>
<xs:elementname="LastName"type="xs:string"/>
<xs:elementname="Departement"type="xs:string"/>
</xs:sequence>
</xs:complexType>

<xs:simpleTypename="TravelClassType">
<xs:restrictionbase="xs:string">
<xs:enumerationvalue="Economy"/>
<xs:enumerationvalue="Business"/>
<xs:enumerationvalue="First"/>
</xs:restriction>
</xs:simpleType>

</xs:schema>
</types>
<messagename="TravelRequestMessage">
<partname="employee"type="emp:EmployeeType"/>
<partname="flightData"type="aln:FlightRequestType"/>
</message>
<portTypename="ClientCallbackPT">
<operationname="ClientCallback">
<inputmessage="aln:TravelResponseMessage"/>
</operation>
</portType>
<portTypename="TravelApprovalPT">
<operationname="TravelApproval">
<inputmessage="tns:TravelRequestMessage"/>
</operation>
</portType>
<bindingname="SOAPBindingCCB"type="tns:ClientCallbackPT">
<soap:bindingstyle="rpc"transport="http://schemas.xmlsoap.org/soap/http"xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
<operationname="ClientCallback">
<soap:operationsoapAction=""style="rpc"xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
<input>
<soap:bodyencodingStyle="http://schemas.xmlsoap.org/soap/encoding/"namespace="http://packtpub.com/service/airline/"use="encoded"xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
</input>
</operation>
</binding>
<bindingname="SOAPBindingTAPT"type="tns:TravelApprovalPT">
<soap:bindingstyle="rpc"transport="http://schemas.xmlsoap.org/soap/http"xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
<operationname="TravelApproval">
<soap:operationsoapAction=""style="rpc"xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
<input>
<soap:bodyencodingStyle="http://schemas.xmlsoap.org/soap/encoding/"namespace="http://packtpub.com/service/airline/"use="encoded"xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
</input>
</operation>
</binding>
<servicename="ClientCB">
<documentation>DeltaAirlinesAvailability</documentation>
<portname="SOAPPortsCCB"binding="tns:SOAPBindingCCB">
<soap:addresslocation="http://localhost:8087/active-bpel/services/ClientCB"xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
</port>
</service>
<servicename="TravelApprovalService">
<documentation>DeltaAirlinesAvailability</documentation>
<portname="SOAPPortsTAPT"binding="tns:SOAPBindingTAPT">
<soap:addresslocation="http://localhost:8087/active-bpel/services/TravelApprovalService"xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
</port>
</service>
<plnk:partnerLinkTypexmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/"name="travelLT">
<plnk:rolename="travelService">
<plnk:portTypename="tns:TravelApprovalPT"/>
</plnk:role>
<plnk:rolename="travelServiceCustomer">
<plnk:portTypename="tns:ClientCallbackPT"/>
</plnk:role>
</plnk:partnerLinkType>
<bpws:propertyxmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/"name="DA"type="xsd:string"/>
<bpws:propertyxmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/"name="AAT"type="xsd:string"/>
<vprop:propertyAliasxmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop"messageType="aln:TravelResponseMessage"part="confirmationData"propertyName="tns:AAT">
<vprop:query>/confirmationData</vprop:query>
</vprop:propertyAlias>
<vprop:propertyAliasxmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop"messageType="aln:TravelResponseMessage"part="confirmationData"propertyName="tns:DA">
<vprop:query>/confirmationData</vprop:query>
</vprop:propertyAlias>
</definitions>

客户端服务Client.wsdl

<?xmlversion="1.0"encoding="UTF-8"?>
<definitionstargetNamespace="http://packtpub.com/bpel/client/"xmlns:tns="http://packtpub.com/bpel/client/"xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"xmlns:aln="http://packtpub.com/service/airline/"xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/"xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:emp="http://packtpub.com/service/employee/"xmlns:trv="http://packtpub.com/bpel/travel/"xmlns:xs="http://www.w3.org/2001/XMLSchema"xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"xmlns="http://schemas.xmlsoap.org/wsdl/">
<importnamespace="http://packtpub.com/service/airline/"location="./Airline.wsdl"/>
<importnamespace="http://packtpub.com/bpel/travel/"location="./Travel.wsdl"/>
<importnamespace="http://packtpub.com/service/employee/"location="./Employee.wsdl"/>
<types>
<xs:schemaelementFormDefault="qualified"targetNamespace="http://packtpub.com/service/airline/"xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:complexTypename="FlightRequestType">
<xs:sequence>
<xs:elementname="OriginFrom"type="xs:string"/>
<xs:elementname="DestinationTo"type="xs:string"/>
<xs:elementname="DesiredDepartureDate"type="xs:date"/>
<xs:elementname="DesiredReturnDate"type="xs:date"/>
</xs:sequence>
</xs:complexType>

<xs:simpleTypename="TravelClassType">
<xs:restrictionbase="xs:string">
<xs:enumerationvalue="Economy"/>
<xs:enumerationvalue="Business"/>
<xs:enumerationvalue="First"/>
</xs:restriction>
</xs:simpleType>


<xs:complexTypename="FlightConfirmationType">
<xs:sequence>
<xs:elementname="FlightNo"type="xs:string"/>
<xs:elementname="TravelClass"type="tns:TravelClassType"/>
<xs:elementname="Price"type="xs:float"/>
<xs:elementname="DepartureDateTime"type="xs:dateTime"/>
<xs:elementname="ReturnDateTime"type="xs:dateTime"/>
<xs:elementname="Approved"type="xs:boolean"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
<xs:schemaelementFormDefault="qualified"targetNamespace="http://packtpub.com/service/employee/"xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:complexTypename="EmployeeType">
<xs:sequence>
<xs:elementname="FirstName"type="xs:string"/>
<xs:elementname="LastName"type="xs:string"/>
<xs:elementname="Departement"type="xs:string"/>
</xs:sequence>
</xs:complexType>

<xs:simpleTypename="TravelClassType">
<xs:restrictionbase="xs:string">
<xs:enumerationvalue="Economy"/>
<xs:enumerationvalue="Business"/>
<xs:enumerationvalue="First"/>
</xs:restriction>
</xs:simpleType>

</xs:schema>
<xs:schemaelementFormDefault="qualified"targetNamespace="http://packtpub.com/bpel/client/"xmlns:xs="http://www.w3.org/2001/XMLSchema">


<xs:complexTypename="TestClient">
<xs:sequence>
<xs:elementname="FirstName"type="xs:string"/>
<xs:elementname="LastName"type="xs:string"/>
<xs:elementname="Departement"type="xs:string"/>
</xs:sequence>
</xs:complexType>

</xs:schema>
</types>
<messagename="TestClientMessage">
<partname="testinfo"type="emp:EmployeeType"/>
</message>
<portTypename="TravelApprovalPT">
<operationname="TravelApproval">
<inputmessage="trv:TravelRequestMessage"/>
<outputmessage="aln:TravelResponseMessage"/>
</operation>
</portType>
<plnk:partnerLinkTypexmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/"name="clientLT">
<plnk:rolename="travelService">
<plnk:portTypename="tns:TravelApprovalPT"/>
</plnk:role>
</plnk:partnerLinkType>
<vprop:propertyxmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop"name="travelresponse"type="xsd:string"/>
<vprop:propertyAliasxmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop"messageType="aln:TravelResponseMessage"part="confirmationData"propertyName="tns:travelresponse">
<vprop:query>.</vprop:query>
</vprop:propertyAlias>
</definitions>

流程配置文件catalog.xml,放在META-INF文件夹下。

<?xmlversion="1.0"encoding="UTF-8"?>
<catalogxmlns='http://schemas.active-endpoints.com/catalog/2006/07/catalog.xsd'>
<wsdlEntrylocation="project:/airline/wsdl/Airline.wsdl"classpath="wsdl/airline/wsdl/Airline.wsdl"/>
<wsdlEntrylocation="project:/airline/wsdl/Client.wsdl"classpath="wsdl/airline/wsdl/Client.wsdl"/>
<wsdlEntrylocation="project:/airline/wsdl/Employee.wsdl"classpath="wsdl/airline/wsdl/Employee.wsdl"/>
<wsdlEntrylocation="project:/airline/wsdl/Travel.wsdl"classpath="wsdl/airline/wsdl/Travel.wsdl"/>
<wsdlEntrylocation="file:/E:/activeBPEL/Samples/CompletedTutorial/WSDL/loanServicePT.wsdl"classpath="wsdl/activeBPEL/Samples/CompletedTutorial/WSDL/loanServicePT.wsdl"/>
<schemaEntrylocation="file:/E:/activeBPEL/Samples/CompletedTutorial/WSDL/error-messages.xsd"classpath="wsdl/activeBPEL/Samples/CompletedTutorial/WSDL/error-messages.xsd"/>
</catalog>

分享到:
评论

相关推荐

    BPEL实例教程代码

    BPEL实例教程代码

    在Eclipse下开发BPEL实例分享

    在Eclipse下开发BPEL实例分享

    BPEL 实例教程

    BPEL 实例教程 BPEL 实例教程 BPEL 实例教程 BPEL 实例教程

    BPEL实例开发详细教程-个人实践

    网上有不少BPEL的实例文档,其中最常用的就是加减法BPEL部署。但是有些细节可能未交待清楚,本人当时在实践的...包含WebService与BPEL开发的环境配置、实例开发与部署、实例运行与测试,对关键易错部分标红突出显示。

    BPEL的一个运行实例

    1. 前言..............................................................................................................- 3- 1.1. 前提条件....................................................................

    bpel2.0实例(可以直接运行)

    这是bpel2.0实例,包含循环结构和判断结构,在tomcat5和axis2可以直接运行!

    bpel完整实例(webservice+bpel)

    bpel完整实例(webservice+bpel) openesb bpel

    BPEL实例 eclipse apache ode

    BPEL实例,Apache-ODE,Eclipse 该教程详细讲述了开发一个BPEL业务流程的详细步骤。先手动写好两个服务,一个是加法服务,一个是减法服务,然后希望构建一个bpel流程,该流程能够根据用户的输入来决定是调用加法服务...

    一起学BPEL实例教程

    资源包含一份关于BPEL开发实例的文档,以及开发中的代码。主要包含两个web服务的发布及使用。

    BPEL实例教程

    BPEL 背景知识  首先,介绍一些背景知识。BPEL 基于 XML 和 Web 服务构建;它使用一种基于 Web 的语言,该语言支持 web 服务技术系列,包括 SOAP、WSDL、UDDI、Web 服务可靠性消息、Web 服务寻址、Web 服务协调以及 ...

    BPEL实例简明教程(20页)

    简单介绍了BPEL的基本构架。有一个实例。利用实例展开。很容易读懂。内容不多。

    bpel入门级实例

    去年写的一个小冬冬,把一个oracle的bpel实例改写后在activeBpel上运行,因为activeBpel是open的,可以研究引擎架构的实现。

    一起学BPEL实例教程一(原创)

    1 环境配置 2 相关服务的开发(加法服务,减法服务) 3 BPEL的开发 详情见附件。希望大家一起学习,共同进步。 有分的就支持下,没分的就到http://zhongkem.javaeye.com/admin/blogs/691388下载吧~~

    Oracle SOA 套件——Oracle BPEL 流程管理器

    Oracle SOA 套件——Oracle BPEL 流程管理器Oracle SOA 套件——Oracle BPEL 流程管理器

    Eclipse_BPEL_最新解说(我亲测成功了的案例)

    手动部署bpel服务。此文档一开始是在网上下载的,但是我发现无论怎么按照里面的步骤来做都无法成功部署bpel,很多人也都遇到类似的问题。经过我的不断分析,发现原来是bpel的插件(模拟的服务器)有问题,根本是做不...

    BPEL的基本思想 实例讲解

    BPEL的基本思想 实例讲解 总结 心得 写的很全面 java对比 容易理解和上手 是初次学习的非常好的资源

    BPEL 入门 实例

    面向 Web 服务的业务流程执行语言(BPEL 或 BPEL4WS)是一种使用 Web 服务定义和执行业务流程的语言。BPEL 使您可以通过组合、编排和协调 Web 服务自上而下地实现面向服务的体系结构 (SOA)。BPEL 提供了一种相对简单...

Global site tag (gtag.js) - Google Analytics