《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > 服務構件模型的研究與設計
服務構件模型的研究與設計
來源:微型機與應用2014年第7期
丁向東,楊 靜
(貴州大學 計算機科學與技術學院,貴州 貴陽550025)
摘要: 針對如何更高效和準確地將已存在的Web服務集成到業(yè)務流程中,提出了服務構件模型。該模型以Web服務為業(yè)務功能實現的基礎,用BPMN建模用戶需求,輸出為可執(zhí)行的BPEL模型。該服務構件模型內部對原子服務進行了重新定義,便于服務的查找;而且加入了服務的QoS特征,便于服務的選擇。
Abstract:
Key words :

摘  要: 針對如何更高效和準確地將已存在的Web服務集成到業(yè)務流程中,提出了服務構件模型。該模型以Web服務為業(yè)務功能實現的基礎,用BPMN建模用戶需求,輸出為可執(zhí)行的BPEL模型。該服務構件模型內部對原子服務進行了重新定義,便于服務的查找;而且加入了服務的QoS特征,便于服務的選擇。
關鍵詞: Web服務;業(yè)務流程管理;BPMN;BPEL

 企業(yè)應用的復雜度越來越大,關鍵性遺留系統(tǒng)也越來越多,為了解決因遺留系統(tǒng)而出現的信息孤島、企業(yè)間的業(yè)務交互以及數據共享等問題,面向服務架構SOA(Service-Oriented Architecture)、業(yè)務流程管理BPM(Business Process Management)以及Web服務等技術得到了很大的發(fā)展,并且相關的實現技術也日益成熟[1]。
 Web服務是SOA的主要實現技術,它提供了標準的訪問接口以便在服務調用及組合方面變得更加方便[2]。目前,存在大量可用的Web服務,包括企業(yè)內部的、商用的以及開源的,它們各自有優(yōu)勢,怎樣選擇一個能夠滿足業(yè)務需求以及非功能需求的服務便是一個比較難的問題?,F在的應用系統(tǒng)在業(yè)務上變得越來越復雜,這些業(yè)務不只是針對于本系統(tǒng),還可能與其他系統(tǒng),特別是與其他公司的系統(tǒng)進行交互。由此,針對于每一項業(yè)務過程,都需要有一個標準的描述方式,這樣的流程描述不只是針對于業(yè)務分析人員,也要便于開發(fā)人員能夠在程序中直接應用。業(yè)務流程管理很大的用途或特點在于對Web服務的編排[3],根據需求,按照某種邏輯或者規(guī)則將存在的Web服務組裝成一個可執(zhí)行的流程,該流程可以通過Web服務的接口標準暴露成為流程服務供其他應用調用,也可以作為一個流程的子流程。目前,已存在很多的業(yè)務流程規(guī)范,主要分成兩個類別,一個是基于可視化圖形的,如BPMN、BPML、XPDL等;另一個是基于塊結構的語言,如WS-BPEL,可以直接被流程引擎執(zhí)行。經過實際的應用和驗證,WS-BPEL已經成為事實上業(yè)務流程運行時描述語言的標準,是專門為Web服務編排和組合描述而定制的一種規(guī)范標準[4]。目前,很多執(zhí)行引擎都支持BPEL,并且也存在相關的圖形編輯工具以減少BPEL建模的復雜度[5]。然而,各個建模工具實現方式各不相同,對BPEL各個元素的圖形表示也沒有一個統(tǒng)一的標準定義,再則,BPEL屬于塊結構語言,對于業(yè)務流程的分析與設計人員顯得比較抽象和晦澀。基于這樣的問題以及為了提高業(yè)務人員對業(yè)務流程的建模效率,業(yè)務流程建模符號BPMN(Business Process Modeling Notation)被正式提出為標準[6]。它定義了各個元素的圖形表示,便于業(yè)務人員更好地理解。
 基于以上提出的在業(yè)務和功能上的需求以及可用的建模方法和工具,本文提出了一種服務構件模型,它通過BPMN來描述業(yè)務需求,然后從大量的Web服務中選擇滿足要求的服務進行綁定,最后生成可執(zhí)行的BPEL模型以及流程服務。主要是設計一種完整的流程模型來描述用戶調用Web服務的需求、服務的匹配和綁定以及可執(zhí)行流程的生成。用戶只需要將BPMN文件提交到模型中,處理后便可以自動地部署對應的可執(zhí)行流程服務,然后在執(zhí)行引擎中運行。
 本文提出的服務構建模型是以Web服務為基礎的,這些Web服務可能來自不同的提供者,可能是本公司的系統(tǒng),也可能是其他合作者提供的服務,比如對于電子商務網站而言,一些業(yè)務流程中的服務就會來自于其他公司,如第三方支付服務、物流服務等。對于要調用這些Web服務的客戶端,必須先通過BPMN進行需求建模,BPMN模型以圖形符號的形式描述了客戶端的功能需求。隨后,該BPMN會被切分成原子服務,該原子服務的格式是在WSDL基礎上重新定義的,與服務庫里的服務格式相同;服務庫里的服務是通過在線抓取和人工錄入的形式完成的,這些服務都是以WSDL進行描述,通過與BPMN原子服務切分方式一樣的形式進行WSDL的解析。最后形成的原子服務是以接口方法為單位的,這樣在服務的匹配中就會減少由于每個接口存在多個方法的干擾。整個模型中都是以原子服務為基礎,因此,以下對原子服務的定義進行了詳細的說明并且給出了相應的xml格式。
1 原子服務
 原子服務AS為一個6元組,形式如下:
 AS:<RSc,FSc,FBSc,Sign,FuncR NonFuncR>;
 其中Rsc為原子服務所屬源服務的WSDL。Fsc是由方法表示的服務,形式為ServiceName(in:U,out:V),U為服務的輸入變量,V為服務的輸出變量。FBSc為該原子服務調用時的條件限制,形式為<PreCondition,PostCondition>,分別表示為服務調用的前置條件和后置條件。Sign為服務標示,形式為<Type,URL>,其中Type表示服務所屬的類型,Type &isin;(Local Service,Partener Service,Openservice),表示該服務所屬的類型,分別為本地服務、伙伴服務以及開源服務;URL表示該服務調用的地址。FuncR為該原子服務的屬性定義,形式為<Desc,Class,Domain,In,Out>,Desc表示服務的描述信息;Class表示該原子服務所屬源服務的名稱,因為原子服務由源服務接口的方法生成的,而一個接口包含了多個方法,所以這些方法都屬于統(tǒng)一Class;Domain表示該服務所屬的域,也就是可調用服務的名字空間;In表示服務的輸入;Out表示服務的輸出。NonFuncR為該服務的非功能性描述,形式為<ResponseTime,Availability,Invocation,Cost,Rank,Level>,其中,ResponseTime為發(fā)送請求到接收響應的時間;Availability為成功調用的服務次數與調用的總次數的比例,aavailability&isin;[0,1];Invocation為單位時間內(1 min)服務的調用次數,Invocation&isin;[0,1];Cost為調用該服務的費用;Rank為用戶滿意度,用1~5之間的整數表示,數值越大滿意度越高;Level為服務等級,形式為[LocalService=2,PartnerService=1,OpenService=0],值越大等級就越高,當服務庫里有多個能滿足需求的服務時,優(yōu)先選擇的順序為LocalService、PartnerService、OpenService。
 以上便是對原子服務的定義,主要是依據WSDL中PortType的operation元素為主體進行定義,該服務的視圖形式為XML文檔,如圖1所示,唯一的改進就是在此基礎上增加了NonFuncR元素表示服務的非功能性特征,當出現多個服務滿足需求時進行服務的選擇。對于BPMN文檔的解析也是依據該原子服務的格式進行切分的,然而,在切分時只關注于功能的調用部分,即重點是切分出FuncR數據。

2 服務構件模型層次結構
 本文研究的服務構件模型會涉及到多個方面,以上給出的原子服務是整個模型的基礎,圖2中以分層的形式顯示了該模型涉及到的功能模塊結構,從底層的服務構件發(fā)布到上層流程應用的部署和調用。
圖2中,基礎服務層作為整個服務模型的基礎,利用SCA框架將組件暴露為Web服務,為服務流程的各個業(yè)務需求提供功能接口;服務解析層根據原子服務格式將需求的BPMN模型以及服務庫的WSDL進行解析;服務匹配層主要是對功能性需求進行匹配,如果出現多個服務時,利用其QoS屬性選擇一個最優(yōu)的;最上層便是面向用戶的接口層,是將服務匹配成功后通過模型轉換生成的BPEL部署到執(zhí)行引擎中。
3 服務構件模型流程
 圖2顯示了模型的層次圖,包含了具體的服務模塊以及相應的操作,下層對上層提供接口或服務。模型層次圖只是在總體上顯示了模型執(zhí)行的各個階段,并沒有給出模型內部具體的執(zhí)行細節(jié)。圖3表示服務構件模型的流程,該流程描述了用戶進行業(yè)務功能訪問時的內部運行流程。

 圖3顯示了用戶依據業(yè)務需求進行服務的調用,在BPMN需求模型中,需要實現的功能都是由Web服務完成的。綁定的服務都是來自于本地服務庫,該服務庫在原來的基礎上增加了服務的QoS屬性,便于在多服務中的選擇。服務庫的更新和用戶請求的處理是同時進行的,兩者是不同的進程,因此,整個服務構件模型的實現都是部署在服務端,客戶端只需要在應用程序中通過相應的接口或者在客戶端界面上提交BPMN的XMI文件即可完成服務的自動匹配和BPEL的生成。

 本文從整體上分析與設計了服務構件模型,該模型利用BPMN為需求建模,BPEL為輸出模型,Web服務為功能需求提供實現接口。在設計中,對原子服務進行了重新定義使其能更好地完成服務匹配的要求;并且給出了該模型的層次圖以顯示該模型執(zhí)行的各個階段,每一個階段都相對獨立;最后還給出模型的執(zhí)行流程完整地描述了服務調用的整體流程。該模型的提出為接下來的工具實現奠定了理論基礎,對于接下來要實現的工具,會增加服務的形式化來實現服務查找和選擇的智能性。該工具會部署在服務器端,通過該工具可以方便地進行Web服務的調用。
參考文獻
[1] 梁愛虎.SOA思想、技術與系統(tǒng)集成應用詳解[M].北京:電子工業(yè)出版社,2007.
[2] 高哲.基于SOA的軟件架構的研究與應用[D].武漢:武漢理工大學碩士研究生論文,2007.
[3] 劉華峰,胡元嶺.基于Web服務的業(yè)務流程管理(BPM)的實現方法[J].機電產品開發(fā)與創(chuàng)新,2009,22(3):68-69.
[4] 吳麗賢,和力.基于BPMN的Web服務合成框架[J].開發(fā)案例,2009(301):171.
[5] 胡燕梅,邱錦倫.用BPMN輔助整合Web Service[J].計算機工程與設計,2007,28(19):4785-4786.
[6] 秦天保.從BPMN到可執(zhí)行業(yè)務流程建模[J].計算機應用,2006(26):266-267.

此內容為AET網站原創(chuàng),未經授權禁止轉載。