SOA中基于BPEL的服务组合方法研究与设计

2013-09-04 10:30张德育
沈阳理工大学学报 2013年4期
关键词:调用业务流程处理器

张德育,张 倩

(沈阳理工大学通信与网络工程中心,辽宁沈阳110159)

随着IT技术的发展,面向服务的架构(service-oriented architecture,SOA)已经成为新一代的基础架构。在SOA架构中服务以可被发现的接口形式发布于网络中,并且通过这些接口为使用者提供服务。服务组合作为实现SOA系统架构的重要特征,其实现方法的研究尤为重要。其中,服务组合是指由各个小粒度的Web服务相互之间通信和协作来实现大粒度的服务功能;通过有效地联合各种不同功能的Web服务,服务开发者可以借此解决较为复杂的问题,实现增值功能。当前关于服务组合的研究大致分为两个方向:一个是基于智能规划,代表性工作是斯坦福大学和卡内基-梅隆大学等机构提出的Web服务本体语言(Ontology Web Language for Services,OWL-S)[1];另一个方向是基于工作流组合,以BEA系统公司、IBM和微软等提出的业务流程执行语言(Business Process Execution Language for Web Services,BPEL4WS)为代表[2]。OWL-S 描述的是各个服务的外部信息间的交互,使用本体概念对Web服务的语义进行表示,而概念间的推理则依靠描述逻辑来实现。虽然OWL-S有许多优越性,但是在目前的Web框架下,很难得到广泛的使用,它只有在全部都是语义描述的理想状况下才能发挥最大的功效。BPEL(BPEL4WS后被更名为WS-BPEL,简称BPEL)是IBM 的WSFL和微软的XLANG相结合的产物,是一种高级的、抽象的、可执行建模语言,它不仅实现Web服务间的交互和流程编排,也将流程自身暴露为Web服务。同时,BPEL是基于工作流的组合方法的经典代表,它可以与经典工作流建模方法相结合,充分吸收工作流技术的一些优势,从而使实现的服务组合有效、便捷且易于理解。因此,本文采用基于工作流的服务组合技术,在对BPEL进行深入研究的基础上,设计了一种基于BPEL的服务组合方法,并进行了验证,从而解决SOA中的服务组合方法的服务编排问题。

1 SOA中的服务组合技术

1.1 BPEL与SOA

SOA是以服务为基础搭建的、松耦合的、灵活的体系架构[3]。SOA的核心是重用和互操作,它可以把不同区域不同机构的IT资源整合成可操作的、基于标准的服务。在SOA中,通过服务接口,可以用一个服务替换另一个服务而无需关心其底层的实现技术;通过通用的服务和XML标准,可以将遗留应用和数据纳入新系统。如图1所示,SOA可大致分为三个部分:服务组件架构(Service Component Architecture,SCA)、服务数据对象(Service Data Object,SDO)和服务编排(BPEL)。SCA是一个与实现语言无关的服务组件编程模型,用于定义服务,是构建SOA的基础;SDO作为以对象为中心的层次数据模型,用于表示SOA的服务中流转的数据;BPEL是服务编排的核心技术,同时也是具体业务流程的表现。作为SOA编程模式的“铁三角”之一,对BPEL的研究不可或缺。

图1 SOA模式的铁三角

1.2 基于工作流的服务组合技术研究

工作流这个概念产生于生产组织和办公自动化领域。工作流是一类能够完成或者部分自动执行的经营过程,它根据一系列过程规则、文档、信息或任务能够在不同的执行者之间进行传递和执行。基于工作流的服务组合方法采用过程驱动的服务组合思想,它利用服务组合与过程模型的相似性,使用较为成熟的过程建模工具和语言对Web服务组合的业务进行建模,采用“替代”法将过程模型中的相关组件最终替换成具体的Web服务,从而获得有效的、可执行的服务组合方案。

BPEL是较为成熟的过程建模语言中的一种,作为基于XML定义的描述语言,它的协议基础是:WSDL1.1、XML Schema1.0 和 XPath1.0。其中,WSDL消息和XML Schema类型定义提供了BPEL流程所用的数据模型;XPath提供数据处理支持,所有的外部资源由WSDL服务表示。这些都是BPEL定义业务流程的基础。也正是因为涉及较多的协议基础,目前大部分研究者都回避BPEL而采用“迂回的方式”进行建模,如Petri网。但是,BPEL作为专为整合Web服务而制定的规范标准[4],因其具有基于服务、嵌套性、松耦合型、服务质量和生命周期的管理等特点,基于BPEL的服务组合可以很好地满足SOA松耦合和异构的要求,并且是敏捷的。此外,使用BPEL建模得到的流程清晰易懂,这些都足以成为深入研究BPEL技术标准的动力。

基于BPEL的服务组合方法可归纳为两个部分:一是为工作流中的每个活动设定一个抽象服务,形成抽象服务流程定义;二是执行前通过中间环节进行服务匹配和绑定,将每个抽象服务替换成一个实体服务,将抽象服务流转换成实际的服务组合方法,此部分是整个方法实现的核心,也是本文研究的重点。

在进行业务流程定义之前,要先定义业务流程所需要的资源。这些资源主要包括:扩展定义,它将列举业务流程所需要使用的扩展定义的命名空间以及该扩展是否必须被BPEL引擎支持;引入外部定义文件,通过import将BPEL所需的可能定义在外部的WSDL文件或XML Schema文件中的接口定义,伙伴链接类型定义,变量定义,用于关联集合的属性别名等引入流程定义;伙伴,指明业务流程对外提供的接口,以及因调用其服务所需要引用的接口;变量,存储业务流程的中间状态,使得一系列无状态的Web服务调用成为有状态的业务流程;关联集合,确定返回的消息路由到正确的流程实例。

当所需资源准备好后,着重分析该业务流程本身的活动。活动作为BPEL业务流程的执行单元,分为基本活动和结构化活动。基本活动具有原子性,它定义业务流程的一些基本操作,例如事件的接收,变量的赋值,服务调用等。而结构化活动可以看作是活动的容器,它定义了内部活动的规则,如flow活动使其内部的活动并行执行。

另外,BPEL还可以通过流程处理器提高所提供的服务质量。流程处理器包括错误处理器(Fault Handlers)、补偿处理器(Compensation Handlers)和事件处理器(Event Handling)[5]。它们可以定义在活动上,指出活动发生错误、需要补偿或是特定事件发生时需要的处理逻辑。错误处理器将捕获流程级别的错误并进行相应的处理,使错误处理逻辑和正常的业务流程逻辑分开。补偿处理器只是包含了一个需要执行的补偿逻辑的活动。事件处理器为BPEL流程提供了接受并处理随机事件的能力,这里的事件可以是消息事件,也可以是时钟事件,即某个预定的时刻到达或预定的事件长度得到满足而发生的事件。

2 基于BPEL的服务组合方法应用与分析

基于前文对BPEL技术的分析,下面以区域医疗平台中药品采购服务为例来说明实现该业务的基于BPEL的服务组合方法。药品采购服务是医疗机构内部各部门先提交药品采购单,由药品采购负责人进行人工审批,审批合格后生成药品信息统计并通过省网采购系统进行药品采购,否则该提交者对采购单进行修改,然后再提交,具体流程如图2所示。由以上分析知道药品采购服务是由采购单提交服务、采购单取消服务、人工审批服务、采购单信息统计服务根据业务需求整合而成,而这些服务作为现有服务发布,并生成BPEL可以调用的相应的wsdl文件,即采购单提交服务PurchaseApply.wsdl、人工审批服务TaskManager.wsdl、采购单取消服务 PurchaseCancle.wsdl、采购单信息统计服务Pstatistics.wsdl。下面将具体说明如何把这些服务抽象到BPEL流程中,并通过该BPEL流程的运行,调用相关服务来完成药品采购服务。

在进行建模之前要先确定整个业务流程的骨架,本文经过对多个业务需求研究,抽象出两种基本业务流程执行模式。简单的业务由其中一种构成,复杂的业务大都由这两种模式混合构成。

图2 业务流程图

1)串行模式按照顺序执行各项活动,第一个活动执行结束才能开始执行第二个活动,以此类推,直到最后一个活动执行结束,整个流程结束,如图3所示。

图3 串行模式

2)并行模式该模式中所有执行单元将同时开始执行,并可以通过设置条件来决定它们的结束是否需要同步,如图4所示。

图4 并行模式

在本例中由业务流程图可知,该业务流程执行模式由两种模式混合构成。人工审批任务和取消采购单为并行模式中的两个并行任务;在人工审批任务之后是由两个顺序执行的任务构成的串行模式。

(1)定义数据类型

通过分析该业务流程所涉及的数据,使用XML Schema定义数据类型,从而确定药品采购服务的输入和输出。由于整个业务流程中流转的是药品采购单信息,药品采购单包括药品编码、通用名、规格等药品相关信息,以及需要购买的数量信息,所以该业务数据类型Purchase:RequestType是复合类型,由用户定义类型Purchase:DrugInfo-Type和原始类型string和float组成。XML Schema部分代码如下所示:

(2)设计服务接口调用服务

药品采购服务是通过调用一些现有服务实现,而在BPEL中对现有服务的调用是通过服务接口实现的。以调用人工审批服务为例,具体的实现方法是通过import引入所需资源,即现有服务的wsdl文件;使用partnerLinks伙伴链接来实现人工审批任务TaskManager.wsdl。以下代码实现人工审批服务的调用:

(3)业务流程转换为BPEL流程

一个BPEL流程即一个服务组合方案,因此要将业务流程抽象成用BPEL语言描述的BPEL文档。在本案例中的基本活动有变量的赋值assign活动用于把从数据库查出的药品信息赋值到采购单信息中,当采购单填写完整时通过receive活动把该事件传递给人工审批服务,通过invoke活动调用人工审批服务和采购单信息统计服务等;结构化活动有完成人工审批任务和取消采购单这两个并行任务的并行流结构flow;执行在人工审批任务之后的两个任务的串行结构sequence。当确定这些结构之后整个流程已经基本完成,通过图形化工具可以将该业务流程转换为BPEL文档。图5、图6为药品采购业务的图形化的BPEL流程。

(4)BPEL流程的完善

使用流程处理器可以提高服务质量,增强BPEL流程的健壮性。在本业务流程中,采购单提交成功之后可能发生人工审批和采购单取消同时操作并生效的错误,此时需要添加错误处理器捕获错误和补偿处理器添加补偿措施。具体实现机制是在调用采购单取消服务的作用域中添加错误处理器,人工审批服务的invoke活动后添加补偿处理器。若取消采购单时该采购单还有审批通过的结果则抛出错误,错误处理器通过catch捕获该错误,同时触发人工审批服务的补偿处理器,对人工审批服务进行回退,从数据库中删除该采购单相关数据信息。在采购单提交服务作用域中添加事件处理器,当某采购单提交一周后,由于某种原因仍未有审批结果的时候通过事件处理器中on-Alarm触发,向人工审批服务再次发送审批请求。

图5 药品采购业务BPEL流程总图

图6 并行模式详图

(5)药品采购服务的实现

将完善的BPEL文档注入Oracle BPEL引擎后,引擎会根据业务流程的流转通过伙伴链接调用相应的服务,从而实现药品采购服务。由于发布后的药品采购服务同时会生成相应的wsdl文件,故可以直接调用药品采购服务实现药品采购业务,亦可以继续作为现有服务按照需要进行深层次整合,生成更复杂的服务。

3 结束语

基于BPEL的服务组合方法,将业务流程中各个服务按照一定的需要进行组合编排,并将自身暴露为一个新的Web服务,满足SOA架构松耦合和异构的要求,并且是高度敏捷的。另外,现实生活中的业务流程大都多变,BPEL只是把该组合中各个服务实现的顺序变动一下,与传统的硬编码实现相比更加容易且方便。本文提出了基于BPEL的服务组合方法,并通过药品采购业务实现了提交采购单服务、取消采购单服务和人工审批服务的服务组合。

[1]The OWL Services Coalition.OEL-S:semantic markup for Web Services[EB/OL].http://www.daml.org/services/owl-s/1.1/overview/,2006-11-08.

[2]T Andrews,F Curbera,H Dholakia,et al.Business proc ess execution language for Web services version 1.1[OL].http://www.ibm.com/developerworks/library/specifica-tion/wsbpel/,2002-07-30.

[3]邓子云.SOA实践者说:分布式环境下的系统集成[M].北京:电子工业出版社,2010.

[4]王紫瑶,南俊杰,段紫辉,等.SOA核心技术及应用[M].北京:电子工业出版社,2008.

[5]梅彪,姜新文,吴恒.WS-BPEL业务流程与访问控制[J].计算机工程,2008,34(19):144-146.

猜你喜欢
调用业务流程处理器
RPA机器人助业务流程智能化
核电项目物项调用管理的应用研究
LabWindows/CVI下基于ActiveX技术的Excel调用
企业财务管理、业务流程管理中整合ERP之探索
互联网+背景下物流公司的业务流程再造
基于财务业务流程再造的ERP信息系统构建探析
基于系统调用的恶意软件检测技术研究
Imagination的ClearCallTM VoIP应用现可支持Cavium的OCTEON® Ⅲ多核处理器
ADI推出新一代SigmaDSP处理器
利用RFC技术实现SAP系统接口通信