服务计算概论 第7章 服务组合.ppt

  1. 1、本文档共28页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
服务计算概论 第7章 服务组合

第7章 服务组合编程语言BPEL BPEL语言已经成为事实上的基于Web服务开发可执行业务过程的业界标准。 BPEL本身有双重功能: 一是用于编写可执行服务组合过程, 另外也可用于定义服务协作协议。 BPEL合作伙伴关系(1) BPEL合作伙伴关系(2) 涉及三个元素: 伙伴链接类型partnerLinkType、 伙伴链接关系partnerLink、 伙伴 partner BPEL合作伙伴关系(3) 在partnerLinkType和partnerLink中,描述合作交互关系时有同步和异步之分: 同步:服务提供者不需要主动向服务请求者发送消息,因此可以只定义一个服务提供者的角色; 异步:服务提供方需要知道服务请求方是谁,因此需要同时定义服务请求方和服务提供方两类角色。 BPEL变量、消息属性和表达式(1) (1)变量:variable 用来作为程序运行时临时保存数据的容器。 变量有名称和类型2个属性,其中 类型可以由WSDL消息类型、XML Schema 简单类型、或者XML Schema类型定义。 BPEL变量、消息属性和表达式(2) (2)消息属性:property 用于引用消息或变量中的全部数据或者部分 数据。 property和具体消息的关联是通过属性别名 (propertyAlias)实现的。 property和具体消息的关联是通过函数 getVariableProperty( ,)实现的。 BPEL基本活动 不能再包含其它活动的活动为基本活动。 包括: receive, invoke, reply,(三个基本活动) assign(赋值), wait(流程等待), empty(空操作), terminate(中断), throw, compensate(放在异常处理部分) BPEL结构化活动(1) (1)顺序活动(sequence) (2)选择活动(switch) (3)循环活动(while) (4)并行活动(flow) (5)事件选择活动(pick): 消息事件(onMessage)和时间事件(onAlarm) BPEL结构化活动(2) (4)flow flow用于定义一组并行执行的活动,当这些活动都执行完成后,flow语句也就执行完了。 当flow包含的元素之间完全没有依赖关系的情形下,并行关系的描述比较简单。 示例 BPEL结构化活动(3) 但事实上flow语句中的活动可以具有除了循环以外的完整的控制流关系。 link用于定义元素间的控制流关系。用link链接的活动的元素或属性可以表示 与分支(AND-SPLIT)、 或分支(OR-SPLIT)、 与归并(AND-JOIN)、 或归并(OR-JOIN) BPEL结构化活动(4) 先介绍如何用link连接两个活动以及如何设置和link相关的活动的元素和属性。 BPEL结构化活动(5) (a)与分支 BPEL结构化活动(6) (b)与归并 BPEL结构化活动(7) (c)或分支 BPEL结构化活动(8) (d)或归并 BPEL结构化活动(9) 在有控制流路由分支的情况下,有些活动的joinCondition并不能为真,此时可通过flow语句的一个重要属性suppressJoinFailure来解决这个问题。 事实上,该属性可以出现在BPEL过程的顶级元素process或者任何一个活动定义中。 其主要作用是实现死路径消除(death path eliminate,DPE),其值默认为”yes”。 BPEL语句块 在BPEL中,除了结构化活动本身就是语句块,还可以用scope显式定义一个语句块。每个语句块均有自己私有的执行上下文,而语句块内的活动都共享该上下文。 BPEL异常(1) BPEL采用的异常模型是try-throw-catch。 该模型的理念是为可嵌套的活动建立异常 处理逻辑,当活动出现异常时,程序执行 流程会立即中断正常流程进入异常处理。 对于本层无法处理的异常,异常处理逻辑 会继续向包含该活动的外层活动抛出异常, 而最外层的活动可以选择抑制该异常、中止 程序执行或者向执行环境报告错误等。 BPEL异常(2) (1)异常的发生 throw语句用于抛出异常。 该元素有一个必要属性是faultName,表示 抛出异常的名称。 有一个可选属性是faultVariable,用于为异常 处理器提供额外的信息。 BPEL异常(3) (2)异常的处理 BPEL中没有显示表示try的元素,try的语义包含在每个scope的开始。 BPEL中用于捕获scope中异常的元素有两个:catch和catchAll。 catch用于捕获特定的异常; catchAll用于捕获没有被catch元素捕获的其它所有异常,这两个语

您可能关注的文档

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档