基于BPEL的一致性声明文稿设计实现的研究

2017-06-29 12:00董文莉
计算机应用与软件 2017年5期
关键词:文稿一致性声明

董文莉 赵 懿

(华北计算技术研究所 北京 100083)

基于BPEL的一致性声明文稿设计实现的研究

董文莉 赵 懿

(华北计算技术研究所 北京 100083)

基于BPEL(Business Process Execution Language)的服务组合是Web服务的发展方向。基于BPEL的一致性声明文稿是基于BPEL的服务组合系统一致性测试内容和构造基于BPEL的服务组合系统测试用例的主要依据。基于一致性测试理论和BPEL/WSDL规范分析,研究基于BPEL/WSDL的各成分结构关系,提出基于BPEL的一致性声明文稿。该文稿包含10类子文稿:流程支持文稿、合作伙伴链接支持文稿、服务组件支持文稿、变量支持文稿、相关集支持文稿、消息支持文稿、各种处理支持文稿、各种活动支持文稿、接口支持文稿、操作支持文稿。设计实现了文稿自动生成系统,用于自动生成基于BPEL的一致性声明文稿。

服务组合 业务流程执行语言 Web服务描述语言 实现一致性声明

0 引 言

基于BPEL[1]的一致性文稿通过提取BPEL规范中的各项测试需求产生,是基于BPEL服务组合较为标准、规范、完备的测试需求描述。基于BPEL的一致性文稿是验证基于BPEL的服务组合系统符合既定BPEL规范程度的基础,是形成基于BPEL的服务组合系统一致性测试内容和构造基于BPEL的服务组合系统测试用例的主要依据,是提高基于BPEL的服务组合系统一致性测试测试质量和基于BPEL的服务组合系统可信度的关键。

ITU-T提出了一致性测试方法和框架[2-4],发布了一致性声明文稿需求和指南。基于CMIP[5]、SNMP[6]、CORBA[7]和XML[8-10],ITU-T/IETF都定义了相应的ICS文稿。目前的Web服务一致性测试研究中,文献[11]研究分析了单个服务的一致性声明文稿,然而Web服务的本质是模块化动态组合的组件,对服务组合的研究是Web服务的一个重要方面和发展趋势,对单个服务测试的相关研究无法满足Web服务应用发展的需要。同时Web服务组合的分布、动态(绑定、组合等)、异构、松耦合、规范性、开放性、高度集成等特点,决定了基于BPEL服务组合的灵活性、动态性、规范性,及其一致性声明文稿设计的难度和复杂性。

本文基于ITU-T一致性测试和一致性声明文稿的相关定义和说明,通过对基于BPEL规范的服务组合的分析,在对BPEL及其相关WSDL(Web Services Description Language)[12]文法描述进行研究的基础上,提出了基于BPEL服务组合的一致性声明文稿,并设计实现了相关原型系统进行了实验验证。

1 业务流程执行语言BPEL

BPEL及其引用(import)WSDL文档定义了服务组合实例的词汇表及其结构,使用BPEL/WSDL可以为基于BPEL的服务组合进行信息建模,从而为基于BPEL的服务组合测试提供了语法模式。BPEL/WSDL采用层层继承/细化的方式来构造。BPEL/WSDL列出了可用于服务组合的合作伙伴链接、各种处理、各种活动、消息、变量、相关集、接口、操作、元素、属性、类型、唯一性的定义及其相互关系。基于BPEL的服务组合的执行从流程开始,采用活动来描述服务组件的调用关系,活动的内容通过活动的子活动/事件、活动的调用服务、服务中的操作、操作输入输出消息层层展开,同时采用相关集correlationSets定义操作之间的消息调用关系,采用变量variables定义操作参数变量,采用元素、属性、类型、唯一性细化变量variables的定义,形成多层继承关系。忽略与基于BPEL的服务组合一致性测试文稿无关的结构,如documentation,BPEL结构(包含引用Web服务的WSDL)之间的包含关系在图1中给出。基于BPEL的服务组合接口的ICS文稿(简称为BPICS)必须描述出图1中的关系。

一致性声明的目的就是使每一个一致性测试需求成为独立问题,从而可以由被测用户根据被测系统的实现情况作出清晰、明确的回答,所以基于BPEL服务组合一致性声明文稿要尽可能的表达出细节的一致性需求,为此我们将服务组合层层展开,形成一棵继承树。

图1 基于BPEL.的各成分结构关系图

2 基于BPEL的ICS文稿

基于BPEL的ICS文稿包含一系列表格,表格中的通用项目主要有:索引/子索引、支持/不支持、补充信息。其中相对次序采用“索引/子索引”来表示,“索引/子索引”也包含了业务流程中各要素的相互关系。在“支持”项中,采用“Y”来表示该项内容被实现,“N”表示该项内容未实现,“-”表示该项内容不适用于本业务。补充信息又称为额外信息,用来提供一些无法表述于其他项目同时对一致性测试比较重要的额内容。在填充信息时,用“*”表示在生成一致性声明文稿时填写的项目,用“○”表示被测试的用户声明的项目,“△”表示测试者填写的项目。

基于和一致性测试理论,分析BPEL语法定义,我们提出的BPICS文稿主要包括10类子文稿:流程支持文稿、合作伙伴链接支持文稿、服务组件支持文稿、变量支持文稿、相关集支持文稿、消息支持文稿、各种处理支持文稿、各种活动支持文稿、接口支持文稿、操作支持文稿。BPEL和WSDL基于XML Schema来描述,BPEL和WSDL的XML Schema部分的一致性文稿(包括元素支持文稿、属性支持文稿、类型支持文稿、唯一性支持文稿、可替换类型支持文稿和可替换元素支持文稿)我们已经完成标准制定,参见ITU-T M.3031定义[8-9],本文不再赘述。

2.1 流程支持文稿

基于BPEL的服务组合(process)的一致性测试是从流程开始的,服务组合由活动组成,活动一致性信息用服务组件支持文稿进行描述。基于一致性测试需求和流程声明,服务组件支持如表1所示。其中“Identifier”栏标识文稿描述对象名字,本文稿中是流程的名字,后文中的“Identifier”栏有类似含义,不再赘述。

表1 流程支持文稿

2.2 合作伙伴链接支持文稿

我们采用合作伙伴链接partnerLink来定义服务组合和外部定义服务(外部WSDL)的关联关系,其中myRole/parternerRole用于定义服务组合/外部服务的调用关系,“myRole”栏用于标识服务组合角色,“parternerRole”栏用于标识调用服务角色。portType用于指出外部服务类型。suppressJoinFailure用于定义是否抑制服务组合中的活动的 joinFailure 故障(有两个选项可填:y/n),exitOnStandardFault用于定义标准故障时是否退出(有两个选项可填:y/n),合作伙伴链接支持文稿如表2所示。

表2 合作伙伴链接支持文稿

2.3 服务组件支持文稿

服务组件支持文稿从属于流程/服务组合持文稿,用来标识流程的不同服务组件。服务组件支持文稿如表3所示,其中“Category”栏有两个选项可填:“activity”、“handler”。

表3 服务组件支持文稿

2.4 变量支持文稿

变量支持文稿用于描述BPEL中的变量(variable)一致化信息,变量支持文稿如表4所示,其中 “VarType”栏是变量的类型,“VarType-Name” 栏是变量的类型名,“From-spec”栏是变量的初始定义。

表4 变量支持文稿

2.5 相关集支持文稿

相关集支持文稿用于描述BPEL中的相关集(correlationSets)一致化信息,相关集支持文稿如表5所示,其中“Properties”栏是相关联部分,“Initiate”栏是是否初始化该相关集,相关集的“property”和“propertyAlias” 的具体信息由其“property”和“propertyAlias”通过消息 Property支持文稿、消息propertyAlias 支持文稿来详细展开。

表5 相关集支持文稿

2.6 消息支持文稿

BPEL采用属性/属性别名来实现不同消息及其部分(part)的共享,消息支持文稿共由三个文稿组成:消息message支持文稿、消息Property支持文稿和消息propertyAlias支持文稿。

消息message支持文稿用于描述BPEL中的消息message一致化信息,由主表和附表组成,其主表如表6所示,其中“type”栏用来标识消息类型,附表如表7所示。

表6 消息message支持文稿主表

表7 消息message支持文稿附表

消息Property支持文稿用于描述BPEL中的消息Property一致化信息,消息Property支持文稿如表8所示,其中“propertyType”栏是Property的类型,“propertyType-Name” 栏是Property的类型名。

表8 消息Property支持文稿

消息propertyAlias支持文稿用于描述BPEL中的消息propertyAlias一致化信息,消息propertyAlias支持文稿如表9所示,其中“propertyName”栏是Property的名字,“Type” 栏是propertyAlias的类型,“Type-Name”栏是propertyAlias的类型名,“Query”栏是对消息查询标识以得到一个字段。

表9 消息propertyAlias支持文稿

2.7 各种处理支持文稿

各种处理支持文稿是对BPEL中定义的所有处理的y一致性信息的描述,它包括“范围支持文稿”、“补偿处理支持子表”、“错误处理支持子表”、“事件处理支持子表”、“终止处理支持子表”和“消息事件处理文稿”范围支持文稿用于定义BPEL中的scope一致化信息,范围支持文稿如表10所示,Isolated用于定义隔离性(有两个选项可填:y/n),exitOnStandardFault定义同2.2节,messageExchange用于定义接收和回复的内部关联,即消息交互。

表10 范围支持文稿

补偿(BPEL中的Compensation Handlers)处理支持文稿如表11所示。

表11 补偿处理支持文稿

错误(BPEL中的Fault Handlers)处理支持文稿如表12所示,其中“Variable”栏是错误数据元素的标识,“VarType”栏是错误变量的类型,“VarType-Name” 栏是错误变量的类型名。

表12 错误处理支持文稿

事件(参见BPEL的event handler定义)处理支持文稿如表13所示,onMessage用于指出相关变量属性的可选类型引起的活动,事件处理的消息事件、相关集、活动由其消息事件、相关集、活动支持文稿来详细展开。

表13 事件处理支持文稿

终止(参见BPEL的Termination Handlers)处理支持文稿如表14所示。

表14 终止处理支持文稿

消息事件处理文稿

消息事件(onMessage)支持文稿如表15所示,其中“partnerLink”栏是要处理事件的合作伙伴连接名,“portType”栏是要处理事件的服务名。“operation”栏是要处理事件操作名。“variable”栏是要处理事件中操作的输入变量名。“messageExchange”栏是消息活动关联的元素能够接收的消息名。消息事件的关联集、子活动由其关联集、子活动的支持文稿来详细展开。

表15 消息事件支持文稿

onAlarm支持文稿如表16所示,其中,“duration / deadline”栏是持续时间或者等待时间点,“exprType”栏是表达式类型,有两种,分别是“duration-expr”和“deadline-expr”,onAlarm的子活动由其子活动的支持文稿来详细展开。

表16 onAlarm支持表格

2.8 各种活动支持文稿

各种活动支持文稿包括基本活动文稿(Receive支持文稿、Reply支持文稿、Invoke支持文稿、Assign支持文稿、Wait支持文稿、Empty支持文稿)和结构化活动文稿(Sequence支持文稿、Switch支持文稿、While支持文稿、Pick支持文稿、Flow支持文稿、Link支持文稿)。

receive支持文稿如表17所示,其中 “activityType”是该活动的类型名,即“receive”, “portType”栏是要receive要接收的操作的服务名,“operation”栏是要接收的操作名,“Variable/fromPart”栏是要receive中操作的输入变量,“messageExchange”栏是receive关联的元素能够接收消息,“createInstance”栏是否要创建实例,后文中相关栏定义类似,不再赘述。

表17 receive支持文稿

reply支持文稿如表18所示,其中variable/ toParts”栏是要reply中操作的输出变量名,“faultName”栏是reply活动的错误处理过程的名字。

invoke支持文稿如表19所示,其中“inputVariable/ toParts”栏是要invoke中操作的输入变量名,“outputVariable/ fromParts”栏是要invoke中操作的输出变量名。

Assign支持文稿如表20所示,其中,“from-spec”栏是源变量,“to-spec”栏是赋值目标变量,“keepSrcElementName”栏标识是否修改赋值目标元素名称。

表18 reply支持文稿

表19 invoke支持文稿

表20 assign支持文稿

Wait支持文稿如表21所示,其中“duration/deadline”栏是持续时间或者等待时间点,exprType”栏是表达式类型,有两种,分别是“duration-expr”和“deadline-expr”。wait的元素、属性由其元素、属性支持文稿来详细展开。

表21 wait支持文稿

empty支持文稿如表22所示,empty的元素、属性由其元素、属性支持文稿来详细展开。

表22 empty支持文稿

sequence支持文稿如表23所示,sequence的元素、属性、子活动由其元素、属性、子活动的支持文稿来详细展开。

表23 sequence支持文稿

if/elseif/else活动的一致性描述包括if/elseif/else支持文稿和附表,分别如表24和表25所示,其中“condition”用来填写要执行相关活动(表21中特指if/elseif/else) 的条件布尔表达式(后同)。if/elseif/else的元素、属性、子活动由其元素、属性、子活动的支持文稿来详细展开。

表24 if/elseif/else支持文稿主表

表25 if/elseif/else支持文稿附表

while支持文稿如表26所示,while的元素、属性、子活动由其元素、属性、子活动的支持文稿来详细展开。

表26 while支持文稿

repeatUntil支持文稿如表27所示,repeatUntil的元素、属性、子活动由其元素、属性、子活动的支持文稿来详细展开。

表27 repeatUntil支持文稿

forEach支持文稿如表28所示,其中“parallel”栏是该活动中的分支是否并行执行,“startCounter”栏是forEach活动的开始计数,“finalCounter” 栏是forEach活动的结束计数,“completionCondition”栏是forEach活动的可终止数,“successfulBranchesOnly”栏是否所有范围都要计数。forEach的元素、属性、子活动、范围(Scope)由其元素、属性、子活动、范围的支持文稿来详细展开。

表28 forEach支持文稿

pick支持文稿如表29所示,其中“createInstance”栏是用来指出pick活动的是否创建实例,“fromParts”栏是pick活动的请求变量名称。pick的onMessage元素、属性、onAlarm由其onMessage、元素、属性、onAlarm的支持文稿来详细展开。

表29 pick支持文稿

link支持文稿如表30所示,link链接的活动由其链接的活动的支持文稿来详细展开。

表30 link支持文稿

flow支持文稿如表31所示,其中“Sub-acitity”栏用于标识flow调用的活动,flow的子活动由其子活动的支持文稿来详细展开。

表31 flow支持表格

2.9 接口支持文稿

接口(WSDL中的interface)支持文稿如表32所示,其中“extends”栏用来填入当前接口的直接父接口的名字,“styleDefault”栏是接口中操作的缺省类型定义。

表32 接口支持文稿

2.10 操作支持文稿

操作(BPEL中的operation)支持文稿如表33所示,其中“style”栏是操作的类型定义 ,“Pattern”栏是接口的调用模式,可以填写“in-only”、“in-out”、“Out-in”、“out-only”。“wsdlx:safe”栏是用来声明该操作是否不修改资源。

表33 操作支持文稿

3 基于BPEL一致性声明文稿的自动生成

为了提高从组织到分析BPEL的效率,并保证生成的ICS文稿的质量,我们设计并实现了基于BPEL服务组合ICS文稿自动生成系统。BPEL本身是一种形式化输入的可执行的算法语言,其可计算性和合理的算法复杂满足基于BPEL的服务组合一致性声明文稿的自动生成的必要条件。BPEL采用XML语言来描述,XML的自描述性在提供了BPEL定义的灵活性同时决定了其相关文档规模比较大,对其进行人工分析和生成ICS文稿工作量大,很难保证其质量和正确性,所以需要一种自动化的生成方法来实现基于BPEL的服务组合一致性声明文稿的自动生成。

基于BPEL一致性声明文稿自动生成系统如图2所示。BPEL采用XML来描述,其一致性声明文稿的生成与我们完成的基于DTD/Schema的一致性声明文稿[9,11]类似,主要由XML解析器来完成,也包括三部分:前端编译器,逻辑结构树和后端编译器组成[12-18]。

图2 ICS生成系统结构图

前段编译器是一个BPEL编译器,该编译器基于XML。解析的过程是根据BPEL/WSDL文档定义,实现流式文档结构化。首先对输入的BPEL/WSDL文档进行词法分析,识别出BPEL/WSDL文档中的有意义的token。然后进行语法分析,分析token之间关系,判断token之间关系的正确性。BPEL/WSDL采用XML描述,属于上下文无关文法,可转化为LL(K)文法,进行自定向下分析,生成语法树。最后进行语义分析,整体把握,产生逻辑结构树。为了快速提取BPEL/WSDL中的相关信息生成一致性文档,分析结果采用hash索引技术,以利于一致性声明系统信息提取。

逻辑结构树定义了的对象和方法,实现对树的节点信息进行的提取操作:1) process对象:是这棵逻辑结构数的顶层节点,是对整个BPEL文档进行操作的入口。2) 节点对象是文档中对象的映射,通过定级层次来反映了服务组合的结构,以及对象之间的继承关系。3) 文本节点:是元素、属性、消息、类型对象的子节点,是逻辑结构树的叶子节点。读取逻辑结构树的获取其名称、属性值,采用遍历算法可遍历/读取子节点指针,从而支实现层层遍历,获取一致性信息。

在基于BPEL服务组合一致性声明文稿生成中,首先访问逻辑结构树,获取process指针,取得指针的属性,然后采用广度遍历和深度遍历相结合的方式,获取子节点指针,查询子节点,层层遍历,构建生成一致性声明文稿的二叉树,提取这颗二叉树上的信息操作,生成本文提出基于BPEL的服务组合ICS文稿。在不同的条件下,基于BPEL的服务组合,可有不同实现,采用配置文件,在后端编译器中,设置相关控制信息于关键节点,可生成不同服务组合ICS文稿。测试的另一关键是测试用例,后端编译器为测试用例自动生成提供相关API,支持基于BPEL服务组合测试用例自动生成。

4 结 语

基于BPEL的一致性声明文稿是基于BPEL的服务组合系统一致性测试内容和构造基于BPEL的服务组合系统测试用例的主要依据,本文基于一致性需求,通过对BPEL文档结构分析,探讨并提出了基于BPEL的一致性声明文稿,文稿覆盖了基于BPEL规范的一致性测试项,文稿有利于基于BPEL规范的一致性测试的标准化和规范化。基于提出的文稿,我们设计实现了基于BPEL的一致性声明文稿生成系统,可自动化基于BPEL的一致性声明文稿生成。本文提出的文稿和自动生成系统已经成功应用于服务组合的测试中,以自动取款交易服务流程为例,输入自动取款交易服务流程的BPEL/WSDL,可自动生成相应一致性声明文稿,涵盖了该服务流程中定义的流程、合作伙伴链接和所有的变量、消息、接口、操作及其语法细节等,验证了所提文稿的可行性、有效性。同时,在文稿的设计研制过程中,对BPEL的语法特征和内容结构进行了系统的分析梳理,尝试了分析BPEL、解析BPEL的方法,为基于BPEL服务组合应用的提供了一种可行的分析存取模式。

[1] IBM.Business process execution language for Web Service, version 1.1.2003[S/OL].2003.http://www-106.ibm.com/developerworks/library/ws-bpel/.

[2] ITU-T Rec. X.291, OSI Conformance Testing Methodology and Framework for Protocol Recommendations for ITU-T Aplications-Implementation Conformance Statement [S].ITU-T,1995.

[3] ITU-T Rec. X.296--1995, Implementation Conformance Statement Requiremnt and Guidance on ICS and ICS Proforma [S].ITU-T,1995.

[4] ITU-T Rec. X.290-1995, OSI Conformance Testing Methodology and Framework for Protocol Recommendations for ITU-T Applications-General Concept[S].ITU-T,1995.

[5] ITU-T Rec. X.724-1996, Requirements and Guidelines for Implementation Conformance Statement Proformas Associated with OSI Management [S].ITU-T,1995.

[6] IETF RFC 2580 Conformance Statements for SMIv2[S].IETF,1999.

[7] ITU-T Rec. X.781-2001, Requirments and Guidelines for Implementation Conformance Statement Proformas Associated with CORBA-Based Systems [S].ITU-T,2001.

[8] ITU-T Rec.M.3031.Guidelines for Implementation Conformance Statement proformas for tML Schemas [S].ITU-T,2004.

[9] Dong Wenli,Meng Luoming.tML Schema Based ICS Proforma and Generation Method[J].Chinese Journal of Electronics,2005,14(4):681-685.

[10] 董文莉,孟洛明,邱雪松,等.基于文档类型定义的实现一致性声明文稿及生成方法[J].通信学报,2005(2):38-44.

[11] 翟小东.WSDL实现一致性声明文稿的设计与实现[D].北京:北京邮电大学,2009.

[12] 王龙.基于WSDL扩展的Web服务组合研究与实现[D].上海:复旦大学,2013.

[13] 高荣.基于Scrapy和casperjs的电子商务网站信息采集系统研究[J].数字技术与应用,2015(3):67-68.

[14] 汤瀑.物联网服务组合与验证的研究[D].上海:复旦大学,2013.

[15] 袁婷.RESTful Web服务的形式化建模与分析[D].上海:华东师范大学,2015.

[16] 罗程多.RESTful服务语义解析和标注功能的设计与实现[D].北京:北京邮电大学,2014.

[17] 刘鹏.BPEL语言的语义连接理论和验证技术的机器实现[D].上海:华东师范大学,2013.

[18] 孟若.基于AOP的Web服务演化方法[D].武汉:武汉工程大学,2015.

RESEARCH ON THE DESIGN AND IMPLEMENTATION OF THE ICS PROFORMA BASED ON BPEL

Dong Wenli Zhao Yi

(NorthChinaInstituteofComputingTechnology,Beijing100083,China)

Service composition based on BPEL is the development direction of Web services. BPEL-based ICS is the main basis of service composition system consistency test content based on BPEL and the construction of test case of BPEL-based service composition system. Based on the theory of conformance testing and BPEL/WSDL specification analysis, this paper studies the structural relationship of each component based on BPEL/WSDL and presents ICS proforma based on BPEL. The proforma contains 10 sub-proformas: process support proforma, partnerLink support proforma, service composite support proforma, variables support proforma, correlationSets support proforma, message support proforma, handler support proforma, activity support proforma, interface support proforma, operation support proforma. This paper designs and implements a proforma automatic generation system for automatically generating ICS proforma based on BPEL.

Service composition BPEL Web service description language ICS Logical structure tree

2016-06-24。国家自然科学基金面上项目(61071077);国家科技支撑项目(2013BAK06B03)。董文莉,高工,主研领域:服务架构,软件测评,计算机仿真,大数据。赵懿,工程师。

TP391

A

10.3969/j.issn.1000-386x.2017.05.002

逻辑结构树

猜你喜欢
文稿一致性声明
文稿规范
文稿规范
本刊声明
本刊声明
商用车CCC认证一致性控制计划应用
注重教、学、评一致性 提高一轮复习效率
对历史课堂教、学、评一体化(一致性)的几点探讨
本刊声明
本刊声明
基于事件触发的多智能体输入饱和一致性控制