房屋贷款BPEL实例详解
http://tech.ddvip.com 2008年01月05日 社区交流
本文详细介绍房屋贷款BPEL实例详解
下面是BPEL需要调用的外部服务houseloanagency的WSDL文件,这个外部服务接收顾客姓名,输出顾客已有的房屋数量。通过这个WSDL,BPEL可以知道所要调用的外部服务的接口、接口操作、输入消息和输出消息、异常,这都是BPEL流程在调用外部服务时需要知道的,对于houseloanagency.wsdl,这些参数如下。
接口:HouseLoanAgency;
接口操作:getHouseNumber;
输入消息为下面的树状结构:
getHouseNumberRequest
|――name (String)
l 输出消息为下面的树状结构:
getHouseNumberResponse
|――housenumber (int)
l 异常:unknownNAMEFault。
此外,BPEL需要引入该WSDL,并定义该服务为合作伙伴,所以还需要在此加入合作伙伴的定义。
<plnk:partnerLinkType name="HouseLoanAgencyPL">
<plnk:role name="HouseLoanAgencyService" portType="tns:HouseLoanAgency" />
</plnk:partnerLinkType>
上面portType="tns:HouseLoanAgency"指该合作伙伴所对应的WSDL的接口。BPEL的一个合作伙伴,对应于WSDL的一个接口。如果WSDL有多个接口,则需要定义多个合作伙伴。
例程2显示了houseloanagency.wsdl的内容。
例程2 houseloanagency.wsdl
<?xml version="1.0" encoding="UTF-8"?>
<definitions targetNamespace="urn:sample:soa:houseloanagency"
xmlns:tns="urn:sample:soa:houseloanagency"
xmlns:typens="urn:sample:soa:houseloanagency:types"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/">
<types>
<xsd:schema
targetNamespace="urn:sample:soa:houseloanagency:types"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:complexType name="getHouseNumberRequest">
<xsd:sequence>
<xsd:element name="name" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="getHouseNumberResponse">
<xsd:sequence>
<xsd:element name="housenumber" type="xsd:int" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="unknownNAMEFault">
<xsd:sequence>
<xsd:element name="name" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
</types>
<message name="getHouseNumberRequest">
<part name="payload" type="typens:getHouseNumberRequest" />
</message>
<message name="getHouseNumberResponse">
<part name="payload" type="typens:getHouseNumberResponse" />
</message>
<message name="unknownNAMEFault">
<part name="payload" type="typens:unknownSSNFault" />
</message>
<portType name="HouseLoanAgency">
<operation name="getHouseNumber">
<input message="tns:getHouseNumberRequest" />
<output message="tns:getHouseNumberResponse" />
<fault name="UnknownNAME" message="tns:unknownNAMEFault"/>
</operation>
</portType>
<plnk:partnerLinkType name="HouseLoanAgencyPL">
<plnk:role name="HouseLoanAgencyService" portType="tns:HouseLoanAgency" />
</plnk:partnerLinkType>
</definitions>
下面是所要调用的4个Bank的服务,它们的服务接口一样,只是输出结果的首付比例和贷款比例不同,所以采用同一个WSDL文件即可,但是在BPEL中需要定义4个合作伙伴,这4个合作伙伴所指向的服务地址是不同的,Bank的WSDL内容如下。
责编:豆豆技术应用