探索中国CIO人才现状 | 第四季调研报告
基于SOA的服务组合技术研究
2014-02-13  作者:e-works 

  随着移动通信业务的发展,增值业务市场也呈快速发展的趋势,增值市场规模逐年增长。用户对业务的需求也呈现出多样化的趋势,移动通信运营商在激烈的市场竞争中,利用现有的业务平台及资源,灵活组合,适时推出用户所需的各种新业务,将会极大地增加运营商的市场竞争能力。然而传统的服务实现使用不同的语言和技术,并且运行于不同平台和操作系统之上。因此,各个系统相互孤立,难以进行通信,并且其内部信息处理手段的差异较大,数据存在不一致性,彼此之间难以进行信息、数据的交换和共享。现在,随着SOA(service-orientedarchITecture,面向服务的架构)技术的出现和快速发展,可以很好地解决该问题。SOA架构以服务为基本单元,通过把不同应用封装成统一的Web服务来屏蔽系统间的差异性;以服务作为构建时的基础组件,通过服务组合技术对散列的组件进行组合,从而解决服务间数据的交互和共享,以松耦合的方式实现跨机构的协作业务流程;通过服务组合技术对业务流程的全过程进行监管,实现流程的简化和优化。


  1.面向服务的体系架构SOA


  SOA是以服务为基础的组件模型。服务作为封装特定功能的实体,以业务为其核心理念,通过定义良好的接口的契约彼此间进行联系。同时,服务是中立的,可以独立于特定的技术和平台。服务具有可重用性,一个定义良好的服务可以在多个业务流程的组装中使用。也正是因为SOA中所有应用都是服务,基于SOA的系统平台可以采用服务组合技术将单独的、中立的、封装完善的服务组合成新的、复杂的服务,从而实现数据共享。又因为服务之间的交互是通过标准定义的接口进行的,基于SOA的系统平台可以屏蔽由于平台、操作系统以及实现语言不同而造成的差异。


  基于SOA的IT架构以一系列执行业务功能的服务为基础,通过服务的形式重用企业现有资产。同时,通过服务的不同组合不仅实现异构环境中的消息、数据的交互和共享,还可以使业务流程变得更加灵活,从而迅捷有效地满足现实生活中快速变化的业务需求。可见,要使搭建的架构灵活多变,就要考虑服务构建、数据模型和服务编排这三方面采用何种技术来实现。如图1所示为SOA关键技术及其关系。


  本文重点研究服务组合技术。SOA架构中的服务组合编排模型不仅要满足异构、松耦合的要求,还要是敏捷的,因此与Web服务关联的服务组合技术BPEL(BusinessProcessExecutionLan原guage)以其基于服务、松耦合、高度敏捷等特点成为构建SOA架构的首选服务编排模型。BPEL的描述文件是WSDL,不仅支持Web服务,也可以更好地支持SCA定义的服务。同时,BPEL规范可以把其定义的流程本身暴露为Web服务对外提供服务。同时由XMLSchema定义的BPEL规范可以直接把SDO定义引入到自己的变量到中,作为其变量进行操作。总之,BPEL是SOA服务编排的核心技术,同时也是具体业务流程的体现。


  图1SOA关键技术及其关系


  2.基于BPEL的服务组合技术


  BPEL技术规范即业务流程执行语言规范,是以Web服务、XML为基础的诸多规范上提出的一种新型的业务流程的定义语言规范。它的灵感来源于IBM的WSFL以及微软的XLANG。其中,WSFL是一种以图为基础的流程模型,其特点是灵活、直观;XLANG即工作流程描述语言,它以过程代数为基础,具有结构化构造的优势。BPEL作为两者结合的产物,以用Web服务接口标准描述的伙伴和业务流程的交互为基础,定义了描述业务流程的语法规范,主要用于业务流程建模。作为一个Web服务组合标准,BPEL可以直接描述一组Web服务的操作顺序,以及服务间交互时共享的数据,还可以处理Web服务使用过程中发生的异常;作为执行流程的建模语言,BPEL可以组合现有的服务,从而生成一个新的更为复杂的Web服务。


  BPEL是一个基于开放标准的技术规范,这些技术规范为BPEL流程的执行提供环境。图2展示了BPEL规范与其相关技术标准的关系。


  图2BPEL规范与相关技术标准的关系示意图


  BPEL规范描述的是各成员服务何时、为何、以何种顺序被调用,还为服务提供错误处理和补偿机制。因此,基于BPEL规范的流程定义总体可分为三个部分,这三部分之间的关系如图3所示。


  图3BPEL流程规范分类示意图


  3.基于BPEL的服务组合实现方法


  基于BPEL的服务组合方法可归纳为两个部分,一是为业务流程中涉及的每个活动设定一个抽象服务,形成抽象服务流程定义;二是执行前通过中间环节进行服务匹配和绑定,将每个抽象服务替换成一个实体服务,将抽象服务转换成实际的符合BPEL规范的业务流程文档,此部分是整个方法实现的核心。


  3.1抽象服务流程定义


  由于BPEL业务流程通过WSDL技术规范对其与成员服务之间交互的接口进行描述,相关活动的实现要发布成WSDL文件描述的服务。这些生成的WSDL文件即为抽象服务流程定义。在本文中Web服务是基于Axis2框架搭载Tomcat服务器发布实现的,把Axis2与平台开发环境进行整合,整合后开发好的类直接在Tomcat服务器上发布即可通过在浏览器中键入网址获得相应的WSDL描述。


  3.2服务接口的调用


  在BPEL流程中,流程与成员服务之间的交互是通过伙伴链接调用WSDL描述的服务接口实现的,因此,服务接口的调用是对伙伴链接的定义。在实际执行过程中,难免会发生错误或者异常,需要对其进行处理以及进行一些必要的补偿操作。使用流程处理器可以提高服务质量,增强BPEL流程的健壮性。在业务流程中,可能发生人工审批和业务取消同时操作并生效的错误,此时需要添加错误处理器捕获错误和补偿处理器添加补偿措施。