BPEL过程组件

http://tech.ddvip.com   2008年01月05日    社区交流

内容摘要:BPEL流程的本质就是通过BPEL的活动(Activity)将BPEL的过程组件“串起来”。所谓“串起来”就是通过BPEL的活动让BPEL的过程组件产生一种动态的交互。比如说将一个变量赋值给另外一个变量,就是一种变量之间的动态的交互。

  而且合作伙伴返回的异常必须符合上面的格式,才能捕获这个异常,否则是不会捕获这类异常的。合作伙伴返回的异常实例如下:

<InvalidNAME xmlns="urn:sample:soa:houseloanagency">
<name>Zhang San1</name>
</InvalidNAME>

  下面是BPEL异常处理的写法:

<bpel:faultHandlers>
<bpel:catch faultName="ca:UnkownNAME">
<bpel:sequence>
<bpel:assign>
<bpel:copy>
<bpel:from variable="request" part="payload"
query="/tns:getLoanQuoteRequest/tns:name" />
<bpel:to variable="unknownNAME" part="payload"
query="/tns:unknownNAMEFault/tns:name" />
</bpel:copy>
</bpel:assign>
<bpel:reply name="response" partnerLink="HouseLoanBrokerResponse"
portType="tns:HouseLoanBroker" operation="getLoanQuote"
variable="unknownNAME" faultName="tns:unknownNAME" >
</bpel:reply>
</bpel:sequence>
</bpel:catch>
</bpel:faultHandlers>

  补偿处理(Compensation Handlers)

  BPEL流程需要处理一系列的业务流程活动,业务流程往往有这样的业务需求,如果某一个活动出现异常后,希望它前面的活动也能够取消。

  以上面的房屋贷款的实例来说,假如房屋贷款的BPEL流程已经调用了外部银行Bank的贷款服务,得到了相应的首付和贷款利率,银行那边也有了相应的记录;但是BPEL流程将Bank的响应结果返回给客户时,出现了异常。这个时候BPEL流程就需要通知Bank取消相应的银行贷款记录。这就需要用到BPEL的补偿处理机制。

责编:豆豆技术应用

正在加载评论...