9Web服务组合与服务科学研究昀新进展主讲:高岩gaoyan_neu@126.com东北大学信息学院计算机应用技术研究所2/90内容提纲#9.1Web服务组合概述#9.2Web服务组合编程语言BPEL#9.3Web服务组合原型系统#9.4Web服务组合相关问题#9.5服务科学简介3/909.1Web服务组合概述#Web服务组合产生背景C基于互联网的应用开发中已经出现了大量的Web服务,Web正发展成为一个集成信息资源的分布式的计算资源CWeb的发展也进入了一个崭新的阶段,即Web服务应用开发阶段,其目的是基于Web服务来开发集成的Web应用系统,为用户提供昀终的服务和信息C但单独的Web服务已经很难满足用户不断增长以及越来越复杂的应用需求,人们常常需要组合多个Web服务以完成一个较复杂的任务,这就是Web服务的组合问题4/909.1Web服务组合概述#Web服务组合本质CWeb服务组合实际上就是为了满足一些用户的需要,把一定数量的现有服务组织起来,从而形成具有综合功能的服务,即合成为一个新的增值Web服务。C这个“新服务”的组成成员之间不仅可以相互通信,更为重要的是,它们是按照某种逻辑组合在一起的CWeb服务组合的动力来自于Web服务的出现和通过网络把Web服务组织在一起以提供增值服务5/909.1Web服务组合概述#Web服务组合本质C从设计角度TWeb服务组合是一个规则和原理集,它描述Web服务之间相互通信的过程C从执行角度TWeb服务组合是一个按照预定义的业务过程查找并绑定合适的Web服务和服务提供者的过程C总之,Web服务组合就是通过组合基本的Web服务来为用户提供增值服务。Web服务组合的本质就是若干Web服务协调工作,从而灵活实现上层的业务模型,屏蔽底层信息基础设施的变迁6/909.1Web服务组合概述#Web服务组合示意图WebService1WebService2WebService3WebService4WebService5WebServicen复杂业务7/909.1Web服务组合概述#Web服务组合示例C使用多个Web服务来完成用户“旅行计划”需求8/909.1Web服务组合概述#Web服务组合过程CWeb服务组合的过程一般分为两个步骤C服务组合:按照一定的逻辑关系建立组合Web服务的过程C服务协同:运行组合服务、完成对组合服务中各Web服务的调度和监控的过程9/909.1Web服务组合概述#Web服务组合方法C两种Web服务组合方法T静态组合:在开发设计过程中就决定Web服务之间的控制流和数据流T动态组合:在系统运行过程中自动产生Web服务之间的控制流和数据流10/909.1Web服务组合概述#Web服务组合方法C静态组合T基于服务在设计阶段已经被组合并且在执行过程中都不会改变的假设,在组合服务定义过程中将组合Web服务与完成业务功能的单个Web服务静态绑定,将Web服务提供者的地址、接口等信息直接记录在组合服务定义中T这种情形适合于固定合作伙伴间的交互,合作双方事先已建立一定的协议,可进行长期稳定的合作,服务提供者保证服务时刻可用,且服务接口不发生变化11/909.1Web服务组合概述#Web服务组合方法C动态组合T在Internet环境中,这种合作方式通常是不够的,企业总是希望寻找更好的合作伙伴,得到更好、更经济的服务,因此动态组合是组合Web服务的发展方向T动态Web服务组合并不在组合服务定义过程中指定具体的Web服务来完成业务功能,而是在组合Web服务执行期间实时选取Web服务并绑定执行。动态组合又进一步划分为半自动组合和全自动组合两种12/909.1Web服务组合概述#Web服务组合方法C动态服务组合——半自动组合T在组合服务定义过程中不为任务指定固定的服务提供者以及Web服务,将具体的绑定延迟到组合Web服务执行时动态完成T半自动组合要求在组合Web服务设计时,说明任务之间的逻辑关系,所需实现的功能、所属的服务类别、需要查找的UDDI地址以及多个查找结果的选择策略等内容,而将具体的服务延迟到组合服务的执行过程中来绑定,这样就保证了组合Web服务能够更好地适应Internet这种动态性要求非常高的应用环境13/909.1Web服务组合概述#Web服务组合方法C动态服务组合——半自动组合T半自动组合方式实际上采用的是一种静态组合、动态绑定的机制,可以支持构建复杂的业务流程。目前大部分针对Web服务组合的研究都采用了这种方式旅行计划半自动组合14/909.1Web服务组合概述#Web服务组合方法C动态服务组合——全自动组合T服务的组合过程实现全自动化,根据用户提出的需求,代理能够分析、查找所需要的Web服务,并进行自动组合、调用和执行,完全脱离了人的参与T全自动服务组合需建立在对Web服务进行充分的语义描述基础上进行输入要求输出要求推理输入要求输出要求15/909.1Web服务组合概述#Web服务组合方法C动态服务组合——全自动组合T示例16/909.1Web服务组合概述#Web服务组合方式C两种方式T编制(Orchestration):指为业务流程而进行Web服务组合T编排(Choreography):指为业务协作而进行Web服务组合SamplePurchaseOrderPurchaseOrderRequestPurchaseOrderAcknowledgementPurchaseOrderResponseBusiness“A”Business“B”17/909.1Web服务组合概述#Web服务组合方式C编制(Orchestration)T通常用于专用业务流程中,一个中央流程(可以是另一个Web服务)控制相关的Web服务并协调对操作所涉及Web服务的不同操作的执行T相关的Web服务并不“知道”(也无需知道)它们参与了组合流程并在参与更高级别的业务流程T只有编制的中央协调员知道此目标,因此编制主要集中于操作的显式定义以及Web服务的调用顺序18/909.1Web服务组合概述#Web服务组合方式C编制(Orchestration)19/909.1Web服务组合概述#Web服务组合方式C编制(Orchestration)SendPOReceivePOAckReceivePOResponseTransformTransformFromERPToERPPORequestPOAcknowledgementPOResponsePrivateProcessBusinessABPELWorkflow20/909.1Web服务组合概述#Web服务组合方式C编排(Choreography)T编排并不依赖某个中央协调员。相反,编排所涉及的每个Web服务完全知道执行其操作的时间以及交互对象T编排是一种强调在公共业务流程中交换消息的协作方式T编排的所有参与者都需要知道业务流程、要执行的操作、要交换的消息以及消息交换的时间21/909.1Web服务组合概述#Web服务组合方式C编排(Choreography)22/909.1Web服务组合概述#Web服务组合方式C编排(Choreography)PORequestSendPOReceivePOAckReceivePOResponseReceivePOSendPOAckSendPOResponsePOAcknowledgementPOResponsePublicProcessBusinessABusinessB23/909.1Web服务组合概述#Web服务组合方式C编制与编排的关键区别T编制是一种层次化的请求者/提供者模型,仅定义了应调用什么服务以及应该何时调用,没有定义多方应如何进行协作T编排是一种对等模型,业务流程中会有很多协作方24/909.1Web服务组合概述#Web服务组合方式C从组合Web服务以执行业务流程的角度而言,编制是一个更灵活的范例,它相对于编排而言具有以下优点T参与组合的元件流程的协调由某个已知的协调员集中管理T可以组合Web服务而不必使它们知道它们正在参与更大的业务流程T可以准备其他方案以防发生故障25/909.1Web服务组合概述#Web服务组合技术分解CWeb服务组合包含一系列相关技术:建模、分析、部署、执行、监控、优化等26/909.1Web服务组合概述#Web服务组合技术分解C建模技术:建立服务组合模型的技术。服务组合模型类似于业务过程模型,包括任务和任务之间的关系C分析和仿真技术:包括可以对服务组合模型的可达性、结构和资源使用、性能等进行定性和定量分析的技术,以及设计业务场景对过程进行仿真测试,发现关键路径和瓶颈的技术C编程技术:将服务组合模型转换为可执行的服务组合代码的技术27/909.1Web服务组合概述#Web服务组合技术分解C部署和执行技术:建立服务组合执行引擎技术,包括服务组合代码在执行引擎上的部署和执行C监控技术:在监控工具帮助下,对服务组合代码的实际执行以及执行中各关键指标进行测量C优化技术:根据服务组合代码执行的历史数据以及用户的需求对代码进行优化的技术28/90#9.1Web服务组合概述#9.2Web服务组合编程语言BPEL#9.3Web服务组合原型系统#9.4Web服务组合相关问题#9.5服务科学简介内容提纲29/909.2Web服务组合编程语言BPEL#服务组合建模C服务组合建模的意义在于在较高的抽象层次对业务问题进行规范和定义,为服务组合编码活动提供设计蓝图C目前较有影响力的服务组合建模语言是由开发标准组织BPMI(BusinessProcessModelingInitiative)于2004年5月发布的业务过程建模符号BPMN语言C还有的使用工作流建模语言XPDL、Petri网、进程代数以及UML等进行服务组合建模工作30/909.2Web服务组合编程语言BPEL#服务组合编程C用某种特定的服务组合编程语言把服务组织成能完成自动业务过程的程序C相关的服务组合编程语言有TBPEL4WS(BusinessProcessExecutionLanguageforWebServices)TBPML(BusinessProcessMarkupLanguage):提供了一个抽象的模型和语法来表达抽象的、可执行的商业流程。使用BPML可定义企业流程、复杂的Web服务以及多方之间的协作与交互31/909.2Web服务组合编程语言BPEL#BPEL语言简介C是BPEL4WS的简写,基于工作流的语言C服务组合编程语言的发展2000/05XLang(Microsoft)2001/03BPML(Intallioetal)2001/05WSFL(IBM)2001/06BPSS(ebXML)2002/03BPEL4WS1.0(IBM,Microsoft,BEA)BPEL4WS1.1(OASIS)2002/062003/01WS-Choreography(W3C)2003/04WSCI(Sunetal)WSCL(HP)2002/0832/909.2Web服务组合编程语言BPEL#BPEL语言简介CBPEL协议栈DescriptionHTTP,IIOP,JMS,SMTPTransportXMLMessageSOAPWSDLUDDIDiscoveryTransactionsCoordinationWS-SecurityWS-ReliabilityQualityofServiceOrchestration-BPEL4WSBusinessProcessesContextDescriptionManagementChoreography-CDL4WS33/909.2Web服务组合编程语言BPEL#BPEL语言简介CBPEL是目前研究界和业界昀认可和流行的Web服务组合语言,也是事实上的业界标准CBPEL支持两种不同的业务流程描述方法(即支持编制和编排)T可编写可执行服务组合过程:可执行流程允许指定业务流程的准确细节。它们遵循编制范例,并可由编制引擎执行T可用于定义服务协作协议:抽象业务协议允许只指定双方之间的公共消息交换。它们不包含流程的内部