问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

bpel的compensationhandler标签的涵义

发布网友 发布时间:2022-07-15 07:16

我来回答

1个回答

热心网友 时间:2023-11-24 17:12

补偿处理(Compensation Handlers)

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

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

继续以房屋贷款为例来说明这个问题。

补偿处理机制是在一定的范围内进行的,因为要对银行贷款服务进行补偿,先用<scope>定义一个范围。此外,需要银行不仅有前面的“getLoanQuote”的贷款功能的接口操作,同时Bank也需要提供一个取消房屋贷款的接口操作,这里假设已经有了这么一个接口操作,名为“canelLoanQuote”。

定义补偿的具体过程是先定义一个<scope>,此处为"bank-loan-scope";再定义<compensationHandler>,并在里面定义相应的活动,如这里的活动为<invoke>取消贷款的操作(Operation)="canelLoanQuote",程序如下所示:

<scope name="bank-loan-scope">

<compensationHandler>

<bpel:invoke name="bank0" partnerLink="Bank0"

portType="bk:Bank" operation="canelLoanQuote"

inputVariable="bk-loanquote-request"

outputVariable="bk-loanquote-response-0"

sm:endpoint="urn:sample:soa:bank:Bank0:bank" >

</bpel:invoke>

</compensationHandler>

<bpel:invoke name="bank0" partnerLink="Bank0"

portType="bk:Bank" operation="getLoanQuote"

inputVariable="bk-loanquote-request"

outputVariable="bk-loanquote-response-0"

sm:endpoint="urn:sample:soa:bank:Bank0:bank" >

</bpel:invoke>

</scope>

此外需要在BPEL的接口中定义WSDL返回消息给客户时的异常,假设为“ReplyFault”,当BPEL流程截获这个异常时,将会调用所表明范围内的补偿机制,补偿机制会进一步调用银行的取消贷款的操作,下面是BPEL的异常处理程序片段。

<bpel:faultHandlers>

<bpel:catch faultName="ca: ReplyFault ">

<bpel:sequence>

<compensate scope="bank-loan-scope"/>

</bpel:sequence>

</bpel:catch>

</bpel:faultHandlers>

参考资料:http://dev.yesky.com/241/7754241_2.shtml

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
材料力学实验简介 密度板的辅助部分实验有什么 10+张图带你看懂材料力学性能测试及分析! 材料力学实验测定材料的机械性能 清理Android和iOS上的Instagram应用缓存,让使用体验直线up! 我要英语自我介绍,帮帮我啊!我叫颜孟昊,今年13岁,爱打篮球下围棋,喜欢... 鸡蛋黄可以用米粉混在一起吃? 吉林市热力公司好么 吉林市热力公司现在一个月到底能开多少钱,基层的员工。 小女贼的猫腻内容简介 应用程序错误 怎么办 应用程序错误 ox08c90068指令引用 的ox08c90068内存不能为written内存不能为writt 应用程序错误,0×000000000是什么意思? 应用程序错误 0x08a70068指令引用的00x08a70068内存. 不能为written 怎么解决 开机显示应用程序错误”0x0108f600指令应用的:0x00000000内存,该内存不能为'Written” 应用程序发生异常 unknown software exception (0xc0000096)位置为 0x008d8000 Ox80808080内存不能为read 珍宝蟹放冰箱冷藏里死了一天了还能吃吗? 天府煤矿具体位置在哪里? 天府矿务局三矿现状 摄影设备日常维护:应该怎么存放 生活污水处理设备如何正确存放 离子交换水处理设备如何存放 院子里散养哪几种花,不用管理,也能开出一片花海? 黄色花盆是什么花?小凤仙?挺常见的 这是什么花,叫啥名? 在公园经常见到这种花,请问这是什么花? 我初一到庙里烧香。烧的香从半截就着了,听有些人说是结香。能解释... 结香是什么意思 Rubber 是什么意思 虚假重组 在不安装假体的情况下,做阴茎整形手术可以延长阴茎长度多少厘米? 象印保温杯sm-ja36-pr杯口设计那个中栓是干什么用的啊?只是装饰吗? 金苹果蛋糕和心岸蛋糕那个好吃? JA36-800D济南二机床机械压力机制动器问题 辽a5ja36车牌有主吗 盘点法国战争喜剧片,【在线观看】免费百度云资源 深圳喔刷信息技术有限公司怎么样? 观测日全食具体有哪些注意点 拟定协议是什么意思 拟好合同是什么意思 房屋状态为合同拟定状态意思 拟定合同条款的“拟”是什么意思? 活的大龙虾买回家一会死了还能吃吗 昨晚刚买的龙虾,昨晚没烧~准备第二天中午烧,可现在过来一看,死了一半了,请问这些死龙虾还可以吃吗? 季子挂剑的翻译 大理地区做阴茎假体手术有什么风险没有? 龟哥什么意思 为什么古代封建统治者不实行安民政策,而是实行愚民政策呢? Microbiological efficacy 什么意思