摘 要: 針對(duì)如何更高效和準(zhǔn)確地將已存在的Web服務(wù)集成到業(yè)務(wù)流程中,,提出了服務(wù)構(gòu)件模型,。該模型以Web服務(wù)為業(yè)務(wù)功能實(shí)現(xiàn)的基礎(chǔ),用BPMN建模用戶需求,,輸出為可執(zhí)行的BPEL模型,。該服務(wù)構(gòu)件模型內(nèi)部對(duì)原子服務(wù)進(jìn)行了重新定義,便于服務(wù)的查找,;而且加入了服務(wù)的QoS特征,,便于服務(wù)的選擇。
關(guān)鍵詞: Web服務(wù),;業(yè)務(wù)流程管理,;BPMN;BPEL
企業(yè)應(yīng)用的復(fù)雜度越來(lái)越大,,關(guān)鍵性遺留系統(tǒng)也越來(lái)越多,,為了解決因遺留系統(tǒng)而出現(xiàn)的信息孤島、企業(yè)間的業(yè)務(wù)交互以及數(shù)據(jù)共享等問(wèn)題,,面向服務(wù)架構(gòu)SOA(Service-Oriented Architecture),、業(yè)務(wù)流程管理BPM(Business Process Management)以及Web服務(wù)等技術(shù)得到了很大的發(fā)展,并且相關(guān)的實(shí)現(xiàn)技術(shù)也日益成熟[1],。
Web服務(wù)是SOA的主要實(shí)現(xiàn)技術(shù),,它提供了標(biāo)準(zhǔn)的訪問(wèn)接口以便在服務(wù)調(diào)用及組合方面變得更加方便[2]。目前,,存在大量可用的Web服務(wù),,包括企業(yè)內(nèi)部的、商用的以及開源的,,它們各自有優(yōu)勢(shì),,怎樣選擇一個(gè)能夠滿足業(yè)務(wù)需求以及非功能需求的服務(wù)便是一個(gè)比較難的問(wèn)題。現(xiàn)在的應(yīng)用系統(tǒng)在業(yè)務(wù)上變得越來(lái)越復(fù)雜,,這些業(yè)務(wù)不只是針對(duì)于本系統(tǒng),,還可能與其他系統(tǒng),特別是與其他公司的系統(tǒng)進(jìn)行交互,。由此,,針對(duì)于每一項(xiàng)業(yè)務(wù)過(guò)程,都需要有一個(gè)標(biāo)準(zhǔn)的描述方式,這樣的流程描述不只是針對(duì)于業(yè)務(wù)分析人員,,也要便于開發(fā)人員能夠在程序中直接應(yīng)用,。業(yè)務(wù)流程管理很大的用途或特點(diǎn)在于對(duì)Web服務(wù)的編排[3],根據(jù)需求,,按照某種邏輯或者規(guī)則將存在的Web服務(wù)組裝成一個(gè)可執(zhí)行的流程,,該流程可以通過(guò)Web服務(wù)的接口標(biāo)準(zhǔn)暴露成為流程服務(wù)供其他應(yīng)用調(diào)用,也可以作為一個(gè)流程的子流程,。目前,,已存在很多的業(yè)務(wù)流程規(guī)范,主要分成兩個(gè)類別,,一個(gè)是基于可視化圖形的,,如BPMN、BPML,、XPDL等,;另一個(gè)是基于塊結(jié)構(gòu)的語(yǔ)言,如WS-BPEL,,可以直接被流程引擎執(zhí)行,。經(jīng)過(guò)實(shí)際的應(yīng)用和驗(yàn)證,WS-BPEL已經(jīng)成為事實(shí)上業(yè)務(wù)流程運(yùn)行時(shí)描述語(yǔ)言的標(biāo)準(zhǔn),,是專門為Web服務(wù)編排和組合描述而定制的一種規(guī)范標(biāo)準(zhǔn)[4],。目前,很多執(zhí)行引擎都支持BPEL,,并且也存在相關(guān)的圖形編輯工具以減少BPEL建模的復(fù)雜度[5],。然而,各個(gè)建模工具實(shí)現(xiàn)方式各不相同,,對(duì)BPEL各個(gè)元素的圖形表示也沒(méi)有一個(gè)統(tǒng)一的標(biāo)準(zhǔn)定義,,再則,BPEL屬于塊結(jié)構(gòu)語(yǔ)言,,對(duì)于業(yè)務(wù)流程的分析與設(shè)計(jì)人員顯得比較抽象和晦澀,?;谶@樣的問(wèn)題以及為了提高業(yè)務(wù)人員對(duì)業(yè)務(wù)流程的建模效率,,業(yè)務(wù)流程建模符號(hào)BPMN(Business Process Modeling Notation)被正式提出為標(biāo)準(zhǔn)[6]。它定義了各個(gè)元素的圖形表示,,便于業(yè)務(wù)人員更好地理解,。
基于以上提出的在業(yè)務(wù)和功能上的需求以及可用的建模方法和工具,本文提出了一種服務(wù)構(gòu)件模型,,它通過(guò)BPMN來(lái)描述業(yè)務(wù)需求,,然后從大量的Web服務(wù)中選擇滿足要求的服務(wù)進(jìn)行綁定,最后生成可執(zhí)行的BPEL模型以及流程服務(wù)。主要是設(shè)計(jì)一種完整的流程模型來(lái)描述用戶調(diào)用Web服務(wù)的需求,、服務(wù)的匹配和綁定以及可執(zhí)行流程的生成,。用戶只需要將BPMN文件提交到模型中,處理后便可以自動(dòng)地部署對(duì)應(yīng)的可執(zhí)行流程服務(wù),,然后在執(zhí)行引擎中運(yùn)行,。
本文提出的服務(wù)構(gòu)建模型是以Web服務(wù)為基礎(chǔ)的,這些Web服務(wù)可能來(lái)自不同的提供者,,可能是本公司的系統(tǒng),,也可能是其他合作者提供的服務(wù),比如對(duì)于電子商務(wù)網(wǎng)站而言,,一些業(yè)務(wù)流程中的服務(wù)就會(huì)來(lái)自于其他公司,,如第三方支付服務(wù)、物流服務(wù)等,。對(duì)于要調(diào)用這些Web服務(wù)的客戶端,,必須先通過(guò)BPMN進(jìn)行需求建模,BPMN模型以圖形符號(hào)的形式描述了客戶端的功能需求,。隨后,,該BPMN會(huì)被切分成原子服務(wù),該原子服務(wù)的格式是在WSDL基礎(chǔ)上重新定義的,,與服務(wù)庫(kù)里的服務(wù)格式相同,;服務(wù)庫(kù)里的服務(wù)是通過(guò)在線抓取和人工錄入的形式完成的,這些服務(wù)都是以WSDL進(jìn)行描述,,通過(guò)與BPMN原子服務(wù)切分方式一樣的形式進(jìn)行WSDL的解析,。最后形成的原子服務(wù)是以接口方法為單位的,這樣在服務(wù)的匹配中就會(huì)減少由于每個(gè)接口存在多個(gè)方法的干擾,。整個(gè)模型中都是以原子服務(wù)為基礎(chǔ),,因此,以下對(duì)原子服務(wù)的定義進(jìn)行了詳細(xì)的說(shuō)明并且給出了相應(yīng)的xml格式,。
1 原子服務(wù)
原子服務(wù)AS為一個(gè)6元組,,形式如下:
AS:<RSc,F(xiàn)Sc,,F(xiàn)BSc,,Sign,F(xiàn)uncR NonFuncR>,;
其中Rsc為原子服務(wù)所屬源服務(wù)的WSDL,。Fsc是由方法表示的服務(wù),形式為ServiceName(in:U,,out:V),,U為服務(wù)的輸入變量,,V為服務(wù)的輸出變量。FBSc為該原子服務(wù)調(diào)用時(shí)的條件限制,,形式為<PreCondition,,PostCondition>,分別表示為服務(wù)調(diào)用的前置條件和后置條件,。Sign為服務(wù)標(biāo)示,,形式為<Type,URL>,,其中Type表示服務(wù)所屬的類型,,Type ∈(Local Service,Partener Service,,Openservice),,表示該服務(wù)所屬的類型,分別為本地服務(wù),、伙伴服務(wù)以及開源服務(wù),;URL表示該服務(wù)調(diào)用的地址。FuncR為該原子服務(wù)的屬性定義,,形式為<Desc,,Class,Domain,,In,,Out>,Desc表示服務(wù)的描述信息,;Class表示該原子服務(wù)所屬源服務(wù)的名稱,,因?yàn)樵臃?wù)由源服務(wù)接口的方法生成的,而一個(gè)接口包含了多個(gè)方法,,所以這些方法都屬于統(tǒng)一Class,;Domain表示該服務(wù)所屬的域,也就是可調(diào)用服務(wù)的名字空間,;In表示服務(wù)的輸入,;Out表示服務(wù)的輸出。NonFuncR為該服務(wù)的非功能性描述,,形式為<ResponseTime,,Availability,Invocation,,Cost,,Rank,Level>,,其中,,ResponseTime為發(fā)送請(qǐng)求到接收響應(yīng)的時(shí)間;Availability為成功調(diào)用的服務(wù)次數(shù)與調(diào)用的總次數(shù)的比例,,aavailability∈[0,,1];Invocation為單位時(shí)間內(nèi)(1 min)服務(wù)的調(diào)用次數(shù),,Invocation∈[0,,1];Cost為調(diào)用該服務(wù)的費(fèi)用,;Rank為用戶滿意度,,用1~5之間的整數(shù)表示,數(shù)值越大滿意度越高,;Level為服務(wù)等級(jí),,形式為[LocalService=2,PartnerService=1,,OpenService=0],,值越大等級(jí)就越高,當(dāng)服務(wù)庫(kù)里有多個(gè)能滿足需求的服務(wù)時(shí),,優(yōu)先選擇的順序?yàn)長(zhǎng)ocalService,、PartnerService、OpenService,。
以上便是對(duì)原子服務(wù)的定義,,主要是依據(jù)WSDL中PortType的operation元素為主體進(jìn)行定義,該服務(wù)的視圖形式為XML文檔,,如圖1所示,,唯一的改進(jìn)就是在此基礎(chǔ)上增加了NonFuncR元素表示服務(wù)的非功能性特征,當(dāng)出現(xiàn)多個(gè)服務(wù)滿足需求時(shí)進(jìn)行服務(wù)的選擇,。對(duì)于BPMN文檔的解析也是依據(jù)該原子服務(wù)的格式進(jìn)行切分的,,然而,在切分時(shí)只關(guān)注于功能的調(diào)用部分,,即重點(diǎn)是切分出FuncR數(shù)據(jù),。
2 服務(wù)構(gòu)件模型層次結(jié)構(gòu)
本文研究的服務(wù)構(gòu)件模型會(huì)涉及到多個(gè)方面,以上給出的原子服務(wù)是整個(gè)模型的基礎(chǔ),,圖2中以分層的形式顯示了該模型涉及到的功能模塊結(jié)構(gòu),,從底層的服務(wù)構(gòu)件發(fā)布到上層流程應(yīng)用的部署和調(diào)用。
圖2中,,基礎(chǔ)服務(wù)層作為整個(gè)服務(wù)模型的基礎(chǔ),,利用SCA框架將組件暴露為Web服務(wù),為服務(wù)流程的各個(gè)業(yè)務(wù)需求提供功能接口,;服務(wù)解析層根據(jù)原子服務(wù)格式將需求的BPMN模型以及服務(wù)庫(kù)的WSDL進(jìn)行解析,;服務(wù)匹配層主要是對(duì)功能性需求進(jìn)行匹配,,如果出現(xiàn)多個(gè)服務(wù)時(shí),利用其QoS屬性選擇一個(gè)最優(yōu)的,;最上層便是面向用戶的接口層,,是將服務(wù)匹配成功后通過(guò)模型轉(zhuǎn)換生成的BPEL部署到執(zhí)行引擎中。
3 服務(wù)構(gòu)件模型流程
圖2顯示了模型的層次圖,,包含了具體的服務(wù)模塊以及相應(yīng)的操作,,下層對(duì)上層提供接口或服務(wù)。模型層次圖只是在總體上顯示了模型執(zhí)行的各個(gè)階段,,并沒(méi)有給出模型內(nèi)部具體的執(zhí)行細(xì)節(jié),。圖3表示服務(wù)構(gòu)件模型的流程,該流程描述了用戶進(jìn)行業(yè)務(wù)功能訪問(wèn)時(shí)的內(nèi)部運(yùn)行流程,。
圖3顯示了用戶依據(jù)業(yè)務(wù)需求進(jìn)行服務(wù)的調(diào)用,,在BPMN需求模型中,需要實(shí)現(xiàn)的功能都是由Web服務(wù)完成的,。綁定的服務(wù)都是來(lái)自于本地服務(wù)庫(kù),,該服務(wù)庫(kù)在原來(lái)的基礎(chǔ)上增加了服務(wù)的QoS屬性,便于在多服務(wù)中的選擇,。服務(wù)庫(kù)的更新和用戶請(qǐng)求的處理是同時(shí)進(jìn)行的,,兩者是不同的進(jìn)程,因此,,整個(gè)服務(wù)構(gòu)件模型的實(shí)現(xiàn)都是部署在服務(wù)端,,客戶端只需要在應(yīng)用程序中通過(guò)相應(yīng)的接口或者在客戶端界面上提交BPMN的XMI文件即可完成服務(wù)的自動(dòng)匹配和BPEL的生成。
本文從整體上分析與設(shè)計(jì)了服務(wù)構(gòu)件模型,,該模型利用BPMN為需求建模,,BPEL為輸出模型,Web服務(wù)為功能需求提供實(shí)現(xiàn)接口,。在設(shè)計(jì)中,,對(duì)原子服務(wù)進(jìn)行了重新定義使其能更好地完成服務(wù)匹配的要求;并且給出了該模型的層次圖以顯示該模型執(zhí)行的各個(gè)階段,,每一個(gè)階段都相對(duì)獨(dú)立,;最后還給出模型的執(zhí)行流程完整地描述了服務(wù)調(diào)用的整體流程。該模型的提出為接下來(lái)的工具實(shí)現(xiàn)奠定了理論基礎(chǔ),,對(duì)于接下來(lái)要實(shí)現(xiàn)的工具,,會(huì)增加服務(wù)的形式化來(lái)實(shí)現(xiàn)服務(wù)查找和選擇的智能性。該工具會(huì)部署在服務(wù)器端,,通過(guò)該工具可以方便地進(jìn)行Web服務(wù)的調(diào)用,。
參考文獻(xiàn)
[1] 梁愛虎.SOA思想、技術(shù)與系統(tǒng)集成應(yīng)用詳解[M].北京:電子工業(yè)出版社,,2007.
[2] 高哲.基于SOA的軟件架構(gòu)的研究與應(yīng)用[D].武漢:武漢理工大學(xué)碩士研究生論文,,2007.
[3] 劉華峰,,胡元嶺.基于Web服務(wù)的業(yè)務(wù)流程管理(BPM)的實(shí)現(xiàn)方法[J].機(jī)電產(chǎn)品開發(fā)與創(chuàng)新,2009,,22(3):68-69.
[4] 吳麗賢,,和力.基于BPMN的Web服務(wù)合成框架[J].開發(fā)案例,,2009(301):171.
[5] 胡燕梅,,邱錦倫.用BPMN輔助整合Web Service[J].計(jì)算機(jī)工程與設(shè)計(jì),2007,,28(19):4785-4786.
[6] 秦天保.從BPMN到可執(zhí)行業(yè)務(wù)流程建模[J].計(jì)算機(jī)應(yīng)用,,2006(26):266-267.