董文莉 趙 懿
(華北計(jì)算技術(shù)研究所 北京 100083)
基于BPEL的一致性聲明文稿設(shè)計(jì)實(shí)現(xiàn)的研究
董文莉 趙 懿
(華北計(jì)算技術(shù)研究所 北京 100083)
基于BPEL(Business Process Execution Language)的服務(wù)組合是Web服務(wù)的發(fā)展方向。基于BPEL的一致性聲明文稿是基于BPEL的服務(wù)組合系統(tǒng)一致性測(cè)試內(nèi)容和構(gòu)造基于BPEL的服務(wù)組合系統(tǒng)測(cè)試用例的主要依據(jù)。基于一致性測(cè)試?yán)碚摵虰PEL/WSDL規(guī)范分析,研究基于BPEL/WSDL的各成分結(jié)構(gòu)關(guān)系,提出基于BPEL的一致性聲明文稿。該文稿包含10類(lèi)子文稿:流程支持文稿、合作伙伴鏈接支持文稿、服務(wù)組件支持文稿、變量支持文稿、相關(guān)集支持文稿、消息支持文稿、各種處理支持文稿、各種活動(dòng)支持文稿、接口支持文稿、操作支持文稿。設(shè)計(jì)實(shí)現(xiàn)了文稿自動(dòng)生成系統(tǒng),用于自動(dòng)生成基于BPEL的一致性聲明文稿。
服務(wù)組合 業(yè)務(wù)流程執(zhí)行語(yǔ)言 Web服務(wù)描述語(yǔ)言 實(shí)現(xiàn)一致性聲明
基于BPEL[1]的一致性文稿通過(guò)提取BPEL規(guī)范中的各項(xiàng)測(cè)試需求產(chǎn)生,是基于BPEL服務(wù)組合較為標(biāo)準(zhǔn)、規(guī)范、完備的測(cè)試需求描述。基于BPEL的一致性文稿是驗(yàn)證基于BPEL的服務(wù)組合系統(tǒng)符合既定BPEL規(guī)范程度的基礎(chǔ),是形成基于BPEL的服務(wù)組合系統(tǒng)一致性測(cè)試內(nèi)容和構(gòu)造基于BPEL的服務(wù)組合系統(tǒng)測(cè)試用例的主要依據(jù),是提高基于BPEL的服務(wù)組合系統(tǒng)一致性測(cè)試測(cè)試質(zhì)量和基于BPEL的服務(wù)組合系統(tǒng)可信度的關(guān)鍵。
ITU-T提出了一致性測(cè)試方法和框架[2-4],發(fā)布了一致性聲明文稿需求和指南?;贑MIP[5]、SNMP[6]、CORBA[7]和XML[8-10],ITU-T/IETF都定義了相應(yīng)的ICS文稿。目前的Web服務(wù)一致性測(cè)試研究中,文獻(xiàn)[11]研究分析了單個(gè)服務(wù)的一致性聲明文稿,然而Web服務(wù)的本質(zhì)是模塊化動(dòng)態(tài)組合的組件,對(duì)服務(wù)組合的研究是Web服務(wù)的一個(gè)重要方面和發(fā)展趨勢(shì),對(duì)單個(gè)服務(wù)測(cè)試的相關(guān)研究無(wú)法滿足Web服務(wù)應(yīng)用發(fā)展的需要。同時(shí)Web服務(wù)組合的分布、動(dòng)態(tài)(綁定、組合等)、異構(gòu)、松耦合、規(guī)范性、開(kāi)放性、高度集成等特點(diǎn),決定了基于BPEL服務(wù)組合的靈活性、動(dòng)態(tài)性、規(guī)范性,及其一致性聲明文稿設(shè)計(jì)的難度和復(fù)雜性。
本文基于ITU-T一致性測(cè)試和一致性聲明文稿的相關(guān)定義和說(shuō)明,通過(guò)對(duì)基于BPEL規(guī)范的服務(wù)組合的分析,在對(duì)BPEL及其相關(guān)WSDL(Web Services Description Language)[12]文法描述進(jìn)行研究的基礎(chǔ)上,提出了基于BPEL服務(wù)組合的一致性聲明文稿,并設(shè)計(jì)實(shí)現(xiàn)了相關(guān)原型系統(tǒng)進(jìn)行了實(shí)驗(yàn)驗(yàn)證。
BPEL及其引用(import)WSDL文檔定義了服務(wù)組合實(shí)例的詞匯表及其結(jié)構(gòu),使用BPEL/WSDL可以為基于BPEL的服務(wù)組合進(jìn)行信息建模,從而為基于BPEL的服務(wù)組合測(cè)試提供了語(yǔ)法模式。BPEL/WSDL采用層層繼承/細(xì)化的方式來(lái)構(gòu)造。BPEL/WSDL列出了可用于服務(wù)組合的合作伙伴鏈接、各種處理、各種活動(dòng)、消息、變量、相關(guān)集、接口、操作、元素、屬性、類(lèi)型、唯一性的定義及其相互關(guān)系?;贐PEL的服務(wù)組合的執(zhí)行從流程開(kāi)始,采用活動(dòng)來(lái)描述服務(wù)組件的調(diào)用關(guān)系,活動(dòng)的內(nèi)容通過(guò)活動(dòng)的子活動(dòng)/事件、活動(dòng)的調(diào)用服務(wù)、服務(wù)中的操作、操作輸入輸出消息層層展開(kāi),同時(shí)采用相關(guān)集correlationSets定義操作之間的消息調(diào)用關(guān)系,采用變量variables定義操作參數(shù)變量,采用元素、屬性、類(lèi)型、唯一性細(xì)化變量variables的定義,形成多層繼承關(guān)系。忽略與基于BPEL的服務(wù)組合一致性測(cè)試文稿無(wú)關(guān)的結(jié)構(gòu),如documentation,BPEL結(jié)構(gòu)(包含引用Web服務(wù)的WSDL)之間的包含關(guān)系在圖1中給出?;贐PEL的服務(wù)組合接口的ICS文稿(簡(jiǎn)稱為BPICS)必須描述出圖1中的關(guān)系。
一致性聲明的目的就是使每一個(gè)一致性測(cè)試需求成為獨(dú)立問(wèn)題,從而可以由被測(cè)用戶根據(jù)被測(cè)系統(tǒng)的實(shí)現(xiàn)情況作出清晰、明確的回答,所以基于BPEL服務(wù)組合一致性聲明文稿要盡可能的表達(dá)出細(xì)節(jié)的一致性需求,為此我們將服務(wù)組合層層展開(kāi),形成一棵繼承樹(shù)。
圖1 基于BPEL.的各成分結(jié)構(gòu)關(guān)系圖
基于BPEL的ICS文稿包含一系列表格,表格中的通用項(xiàng)目主要有:索引/子索引、支持/不支持、補(bǔ)充信息。其中相對(duì)次序采用“索引/子索引”來(lái)表示,“索引/子索引”也包含了業(yè)務(wù)流程中各要素的相互關(guān)系。在“支持”項(xiàng)中,采用“Y”來(lái)表示該項(xiàng)內(nèi)容被實(shí)現(xiàn),“N”表示該項(xiàng)內(nèi)容未實(shí)現(xiàn),“-”表示該項(xiàng)內(nèi)容不適用于本業(yè)務(wù)。補(bǔ)充信息又稱為額外信息,用來(lái)提供一些無(wú)法表述于其他項(xiàng)目同時(shí)對(duì)一致性測(cè)試比較重要的額內(nèi)容。在填充信息時(shí),用“*”表示在生成一致性聲明文稿時(shí)填寫(xiě)的項(xiàng)目,用“○”表示被測(cè)試的用戶聲明的項(xiàng)目,“△”表示測(cè)試者填寫(xiě)的項(xiàng)目。
基于和一致性測(cè)試?yán)碚?,分析BPEL語(yǔ)法定義,我們提出的BPICS文稿主要包括10類(lèi)子文稿:流程支持文稿、合作伙伴鏈接支持文稿、服務(wù)組件支持文稿、變量支持文稿、相關(guān)集支持文稿、消息支持文稿、各種處理支持文稿、各種活動(dòng)支持文稿、接口支持文稿、操作支持文稿。BPEL和WSDL基于XML Schema來(lái)描述,BPEL和WSDL的XML Schema部分的一致性文稿(包括元素支持文稿、屬性支持文稿、類(lèi)型支持文稿、唯一性支持文稿、可替換類(lèi)型支持文稿和可替換元素支持文稿)我們已經(jīng)完成標(biāo)準(zhǔn)制定,參見(jiàn)ITU-T M.3031定義[8-9],本文不再贅述。
2.1 流程支持文稿
基于BPEL的服務(wù)組合(process)的一致性測(cè)試是從流程開(kāi)始的,服務(wù)組合由活動(dòng)組成,活動(dòng)一致性信息用服務(wù)組件支持文稿進(jìn)行描述?;谝恢滦詼y(cè)試需求和流程聲明,服務(wù)組件支持如表1所示。其中“Identifier”欄標(biāo)識(shí)文稿描述對(duì)象名字,本文稿中是流程的名字,后文中的“Identifier”欄有類(lèi)似含義,不再贅述。
表1 流程支持文稿
2.2 合作伙伴鏈接支持文稿
我們采用合作伙伴鏈接partnerLink來(lái)定義服務(wù)組合和外部定義服務(wù)(外部WSDL)的關(guān)聯(lián)關(guān)系,其中myRole/parternerRole用于定義服務(wù)組合/外部服務(wù)的調(diào)用關(guān)系,“myRole”欄用于標(biāo)識(shí)服務(wù)組合角色,“parternerRole”欄用于標(biāo)識(shí)調(diào)用服務(wù)角色。portType用于指出外部服務(wù)類(lèi)型。suppressJoinFailure用于定義是否抑制服務(wù)組合中的活動(dòng)的 joinFailure 故障(有兩個(gè)選項(xiàng)可填:y/n),exitOnStandardFault用于定義標(biāo)準(zhǔn)故障時(shí)是否退出(有兩個(gè)選項(xiàng)可填:y/n),合作伙伴鏈接支持文稿如表2所示。
表2 合作伙伴鏈接支持文稿
2.3 服務(wù)組件支持文稿
服務(wù)組件支持文稿從屬于流程/服務(wù)組合持文稿,用來(lái)標(biāo)識(shí)流程的不同服務(wù)組件。服務(wù)組件支持文稿如表3所示,其中“Category”欄有兩個(gè)選項(xiàng)可填:“activity”、“handler”。
表3 服務(wù)組件支持文稿
2.4 變量支持文稿
變量支持文稿用于描述BPEL中的變量(variable)一致化信息,變量支持文稿如表4所示,其中 “VarType”欄是變量的類(lèi)型,“VarType-Name” 欄是變量的類(lèi)型名,“From-spec”欄是變量的初始定義。
表4 變量支持文稿
2.5 相關(guān)集支持文稿
相關(guān)集支持文稿用于描述BPEL中的相關(guān)集(correlationSets)一致化信息,相關(guān)集支持文稿如表5所示,其中“Properties”欄是相關(guān)聯(lián)部分,“Initiate”欄是是否初始化該相關(guān)集,相關(guān)集的“property”和“propertyAlias” 的具體信息由其“property”和“propertyAlias”通過(guò)消息 Property支持文稿、消息propertyAlias 支持文稿來(lái)詳細(xì)展開(kāi)。
表5 相關(guān)集支持文稿
2.6 消息支持文稿
BPEL采用屬性/屬性別名來(lái)實(shí)現(xiàn)不同消息及其部分(part)的共享,消息支持文稿共由三個(gè)文稿組成:消息message支持文稿、消息Property支持文稿和消息propertyAlias支持文稿。
消息message支持文稿用于描述BPEL中的消息message一致化信息,由主表和附表組成,其主表如表6所示,其中“type”欄用來(lái)標(biāo)識(shí)消息類(lèi)型,附表如表7所示。
表6 消息message支持文稿主表
表7 消息message支持文稿附表
消息Property支持文稿用于描述BPEL中的消息Property一致化信息,消息Property支持文稿如表8所示,其中“propertyType”欄是Property的類(lèi)型,“propertyType-Name” 欄是Property的類(lèi)型名。
表8 消息Property支持文稿
消息propertyAlias支持文稿用于描述BPEL中的消息propertyAlias一致化信息,消息propertyAlias支持文稿如表9所示,其中“propertyName”欄是Property的名字,“Type” 欄是propertyAlias的類(lèi)型,“Type-Name”欄是propertyAlias的類(lèi)型名,“Query”欄是對(duì)消息查詢標(biāo)識(shí)以得到一個(gè)字段。
表9 消息propertyAlias支持文稿
2.7 各種處理支持文稿
各種處理支持文稿是對(duì)BPEL中定義的所有處理的y一致性信息的描述,它包括“范圍支持文稿”、“補(bǔ)償處理支持子表”、“錯(cuò)誤處理支持子表”、“事件處理支持子表”、“終止處理支持子表”和“消息事件處理文稿”范圍支持文稿用于定義BPEL中的scope一致化信息,范圍支持文稿如表10所示,Isolated用于定義隔離性(有兩個(gè)選項(xiàng)可填:y/n),exitOnStandardFault定義同2.2節(jié),messageExchange用于定義接收和回復(fù)的內(nèi)部關(guān)聯(lián),即消息交互。
表10 范圍支持文稿
補(bǔ)償(BPEL中的Compensation Handlers)處理支持文稿如表11所示。
表11 補(bǔ)償處理支持文稿
錯(cuò)誤(BPEL中的Fault Handlers)處理支持文稿如表12所示,其中“Variable”欄是錯(cuò)誤數(shù)據(jù)元素的標(biāo)識(shí),“VarType”欄是錯(cuò)誤變量的類(lèi)型,“VarType-Name” 欄是錯(cuò)誤變量的類(lèi)型名。
表12 錯(cuò)誤處理支持文稿
事件(參見(jiàn)BPEL的event handler定義)處理支持文稿如表13所示,onMessage用于指出相關(guān)變量屬性的可選類(lèi)型引起的活動(dòng),事件處理的消息事件、相關(guān)集、活動(dòng)由其消息事件、相關(guān)集、活動(dòng)支持文稿來(lái)詳細(xì)展開(kāi)。
表13 事件處理支持文稿
終止(參見(jiàn)BPEL的Termination Handlers)處理支持文稿如表14所示。
表14 終止處理支持文稿
消息事件處理文稿
消息事件(onMessage)支持文稿如表15所示,其中“partnerLink”欄是要處理事件的合作伙伴連接名,“portType”欄是要處理事件的服務(wù)名。“operation”欄是要處理事件操作名。“variable”欄是要處理事件中操作的輸入變量名。“messageExchange”欄是消息活動(dòng)關(guān)聯(lián)的元素能夠接收的消息名。消息事件的關(guān)聯(lián)集、子活動(dòng)由其關(guān)聯(lián)集、子活動(dòng)的支持文稿來(lái)詳細(xì)展開(kāi)。
表15 消息事件支持文稿
onAlarm支持文稿如表16所示,其中,“duration / deadline”欄是持續(xù)時(shí)間或者等待時(shí)間點(diǎn),“exprType”欄是表達(dá)式類(lèi)型,有兩種,分別是“duration-expr”和“deadline-expr”,onAlarm的子活動(dòng)由其子活動(dòng)的支持文稿來(lái)詳細(xì)展開(kāi)。
表16 onAlarm支持表格
2.8 各種活動(dòng)支持文稿
各種活動(dòng)支持文稿包括基本活動(dòng)文稿(Receive支持文稿、Reply支持文稿、Invoke支持文稿、Assign支持文稿、Wait支持文稿、Empty支持文稿)和結(jié)構(gòu)化活動(dòng)文稿(Sequence支持文稿、Switch支持文稿、While支持文稿、Pick支持文稿、Flow支持文稿、Link支持文稿)。
receive支持文稿如表17所示,其中 “activityType”是該活動(dòng)的類(lèi)型名,即“receive”, “portType”欄是要receive要接收的操作的服務(wù)名,“operation”欄是要接收的操作名,“Variable/fromPart”欄是要receive中操作的輸入變量,“messageExchange”欄是receive關(guān)聯(lián)的元素能夠接收消息,“createInstance”欄是否要?jiǎng)?chuàng)建實(shí)例,后文中相關(guān)欄定義類(lèi)似,不再贅述。
表17 receive支持文稿
reply支持文稿如表18所示,其中variable/ toParts”欄是要reply中操作的輸出變量名,“faultName”欄是reply活動(dòng)的錯(cuò)誤處理過(guò)程的名字。
invoke支持文稿如表19所示,其中“inputVariable/ toParts”欄是要invoke中操作的輸入變量名,“outputVariable/ fromParts”欄是要invoke中操作的輸出變量名。
Assign支持文稿如表20所示,其中,“from-spec”欄是源變量,“to-spec”欄是賦值目標(biāo)變量,“keepSrcElementName”欄標(biāo)識(shí)是否修改賦值目標(biāo)元素名稱。
表18 reply支持文稿
表19 invoke支持文稿
表20 assign支持文稿
Wait支持文稿如表21所示,其中“duration/deadline”欄是持續(xù)時(shí)間或者等待時(shí)間點(diǎn),exprType”欄是表達(dá)式類(lèi)型,有兩種,分別是“duration-expr”和“deadline-expr”。wait的元素、屬性由其元素、屬性支持文稿來(lái)詳細(xì)展開(kāi)。
表21 wait支持文稿
empty支持文稿如表22所示,empty的元素、屬性由其元素、屬性支持文稿來(lái)詳細(xì)展開(kāi)。
表22 empty支持文稿
sequence支持文稿如表23所示,sequence的元素、屬性、子活動(dòng)由其元素、屬性、子活動(dòng)的支持文稿來(lái)詳細(xì)展開(kāi)。
表23 sequence支持文稿
if/elseif/else活動(dòng)的一致性描述包括if/elseif/else支持文稿和附表,分別如表24和表25所示,其中“condition”用來(lái)填寫(xiě)要執(zhí)行相關(guān)活動(dòng)(表21中特指if/elseif/else) 的條件布爾表達(dá)式(后同)。if/elseif/else的元素、屬性、子活動(dòng)由其元素、屬性、子活動(dòng)的支持文稿來(lái)詳細(xì)展開(kāi)。
表24 if/elseif/else支持文稿主表
表25 if/elseif/else支持文稿附表
while支持文稿如表26所示,while的元素、屬性、子活動(dòng)由其元素、屬性、子活動(dòng)的支持文稿來(lái)詳細(xì)展開(kāi)。
表26 while支持文稿
repeatUntil支持文稿如表27所示,repeatUntil的元素、屬性、子活動(dòng)由其元素、屬性、子活動(dòng)的支持文稿來(lái)詳細(xì)展開(kāi)。
表27 repeatUntil支持文稿
forEach支持文稿如表28所示,其中“parallel”欄是該活動(dòng)中的分支是否并行執(zhí)行,“startCounter”欄是forEach活動(dòng)的開(kāi)始計(jì)數(shù),“finalCounter” 欄是forEach活動(dòng)的結(jié)束計(jì)數(shù),“completionCondition”欄是forEach活動(dòng)的可終止數(shù),“successfulBranchesOnly”欄是否所有范圍都要計(jì)數(shù)。forEach的元素、屬性、子活動(dòng)、范圍(Scope)由其元素、屬性、子活動(dòng)、范圍的支持文稿來(lái)詳細(xì)展開(kāi)。
表28 forEach支持文稿
pick支持文稿如表29所示,其中“createInstance”欄是用來(lái)指出pick活動(dòng)的是否創(chuàng)建實(shí)例,“fromParts”欄是pick活動(dòng)的請(qǐng)求變量名稱。pick的onMessage元素、屬性、onAlarm由其onMessage、元素、屬性、onAlarm的支持文稿來(lái)詳細(xì)展開(kāi)。
表29 pick支持文稿
link支持文稿如表30所示,link鏈接的活動(dòng)由其鏈接的活動(dòng)的支持文稿來(lái)詳細(xì)展開(kāi)。
表30 link支持文稿
flow支持文稿如表31所示,其中“Sub-acitity”欄用于標(biāo)識(shí)flow調(diào)用的活動(dòng),flow的子活動(dòng)由其子活動(dòng)的支持文稿來(lái)詳細(xì)展開(kāi)。
表31 flow支持表格
2.9 接口支持文稿
接口(WSDL中的interface)支持文稿如表32所示,其中“extends”欄用來(lái)填入當(dāng)前接口的直接父接口的名字,“styleDefault”欄是接口中操作的缺省類(lèi)型定義。
表32 接口支持文稿
2.10 操作支持文稿
操作(BPEL中的operation)支持文稿如表33所示,其中“style”欄是操作的類(lèi)型定義 ,“Pattern”欄是接口的調(diào)用模式,可以填寫(xiě)“in-only”、“in-out”、“Out-in”、“out-only”?!皐sdlx:safe”欄是用來(lái)聲明該操作是否不修改資源。
表33 操作支持文稿
為了提高從組織到分析BPEL的效率,并保證生成的ICS文稿的質(zhì)量,我們?cè)O(shè)計(jì)并實(shí)現(xiàn)了基于BPEL服務(wù)組合ICS文稿自動(dòng)生成系統(tǒng)。BPEL本身是一種形式化輸入的可執(zhí)行的算法語(yǔ)言,其可計(jì)算性和合理的算法復(fù)雜滿足基于BPEL的服務(wù)組合一致性聲明文稿的自動(dòng)生成的必要條件。BPEL采用XML語(yǔ)言來(lái)描述,XML的自描述性在提供了BPEL定義的靈活性同時(shí)決定了其相關(guān)文檔規(guī)模比較大,對(duì)其進(jìn)行人工分析和生成ICS文稿工作量大,很難保證其質(zhì)量和正確性,所以需要一種自動(dòng)化的生成方法來(lái)實(shí)現(xiàn)基于BPEL的服務(wù)組合一致性聲明文稿的自動(dòng)生成。
基于BPEL一致性聲明文稿自動(dòng)生成系統(tǒng)如圖2所示。BPEL采用XML來(lái)描述,其一致性聲明文稿的生成與我們完成的基于DTD/Schema的一致性聲明文稿[9,11]類(lèi)似,主要由XML解析器來(lái)完成,也包括三部分:前端編譯器,邏輯結(jié)構(gòu)樹(shù)和后端編譯器組成[12-18]。
圖2 ICS生成系統(tǒng)結(jié)構(gòu)圖
前段編譯器是一個(gè)BPEL編譯器,該編譯器基于XML。解析的過(guò)程是根據(jù)BPEL/WSDL文檔定義,實(shí)現(xiàn)流式文檔結(jié)構(gòu)化。首先對(duì)輸入的BPEL/WSDL文檔進(jìn)行詞法分析,識(shí)別出BPEL/WSDL文檔中的有意義的token。然后進(jìn)行語(yǔ)法分析,分析token之間關(guān)系,判斷token之間關(guān)系的正確性。BPEL/WSDL采用XML描述,屬于上下文無(wú)關(guān)文法,可轉(zhuǎn)化為L(zhǎng)L(K)文法,進(jìn)行自定向下分析,生成語(yǔ)法樹(shù)。最后進(jìn)行語(yǔ)義分析,整體把握,產(chǎn)生邏輯結(jié)構(gòu)樹(shù)。為了快速提取BPEL/WSDL中的相關(guān)信息生成一致性文檔,分析結(jié)果采用hash索引技術(shù),以利于一致性聲明系統(tǒng)信息提取。
邏輯結(jié)構(gòu)樹(shù)定義了的對(duì)象和方法,實(shí)現(xiàn)對(duì)樹(shù)的節(jié)點(diǎn)信息進(jìn)行的提取操作:1) process對(duì)象:是這棵邏輯結(jié)構(gòu)數(shù)的頂層節(jié)點(diǎn),是對(duì)整個(gè)BPEL文檔進(jìn)行操作的入口。2) 節(jié)點(diǎn)對(duì)象是文檔中對(duì)象的映射,通過(guò)定級(jí)層次來(lái)反映了服務(wù)組合的結(jié)構(gòu),以及對(duì)象之間的繼承關(guān)系。3) 文本節(jié)點(diǎn):是元素、屬性、消息、類(lèi)型對(duì)象的子節(jié)點(diǎn),是邏輯結(jié)構(gòu)樹(shù)的葉子節(jié)點(diǎn)。讀取邏輯結(jié)構(gòu)樹(shù)的獲取其名稱、屬性值,采用遍歷算法可遍歷/讀取子節(jié)點(diǎn)指針,從而支實(shí)現(xiàn)層層遍歷,獲取一致性信息。
在基于BPEL服務(wù)組合一致性聲明文稿生成中,首先訪問(wèn)邏輯結(jié)構(gòu)樹(shù),獲取process指針,取得指針的屬性,然后采用廣度遍歷和深度遍歷相結(jié)合的方式,獲取子節(jié)點(diǎn)指針,查詢子節(jié)點(diǎn),層層遍歷,構(gòu)建生成一致性聲明文稿的二叉樹(shù),提取這顆二叉樹(shù)上的信息操作,生成本文提出基于BPEL的服務(wù)組合ICS文稿。在不同的條件下,基于BPEL的服務(wù)組合,可有不同實(shí)現(xiàn),采用配置文件,在后端編譯器中,設(shè)置相關(guān)控制信息于關(guān)鍵節(jié)點(diǎn),可生成不同服務(wù)組合ICS文稿。測(cè)試的另一關(guān)鍵是測(cè)試用例,后端編譯器為測(cè)試用例自動(dòng)生成提供相關(guān)API,支持基于BPEL服務(wù)組合測(cè)試用例自動(dòng)生成。
基于BPEL的一致性聲明文稿是基于BPEL的服務(wù)組合系統(tǒng)一致性測(cè)試內(nèi)容和構(gòu)造基于BPEL的服務(wù)組合系統(tǒng)測(cè)試用例的主要依據(jù),本文基于一致性需求,通過(guò)對(duì)BPEL文檔結(jié)構(gòu)分析,探討并提出了基于BPEL的一致性聲明文稿,文稿覆蓋了基于BPEL規(guī)范的一致性測(cè)試項(xiàng),文稿有利于基于BPEL規(guī)范的一致性測(cè)試的標(biāo)準(zhǔn)化和規(guī)范化?;谔岢龅奈母澹覀?cè)O(shè)計(jì)實(shí)現(xiàn)了基于BPEL的一致性聲明文稿生成系統(tǒng),可自動(dòng)化基于BPEL的一致性聲明文稿生成。本文提出的文稿和自動(dòng)生成系統(tǒng)已經(jīng)成功應(yīng)用于服務(wù)組合的測(cè)試中,以自動(dòng)取款交易服務(wù)流程為例,輸入自動(dòng)取款交易服務(wù)流程的BPEL/WSDL,可自動(dòng)生成相應(yīng)一致性聲明文稿,涵蓋了該服務(wù)流程中定義的流程、合作伙伴鏈接和所有的變量、消息、接口、操作及其語(yǔ)法細(xì)節(jié)等,驗(yàn)證了所提文稿的可行性、有效性。同時(shí),在文稿的設(shè)計(jì)研制過(guò)程中,對(duì)BPEL的語(yǔ)法特征和內(nèi)容結(jié)構(gòu)進(jìn)行了系統(tǒng)的分析梳理,嘗試了分析BPEL、解析BPEL的方法,為基于BPEL服務(wù)組合應(yīng)用的提供了一種可行的分析存取模式。
[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] 董文莉,孟洛明,邱雪松,等.基于文檔類(lèi)型定義的實(shí)現(xiàn)一致性聲明文稿及生成方法[J].通信學(xué)報(bào),2005(2):38-44.
[11] 翟小東.WSDL實(shí)現(xiàn)一致性聲明文稿的設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2009.
[12] 王龍.基于WSDL擴(kuò)展的Web服務(wù)組合研究與實(shí)現(xiàn)[D].上海:復(fù)旦大學(xué),2013.
[13] 高榮.基于Scrapy和casperjs的電子商務(wù)網(wǎng)站信息采集系統(tǒng)研究[J].數(shù)字技術(shù)與應(yīng)用,2015(3):67-68.
[14] 湯瀑.物聯(lián)網(wǎng)服務(wù)組合與驗(yàn)證的研究[D].上海:復(fù)旦大學(xué),2013.
[15] 袁婷.RESTful Web服務(wù)的形式化建模與分析[D].上海:華東師范大學(xué),2015.
[16] 羅程多.RESTful服務(wù)語(yǔ)義解析和標(biāo)注功能的設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2014.
[17] 劉鵬.BPEL語(yǔ)言的語(yǔ)義連接理論和驗(yàn)證技術(shù)的機(jī)器實(shí)現(xiàn)[D].上海:華東師范大學(xué),2013.
[18] 孟若.基于AOP的Web服務(wù)演化方法[D].武漢:武漢工程大學(xué),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。國(guó)家自然科學(xué)基金面上項(xiàng)目(61071077);國(guó)家科技支撐項(xiàng)目(2013BAK06B03)。董文莉,高工,主研領(lǐng)域:服務(wù)架構(gòu),軟件測(cè)評(píng),計(jì)算機(jī)仿真,大數(shù)據(jù)。趙懿,工程師。
TP391
A
10.3969/j.issn.1000-386x.2017.05.002
邏輯結(jié)構(gòu)樹(shù)