说明:本文意译自BPEL1.1规范16.2节。
本文讨论一个简单的贷款审批的WEB服务的例子。在该例子中,客户发送贷款审批请求,包括客户个人信
息和贷款金额。贷款审批的WEB服务利用该信息运行一个简单流程,得到“同意贷款”或“拒绝贷款”的
结果。对于低于10000美元的贷款和有良好信用的客户,审批是自动的。对于高额贷款和信用不确定的客
户,我们需要用到另外两个WEB服务提供的功能。“风险评估服务”用来查询某个个人的信用风险,“专
家评估服务”用来获得专家对该项目的具体评估意见。
1。服务描述
我们假定已经存在xmlns:lns="http://loans.org/wsdl/loan-approval",服务描述文件如下:
<definitions
targetNamespace="http://loans.org/wsdl/loan-approval"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/"
xmlns:lns="http://loans.org/wsdl/loan-approval">
H:信用信息消息。消息相当于我们的值对象。
<message name="creditInformationMessage">
<part name="firstName" type="xsd:string"/>
<part name="name" type="xsd:string"/>
<part name="amount" type="xsd:integer"/>
</message>
H:审批消息
<message name="approvalMessage">
<part name="accept" type="xsd:string"/>
</message>
H:风险评估消息
<message name="riskAssessmentMessage">
<part name="level" type="xsd:string"/>
</message>
H:错误消息
<message name="errorMessage">
<part name="errorCode" type="xsd:integer"/>
</message>
H:把portType理解为我们的OO中的方法吧!它指定了输入,输出,出错处理。
<portType name="loanServicePT">
<operation name="request">
<input message="lns:creditInformationMessage"/>
<output message="lns:approvalMessage"/>
<fault name="unableToHandleRequest"
message="lns:errorMessage"/>
</operation>
</portType>
<portType name="riskAssessmentPT">
<operation name="check">
<input message="lns:creditInformationMessage"/>
<output message="lns:riskAssessmentMessage"/>
<fault name="loanProcessFault"
message="lns:errorMessage"/>
</operation>
</portType>
<portType name="loanApprovalPT">
<operation name="approve">
<input message="lns:creditInformationMessage"/>
<output message="lns:approvalMessage"/>
<fault name="loanProcessFault"
message="lns:errorMessage"/>
</operation>
</portType>
H:partnerLinkType用来区分角色。
<plnk:partnerLinkType name="loanPartnerLinkType">
<plnk:role name="loanService">
<plnk:portType name="lns:loanServicePT"/>
</plnk:role>
</plnk:partnerLinkType>
<plnk:partnerLinkType name="loanApprovalLinkType">
<plnk:role name="approver">
<plnk:portType name="lns:loanApprovalPT"/>
</plnk:role>
</plnk:partnerLinkType>
<plnk:partnerLinkType name="riskAssessmentLinkType">
<plnk:role name="assessor">
<plnk:portType name="lns:riskAssessmentPT"/>
</plnk:role>
</plnk:partnerLinkType>
</definitions>