汪 鵬 趙 恒 黃 偉
(武漢數字工程研究所 武漢 430205)
?
一種基于SOMA的服務建模方法研究*
汪鵬趙恒黃偉
(武漢數字工程研究所武漢430205)
摘要在分析SOMA思想的基礎上,研究了一種基于SOMA的服務建模方法,通過形式化理論分析了服務建模過程中服務發現和設計建模的過程,結合模型驅動理論提出具體的方法實現服務從抽象模型到運行實體的轉換,并根據方法實現服務設計建模工具,最后通過在海戰場領域的一個建模實例驗證方法的可行性。
關鍵詞SOMA; 服務建模; 模型驅動理論
Class NumberTP391.9
1引言
面向服務的建模(Service Oriented Modeling,SOM)是SOA軟件系統實現的重要手段。研究服務建模技術旨在通過建立一種可行的服務建模方法為SOA軟件系統提供良好的解決方案[1]。
目前,IBM的SOMA[2]思想為業界面向服務的建模提供了方法論的指導[3],文獻[4]提出了一種全過程復用的服務建模方法,研究了服務本體系統等相關概念,提出了全過程復用過程中的具體算法,該方法著重于服務建模全過程中模型資產復用的研究。文獻[5]研究了知識服務的建模方法,通過對知識服務的分析,從多個角度定義了知識服務的描述模型。該方法的重點在于服務的發現和規約上,并未對服務實現做具體的研究。而在文獻[6,8~9]中,研究者將服務建模的模型與模型驅動體系(Model Driven Architecture,MDA)相結合,采用標準UML建模語言實現特定平臺服務模型的創建與轉換。
以上的研究從不同的方面研究了面向服務的建模方法,這些方法或是基于模型定義研究模型的復用,未體現服務實現過程;或是研究單個服務模型的規約,而缺少對建模過程中多個模型間關系的描述;又或是研究了特定平臺下的服務建模方法,其依賴的軟件環境在其他平臺下無法完全滿足,導致其可用性存在一定的不足。因而,在實際的SOA軟件系統開發過程中,缺乏一種規范的、可遵循的服務建模方法來指導服務的建模開發過程。
針對以上問題,本文在SOMA方法論的指導下,通過形式化的理論對建模過程中模型的定義、模型之間的關系以及服務實現進行了研究,提出了一種基于SOMA的服務建模方法,以期為SOA軟件系統的開發提供方法指導。
2基于SOMA的服務建模方法
SOMA方法論提出服務建模的三個過程:服務發現、服務規約以及服務實現。服務發現是通過一定手段獲取服務候選目錄的過程;服務規約過程定義了服務的細節,包括數據、約束、消息、事件定義等;服務實現過程則是根據服務規約的結果并結合實際環境進行服務的開發。
基于SOMA方法論,本文提出的服務建模方法,其過程如圖1所示。

圖1 服務建模過程
業務分析是服務發現的過程,通過對實際業務進行分析,提取業務中的參與人員(創建人員、過程執行人員)和具體事務節點。為了得到人員和具體事務節點的關系,對業務進行業務流程建模,產生的業務分析模型在整體上為業務流程化運行提供基礎,而細化到具體的流程實現上,事務節點的細節分析則是服務設計建模的必要條件。
服務設計是服務規約的過程,通過對事務節點的細節進行分析提取,將具體事務抽象成對應的服務描述模型,并從數據模型和約束條件上滿足具體事務的要求。
服務的構建與開發是服務實現的過程,抽象的服務描述模型經過構建和開發,形成可運行部署的服務運行實體,這樣的過程涉及到描述模型中的數據模型到代碼框架模型的轉換以及基于框架模型的開發。
上述過程是SOMA方法論的具體化,用以指導從實際的業務到服務描述模型再到服務運行實體的轉換實現。
2.1業務分析
業務分析作為建模的初始階段,其核心是業務流程建模。經過業務分析節點,實際業務被轉換成用一定的標準或語言符號描述的業務流程模型。業務分析階段需要將一些業務所處的實際環境特性(如網絡環境,安全因素等)考慮其中,具體到流程建模當中,則需要分析事物節點處理的時間要求、處理人員的身份認證,這就為進一步的服務分析階段提供了一定的約束條件。
業務分析的結果就是事務節點的集合。事務節點包括了參與人員、事務、以及約束要求,可以用這樣的三元組來表示:

其中,ProN表示事務節點,P表示參與人員People,E表示具體事件Event,R表示約束條件集,R=R′∪R″∪…∪R(n)。由于業務是多個事務節點的集合,用Task表示業務,其表達方式如下:
Task=RroN1∪ProN2∪…∪ProNm
由于業務是由事務節點按照一定的順序構成,假設業務Task1是按照圖2順序執行。

圖2 Task1事務節點流程圖
箭頭表示一個事務節點轉到另一個事務節點。將業務Task1按照參與人員P進行劃分,得到過程如圖3。

圖3 Task1業務泳道圖
業務Task1的劃分結果是多個獨立的、順序執行的二元組〈E,R〉,這個二元組是服務的實現基礎。分析事件E提取事件的內容、所需的數據輸入以及事件輸出,抽象成包含這些信息的數據模型D,從而將服務定義成數據和約束的二元組:

通過業務分析階段,一個具體的業務被分解成多個事務節點,進而可以分析提取出對應的服務模型,這樣的過程為下一階段的服務設計提供了輸入。
2.2服務設計
根據2.1分析,服務定義為一個數據模型D和約束R的二元組,即服務是滿足環境定義的數據模型和約束條件共同關系的結果。假設Dm是數據模型集,req是約束條件集,ref表示滿足實際環境的要求,因此,服務是滿足ref的Dm與req的笛卡爾積,其形式化描述為
service=σref(Dm×req)
對于一個數據模型D,2.1節分析了數據模型是方法Methods、輸入輸出Input/Output以及屬性描述desc的三元組,Methods是方法的集合,表示為
Methods={mi|i∈(1,n),n∈Z}
Input是輸入數據的集合,由于方法的輸入量有多個,因此Input定義如下:
Input={it|t∈(0,k),k∈Z}
Output是輸出數據,服務方法的輸出只能是一個,所以定義Output如下:
Output={Os|s=1}
對于任意的一個方法mi,可以用如下的三元組來定義:
其中,Operation表示方法操作名,I是輸入數據集合,I?Input,O是輸出數據,O?Output。
約束條件是根據服務在實際環境中可能存在的限制和要求在模型層面定義的服務需求。按約束的屬性來劃分,包括了服務QoS約束和安全性約束等,QoS約束根據實際的環境分析(如限制的傳輸條件),定義服務的延時約束,即在接收請求的一定時間內,服務需要做出應答的最長時間;安全性約束是考慮服務在安全性上的要求,限制未經安全認證的請求訪問。
由此可得到服務模型的XML描述文件,如下:
〈service〉
〈properties〉
〈name value="Test "/〉
〈id value="ID_Test"/〉
……
〈nodeIP value="127.0.0.1"/〉
〈serviceURL value="http://127.0.0.1:10000"/〉
……
〈bundleList〉……〈/bundleList〉
〈description value="description of service"/〉
……
〈/properties〉
〈interfaces〉
〈inter interDescription="interface description"
interName="send"〉
〈returnValue description="method description"
type="int"
unit="NULL"/〉
〈qos delay="1"
description="timedelay"
unit="ms"/〉
……
〈args〉
〈arg description="arg0" ioflag="input"
name="arg0" type="String"
…/〉
……
〈/args〉
〈/inter〉
……
〈/interfaces〉
〈/service〉
2.3服務構建與開發
服務構建與開發是在服務描述模型的基礎上,將描述定義結構通過技術手段轉變成實際服務運行實體的過程,本質上是系統無關模型PIM到平臺相關模型PSM再到實現模型ISM的轉換[10],這是一個“灰盒”過程[11],如圖4所示。

圖4 服務模型轉換過程
圖中,模型轉換的核心是轉換規則和相應的代碼生成工具,服務描述模型作為PIM,經過轉換過程proc1,轉換成PSM,PSM經過代碼生成引擎轉換成ISM,其中proc1的狀態過程如圖5所示。

圖5proc1狀態過程
其中,狀態0→1的轉換條件是讀取服務的描述desc,desc包括服務名稱等信息;
狀態1→2的轉換條件是讀取服務的方法m0;
由于服務的方法有多個,因此:
狀態2→2的轉換條件讀取服務的方法mi;
狀態2→3的轉換條件是方法讀取完畢。
對于狀態2,細化其狀態過程如圖6所示。

圖6 過程2的狀態細節
2-0→2-1,讀取方法的輸出O;
2-1→2-2,讀取方法的操作名Operation;
2-2→2-3,讀取方法的輸入I1;
由于一個方法的輸入有多個,因此:
2-3→2-3,讀取方法的輸入Ii;
2-3→2-4,輸入讀取完畢。
根據以上的狀態過程,本文設計的模型代碼轉換流程如圖7所示。

圖7 模型代碼轉換流程圖
在實際的研究過程中,對圖7的模型轉換過程進行了完整的封裝,并結合服務設計過程,實現一個服務設計建模工具,工具隱藏了中間的細節,使用者無需知道中間的轉換規則以及轉換過程,這在很大程度上提高了實際服務建模過程的便捷性。
在得到的服務代碼框架的基礎上,進行服務具體方法接口的開發是得到服務運行實體的重要步驟。根據設定的平臺屬性和定義的輸入輸出,將輸入數據進行適當的數據處理,使之滿足接口方法的功能需求,并將結果傳遞給輸出載體。
服務的構建與開發對服務設計階段的輸出模型進行細節上的分解與分析,經過模型代碼轉換過程以及服務方法接口開發,得到實際可運行的服務實體。
3實驗驗證
本文以海戰場領域的護航方案創建業務作為應用實例來驗證本文研究的建模方法。通過業務分析過程,得到護航方案創建業務中參與的人員People、對應的事務節點Event以及相互之間聯系,其中參與人員包括:岸基指揮官P1、編隊指揮官P2、編隊對海指揮官P3以及艦長P4,對應的事務節點有護航業務下達,護航方案制定,護航方案審核,護航方案修改等。通過業務分析階段,得到護航方案籌建業務的業務流程模型如圖8所示。

圖8 業務流程分析模型
編隊對海指揮官P3的事務“制定護航方案并提交”進行分析設計,得到數據模型Dm如表1所示。

表1 服務數據模型
該服務的約束req主要是QoS約束,即每個方法的最大處理時間,該約束主要考慮在服務開發過程中。
當服務的數據模型和約束條件確定后,可利用服務設計建模工具進行服務的構建和開發,將服務信息輸入到服務設計建模工具中,得到服務模型,如圖9所示。

圖9 服務設計建模工具構建服務
利用服務設計建模工具可得到2.2節描述的服務XML描述模型,利用工具提供的模型轉換功能輸出服務的代碼框架,經過服務具體功能開發階段,得到服務運行實體,實現服務的開發運行,得到如下所示服務WSDL描述:
〈definitions name=”ConvoyServer” targetNamespace=”urn:ConvoyServer”……〉〈types〉〈/types〉
〈message name="AddConvoyInfoRequest"〉
〈part name="arg0" type="xsd:base64Binary"/〉〈/message〉
〈message name="AddConvoyInfoResponse"〉
〈part name="response" type="xsd:int"/〉〈/message〉
……
〈portType name="ConvoyServerPortType"〉
〈operation name="AddConvoyInfo"〉
〈documentation〉Service definition of function
ns_AddConvoyInfo〈/documentation〉
〈input message="tns:AddConvoyInfoRequest"/〉
〈output message="tns:AddConvoyInfoResponse"/〉
〈/operation〉
……
〈/definitions〉
上述描述僅顯示了AddConvoyInfo方法,包含了該方法的operation,input,output等信息,并定義了輸入輸出的數據格式。
將本文研究的方法與其他文獻中提出的建模方法進行比較,可得到如表2比較結果。

表2 服務建模方法比較
根據以上的表格分析,本文研究的建模方法在形式化分析(Formal Analysis)、模型間關系(Model Relation)、模型轉換(Model Transformation)以及通用性(Commonality)均作了相應的分析和考慮,但是在模型的復用上(Model Reuse)需要做進一步研究。
4結語
本文提出一種基于SOMA的服務建模方法,從業務出發,采用模型驅動的理論系統地闡述了服務建模的各個階段,完整地分析各個階段之間相互的聯系。根據形式化的理論推導結合實際的模型開發了服務設計建模工具,最后通過實例驗證了方法的有效性與可行性。
本文研究的是從業務分析到服務實現的過程,下一步的研究則是如何從服務回到業務,這部分內容包含基于業務的服務編排以及服務的集成與運維,并將本文的研究內容與下一步的工作結合起來,從而形成一個完整的服務化建模方法。
參 考 文 獻
[1] 毛新生.SOA:原理.方法.實踐[M].北京:電子工業出版社,2007:53-62.
MAO Xinsheng. SOA: Principle. Method. Practice[M]. Beijing: Publishing House of Electronics Industry,2007:53-62.
[2] Ali Arsanjani. Service-Oriented Modeling and Architecture[C]//IEEE International Conference on Service Computing,2004:521.
[3] 金戈,姚輝,趙勇.SOA快速指南123[EB/OL].(200612-26).http://www.ibm.com/developerworks/cn/webservices/06-10_jinge/index1.html.
JIN Ge, YAO Hui, ZHAO Yong. SOA Quick Guide 123 [EB/OL]. (2006-12-26).
[4] 吳布丹,金芝,趙彬.面向服務的建模:一種全過程復用的方法[J].計算機學報,2008,31(8):1294-1308.
WU Budan, JIN Zhi, ZHAO Bin. Service-Oriented Modeling Based on Whole Process Asset Reuse[J]. Chinese Journal of Computers,2008,31(8):1294-1308.
[5] 任彥,柏小莉,郭得科,等.面向任務的知識服務描述模型及體系結構[J].計算機科學,2006,33(10):291-294.
REN Yan, BAI Xiaoli, GUO Deke, et al. Task Oriented Knowledge Service Model and Architecture[J]. Computer Science,2006,33(10):291-294.
[6] OMG. Model Driven Architecture (MDA): The MDA Guide Rev2.0[EB/OL]. [2014-06]. www.omg.org/cgi-bin/doc?ormsc/14-06-01.pdf
[7] OMG. Unified Modeling LanguageTM(UML)[EB/OL]. [2005-07]. http://www.omg.org/spec/UML/2.0
[8] José Luis Herrero Agustin, Pablo Carmona del Barco: A model-driven approach to develop high performance web applications[J]. The Journal of Systems and Software,2013,86:3013-3023.
[9] Kwanghoon Kim. A model-driven workflow fragmentation framework for collaborative workflow architectures and systems[J]. Journal of Network and Computer Applications,2012,35:97-110.
[10] IBM. An introduction to Model-Driven Architecture(MDA)[EB/OL]. [2005].http://www.ibm.com/developerworks/rational/library/apr05/brown/.
[11] 宋莉莉,王維平,李群.基于SOA和MDA的模型重用和組合技術研究[J].系統仿真學報,2009,21(13):3969-3974.
SONG Lili, WANG Weipin, LI Qun. Model Reuse and Composition based on SOA and MDA[J]. Journal of System Simulation,2009,21(13):3969-3974.
收稿日期:2016年1月9日,修回日期:2016年2月20日
作者簡介:汪鵬,男,碩士研究生,研究方向:服務化,軟件構件。趙恒,女,博士,研究員,研究方向:分布式計算、軟件工程。黃偉,男,高級工程師,研究方向:服務化,軟件工程。
中圖分類號TP391.9
DOI:10.3969/j.issn.1672-9722.2016.07.027
Service Modeling Method Based on SOMA
WANG PengZHAO HengHUANG Wei
(Wuhan Digital Engineering Institute, Wuhan430205)
AbstractBased on the analysis of SOMA theory, the paper studies a service modeling based on SOMA, which analyses the procedure of service discovery and service design-modeling through the formal theory, also presents a specific method to implement the transformation from service abstract model to service instance with combining the Model Driven Architecture, additionally develops a service tool with the method. The paper also demonstrates the correctness of the modeling method with a case on naval battle field.
Key WordsSOMA, service modeling, model driven architecture