《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 服務(wù)構(gòu)件模型的研究與設(shè)計(jì)
服務(wù)構(gòu)件模型的研究與設(shè)計(jì)
來源:微型機(jī)與應(yīng)用2014年第7期
丁向東,楊 靜
(貴州大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,貴州 貴陽550025)
摘要: 針對(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ù)的選擇。
Abstract:
Key words :

摘  要: 針對(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ù)雜度越來越大,關(guān)鍵性遺留系統(tǒng)也越來越多,為了解決因遺留系統(tǒng)而出現(xiàn)的信息孤島、企業(yè)間的業(yè)務(wù)交互以及數(shù)據(jù)共享等問題,面向服務(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ù)調(diào)用及組合方面變得更加方便[2]。目前,存在大量可用的Web服務(wù),包括企業(yè)內(nèi)部的、商用的以及開源的,它們各自有優(yōu)勢(shì),怎樣選擇一個(gè)能夠滿足業(yè)務(wù)需求以及非功能需求的服務(wù)便是一個(gè)比較難的問題?,F(xiàn)在的應(yīng)用系統(tǒng)在業(yè)務(wù)上變得越來越復(fù)雜,這些業(yè)務(wù)不只是針對(duì)于本系統(tǒng),還可能與其他系統(tǒng),特別是與其他公司的系統(tǒng)進(jìn)行交互。由此,針對(duì)于每一項(xiàng)業(yè)務(wù)過程,都需要有一個(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í)行的流程,該流程可以通過Web服務(wù)的接口標(biāo)準(zhǔn)暴露成為流程服務(wù)供其他應(yīng)用調(diào)用,也可以作為一個(gè)流程的子流程。目前,已存在很多的業(yè)務(wù)流程規(guī)范,主要分成兩個(gè)類別,一個(gè)是基于可視化圖形的,如BPMN、BPML、XPDL等;另一個(gè)是基于塊結(jié)構(gòu)的語言,如WS-BPEL,可以直接被流程引擎執(zhí)行。經(jīng)過實(shí)際的應(yīng)用和驗(yàn)證,WS-BPEL已經(jīng)成為事實(shí)上業(yè)務(wù)流程運(yùn)行時(shí)描述語言的標(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è)元素的圖形表示也沒有一個(gè)統(tǒng)一的標(biāo)準(zhǔn)定義,再則,BPEL屬于塊結(jié)構(gòu)語言,對(duì)于業(yè)務(wù)流程的分析與設(shè)計(jì)人員顯得比較抽象和晦澀?;谶@樣的問題以及為了提高業(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)件模型,它通過BPMN來描述業(yè)務(wù)需求,然后從大量的Web服務(wù)中選擇滿足要求的服務(wù)進(jìn)行綁定,最后生成可執(zhí)行的BPEL模型以及流程服務(wù)。主要是設(shè)計(jì)一種完整的流程模型來描述用戶調(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ù)可能來自不同的提供者,可能是本公司的系統(tǒng),也可能是其他合作者提供的服務(wù),比如對(duì)于電子商務(wù)網(wǎng)站而言,一些業(yè)務(wù)流程中的服務(wù)就會(huì)來自于其他公司,如第三方支付服務(wù)、物流服務(wù)等。對(duì)于要調(diào)用這些Web服務(wù)的客戶端,必須先通過BPMN進(jìn)行需求建模,BPMN模型以圖形符號(hào)的形式描述了客戶端的功能需求。隨后,該BPMN會(huì)被切分成原子服務(wù),該原子服務(wù)的格式是在WSDL基礎(chǔ)上重新定義的,與服務(wù)庫里的服務(wù)格式相同;服務(wù)庫里的服務(wù)是通過在線抓取和人工錄入的形式完成的,這些服務(wù)都是以WSDL進(jìn)行描述,通過與BPMN原子服務(wù)切分方式一樣的形式進(jìn)行WSDL的解析。最后形成的原子服務(wù)是以接口方法為單位的,這樣在服務(wù)的匹配中就會(huì)減少由于每個(gè)接口存在多個(gè)方法的干擾。整個(gè)模型中都是以原子服務(wù)為基礎(chǔ),因此,以下對(duì)原子服務(wù)的定義進(jìn)行了詳細(xì)的說明并且給出了相應(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 &isin;(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&isin;[0,1];Invocation為單位時(shí)間內(nèi)(1 min)服務(wù)的調(diào)用次數(shù),Invocation&isin;[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ù)庫里有多個(gè)能滿足需求的服務(wù)時(shí),優(yōu)先選擇的順序?yàn)長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ù)庫的WSDL進(jìn)行解析;服務(wù)匹配層主要是對(duì)功能性需求進(jìn)行匹配,如果出現(xiàn)多個(gè)服務(wù)時(shí),利用其QoS屬性選擇一個(gè)最優(yōu)的;最上層便是面向用戶的接口層,是將服務(wù)匹配成功后通過模型轉(zhuǎn)換生成的BPEL部署到執(zhí)行引擎中。
3 服務(wù)構(gòu)件模型流程
 圖2顯示了模型的層次圖,包含了具體的服務(wù)模塊以及相應(yīng)的操作,下層對(duì)上層提供接口或服務(wù)。模型層次圖只是在總體上顯示了模型執(zhí)行的各個(gè)階段,并沒有給出模型內(nèi)部具體的執(zhí)行細(xì)節(jié)。圖3表示服務(wù)構(gòu)件模型的流程,該流程描述了用戶進(jìn)行業(yè)務(wù)功能訪問時(shí)的內(nèi)部運(yùn)行流程。

 圖3顯示了用戶依據(jù)業(yè)務(wù)需求進(jìn)行服務(wù)的調(diào)用,在BPMN需求模型中,需要實(shí)現(xiàn)的功能都是由Web服務(wù)完成的。綁定的服務(wù)都是來自于本地服務(wù)庫,該服務(wù)庫在原來的基礎(chǔ)上增加了服務(wù)的QoS屬性,便于在多服務(wù)中的選擇。服務(wù)庫的更新和用戶請(qǐng)求的處理是同時(shí)進(jìn)行的,兩者是不同的進(jìn)程,因此,整個(gè)服務(wù)構(gòu)件模型的實(shí)現(xiàn)都是部署在服務(wù)端,客戶端只需要在應(yīng)用程序中通過相應(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)用的整體流程。該模型的提出為接下來的工具實(shí)現(xiàn)奠定了理論基礎(chǔ),對(duì)于接下來要實(shí)現(xiàn)的工具,會(huì)增加服務(wù)的形式化來實(shí)現(xiàn)服務(wù)查找和選擇的智能性。該工具會(huì)部署在服務(wù)器端,通過該工具可以方便地進(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.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。