摘 要:為得到在通用抽象級別上的可觀測協同模型,采用描述邏輯對構件服務予以概念化而構成服務本體并將其作為構件可觀測的基準,在軟件體系結構的抽象級別上利用服務本體擴展了軟件體系結構連接件。基于上述方法,設計了協同介質的基本結構并規范了基于腳本語言的協同規則,提出了一種通用的可觀測協同模型。研究結果表明,該協同模型具有與應用無關的通用性。
關鍵詞:可觀測協同模型; 服務本體; 軟件體系結構
中圖分類號:TP191文獻標志碼:A
文章編號:1001-3695(2009)06-2332-04
doi:10.3969/j.issn.1001-3695.2009.06.100
Observable coordination model based on service ontology
YUAN Yuan,WANG Guo-yin
(College of Science Technology of Computer, Chongqing University of Posts Telecommunications, Chongqing 400065, China)
Abstract:
To achive an observable coordination model at common level, this paper conceptualized the services of the components with description logic, and took service ontology as observation benchmark of the components. Then applied this ontology in abstract software architecture, and extended the connector in it. In above research methods, designed the fundamental structure of coordination media, specified a script-based coordination law, and presented common observable coordination model. The results of research show that the provided common coordination model is independent of the practical applications.
Key words:observable coordination; service ontology; software architecture
協同模型向軟件系統中構件間的交互活動提供了一個高級別抽象。被普遍接受的觀點是將協同模型看做由協同實體(coordination entity)、協同介質(coordination media)和協同規則(coordination law)三個部分組成[1]。協同實體是協同活動的參與者;協同介質向協同實體提供交互活動空間;協同規則被封裝于協同介質中以提供描述協同介質運作的規范。設計協同模型的一個重要問題是如何實現協同實體間透明的交互活動管理,即如何使提出協同請求的協同實體能在交互過程中確切定位其協同伙伴,此問題被稱為協同的可觀測性問題或可觀測協同問題[2]。集中式方法采用中央調度器實現協同請求實體對協同目標的尋找,如Bee-gent[3],但由于軟件系統的逐步大型化,此方法已不太適合管理協同實體間復雜的交互活動;分布式交互活動管理方法將中央調度器的功能分布到協同介質而以協同介質實現構件間的透明訪問。COOL[4]是采用分布式方法管理交互活動的典型協同模型,它利用封裝到協同介質中知識參考向協同實體提供了透明訪問的解決方案,但其僅適用于封閉系統。Omicini等人將邏輯編程的思想引入協同模型,增強協同介質的推理能力,并力圖基于元組中心的計算思想來推動開放環境中協同介質間的協同[5~7]。基于上述工作,MARS[8]、LuCe[9]、LIME[10]等模型提出了開放環境中agent之間的協同策略,并構建了驅動協同的知識。近年來,上述策略已逐步應用于語義Web環境中主體間的協同[11,12]。但這些工作大都是針對多主體協同的研究,且其中的協同知識僅適用于具體應用,因而并不具有通用性。
對協同模型的研究是隨著軟件系統的分布化而出現的,軟件系統的通用性體現于對分布式構件可重用性及系統動態重構的抽象,軟件體系結構(SA)則著力于此問題的探討。因此,協同模型的通用性應該體現于軟件體系結構級別的抽象;另一方面,體系結構描述語言作為SA的描述語言給出了構件的計算活動與其間交互活動的明確分離[13]。這種分離不但使軟件系統具有更好的可重用性、可配置性和可跟蹤性,同時也滿足了構件協同的基本要求,這是需要采用SA來刻畫協同模型的另一原因。SA的連接件雖然可很好地定義和管理構件間的相互連接,但缺乏抽象構件服務功能的能力。筆者認為構件的服務能力在解決構件可觀測問題上有其重要意義:構件服務是由構件直接或者間接向客戶提供的功能,若以構件服務作為可觀測協同的基準,協同請求構件找到的協同伙伴的計算能力將更接近客戶需求。基于協同模型的基本概念,本文以SA作為描述協同模型的出發點,將構件服務抽象為服務本體并用其擴展SA連接件,給出通用的可觀測協同模型。
1 基于服務抽象連接件的軟件體系結構
1.1 協同模型的基本概念
在基本的協同模型中,協同介質即為協同空間,本文將對協同介質予以擴展,而將協同空間作為協同介質的組成要素,下文的協同空間等同于基本協同模型中的協同介質。協同模型結構上的區分在于協同介質的差異。從協同空間的驅動方式來講,協同模型分為數據驅動(data-driven)與控制驅動(control-driven)兩類。兩者的基本交互模式均為協同實體在協同空間上的數據產生和消耗,即協同請求實體是數據產生者,而數據消耗者則為協同伙伴;但它們在協同空間的基本工作方式上卻迥然不同,前者是基于元組空間的數據交換,后者則是基于通道的事件通知。考慮到事件通知機制是實現可觀測協同模式的基礎[14],本文以控制驅動協同模型的通道作為本文協同模型的協同空間。協同模型內容上的差異則體現于協同規則的不同設計方案,多主體的協同強調協同協議的規范,其中的協同協議即為協同模型的協同規則。由于協同實體已預先存在于軟件系統中,建模協同模型即是考慮協同介質和協同規則的設計。
1.2 體系結構描述
圖1是基于服務抽象連接件的軟件體系結構。同基本的SA相比較,它在連接件中引入了提供構件間可觀測訪問的實體——交互活動容器(interaction container, IC)。IC為協同空間和規范構件抽象服務的本體提供運行環境,協同空間是實現構件交互訪問的實體,而本體則為構件的可觀測提供概念化知識描述。本文將此本體稱為服務本體(service ontology, SO),協同空間與SO在IC提供的運行環境中交互作用從而實現構件間的可觀測訪問。
1)構件 體系結構中的計算實體,對應于協同模型中交互活動對象(協同實體)的集合。
2)接口 構件方法的集合并定義了調用方法的協議,其基本功能是初始化并執行服務實例。
3)連接件 提供構件交互活動的實體,由若干角色和一個IC構成,對應于協同模型中的協同介質。
4)角色 它提供了應用環境建模的抽象,描述了構件在全局系統中執行任務的職責。
1.3 服務本體的設計
本體是概念的明確規范,而概念則是關于客觀世界的抽象、簡化的視角。對SO而言,客觀世界就是構件服務,它為協同模型提供了如何組建構件服務的抽象化知識結構;另一方面,提供相同服務的異構構件可能對此服務有不同的表達形式,從此角度來講,SO也支持了異構構件間的服務概念意思的具體解釋。因此,作為一個通用本體,SO表達了構件服務的一般概念,為構件可觀測提供了解決方案。SO被設計為層次化組織方式,如圖2所示。動態服務描述了一些具有動態特性的服務;靜態服務則概念化了那些相對靜態的服務;操作符服務指向應用環境的運行提供相關參數的構件服務。圖中給出的是SO的高級分類,概念化服務可按客戶的具體需求細分。
SO采用描述邏輯(description logic,DL)予以概念化描述。DL是一種知識表示語言,它通過歸類關系支持概念的自動層次化分類并向概念提供強有力的推理機制,由于具有自動分類能力,DL可增量式地規范概念。DL將用戶查詢看做領域中的新概念,DL系統(包括采用DL描述的領域及在其上的查詢)根據概念間的分類關系將此新概念自動定位到詞匯的層次,用戶可通過表達其信息需求而方便地查詢領域知識。因此,DL非常適合于SO的層次化概念組織方式的領域描述及在其之上的查詢。
DL根據概念、角色和個體來建模領域知識。具體應用中,它在兩個級別上實現此創建:抽象級別規范領域對象的類(概念)及其間的關系(角色),進行層次化組織;具體級別實例化抽象類的對象(個體)。下文在DL的抽象級別上創建SO。不失一般性,以下以SO中某個單一服務來闡述SO中服務概念的建立,采用DL對工作環境中診斷推理服務的描述如下:
(Define-concept DIAGNOSE_INFERENCE_SERVICE (AND SER-VICE
(FILLS keyword “DiagnoseInferenceService”)
(SAMEAS DIAGNOSE_INFERENCE_SERVICE (COMPOSE (SET symptom, Evidence) (SET ADD-Evidence, Delete-Evidence, Get-Conclusion)))
(THE model DIAGNOSE_INFERENCE_ SERVICE-model) (ATLEAST 1 model)
(ALL options DIAGNOSE_INFERENCE_ SERVICE-options)
(THE OwnedBy Component) (ATLEAST 1 OwnedBy)
(THE SerialNO INTEGER) (ATMOST 1 SerialNo) (ATLEAST 1 SerialNo)
(ALL history TRANSFER)))
由圖2中的概念分類,推理服務概念INFERENCE_SER-VICE是概念DIAGNOSE_INFERENCE_ SERVICE的直接前驅。根據DL的分類關系,推理服務定義為
(Define-concept INFERENCE_SERVICE (AND SERVICE (ALL hasParent DIAGNOSE_INFERENCE_ SERVICE)))
對于診斷推理服務,可根據不同標準進行分類。例如,推理時間是評價推理構件工作能力的重要指標。下面的DL描述表示能在MinIT~MaxIT時間內完成診斷推理的服務概念:
(Define-concept DIAGNOSE_INFERENCE_SERVICEII (AND DIAGNOSE_INFERENCE_SERVICE (ATLEAST MinIT InferenceTime) (ATMOST MaxIT InferenceTime)))
整個SO采用上述DL描述方法建立概念及其層次化關系。
2 協同空間與服務本體間的交互
2.1 基本思想
在控制驅動的協同模型中,當協同請求者在協同空間上產生數據時將觸發尋找協同伙伴事件。對于本文模型,當此事件被觸發時,協同空間必須首先訪問SO以明確知道請求者的協同伙伴,這是體現此模型可觀測性的根本。但SO是一靜態的概念化實體,不能接收協同空間的事件通知,協同空間只能采用查詢方式訪問概念化實體SO,因此,如果要實現協同空間與SO間的交互,必須設計一種事件與本體查詢間的相互轉換機制。為此,本文在SO和協同空間之間引入一個實現此轉換功能的引擎,稱為協同管理器。其基本部件為DL解析器和DL封裝器,DL解析器解析來自于協同空間的事件以將其轉換為DL查詢,而DL封裝器的功用為將從SO查詢得到的結果封裝成在協同空間之上的事件。
2.2 協同規則
基于上述基本想法,需設計的協同規則應該可轉換為DL查詢格式,本文以腳本語言來設計協同規則,這主要是基于下述考慮:腳本語言的嵌入式表達能夠方便地將嵌入其中的事件轉換為查詢;從支持構件協同的角度來講,腳本語言采用陳述式規范緊密地將軟件構件穿插(plug)到一起,由此,采用腳本語言設計協同規則可保證構件具有非常可靠的協作關系。本文腳本協同規范語言稱為事件出現規則語言(events emerging rule language, EERL),它是一個將構件的行為規范從需要協同此行為的通信中分離出來的協同腳本,其EBNF符號描述為:
rule : “on” pexpr [guard] “{” actions “}”
pexpr : “event” comp“(” [ident(“,”ident)*]|“(” pexpr“)” | pexpr op pexpr
guard : “not”* ( “in” | “out” ) “context” string
actions : [action(“;”action)*]
comp : ident “:” ident
op : “where” | “and” | “or” | “eq” | “neq”
action : ( “call” | “emit” ) ident “(”[expr(“,”expr)*] “)”
EERL的基本表述方式為on event C:E,它表示協同空間等待構件C的事件集合E出現的規則。若此事件出現,協同空間傳遞一定的事件通知;否則,表示構件保持當前狀態。因此,EERL相當于以腳本的方式來表示在協同空間上事件的觸發規則,若在協同空間中封裝一定上述事件出現規則,則構成了本文協同模型的協同規則。在EERL的事件出現規則中,事件E的參數值采用WHERE子句進行檢查,而其相關內容則通過in context或out context子句予以檢查。
下面的EERL描述給出了協同空間等待最大推理時間為MaxIT的診斷推理構件DIC1的事件Collative (DIAGNOSE_INFERENCE_SERVICE, WantMaxIT, Task)的出現規則。具體闡述為:假如DIC1推理時間已超過1 s且其當前任務是安全的,它發出一個查詢服務本體以得到最大推理時間為WantMaxIT的事件并要求查詢得到的構件接續其推理任務,而后調用函數EndInference(self)終止其當前推理。
on event DIC1: Collative (DIAGNOSE_INFERENCE_ SERVICE, WantMaxIT, Task)
where (InferenceTime>MaxIT)
in context “secure”
{ GoalComponent = EMIT QueryComponent (DIAGNOSE_ INFERENCE_SERVICE, “InferenceTime at most”, WantMaxIT);
EMIT QueryComponentIdle (GoalComponent);
if QueryComponentIdle(GoalComponent) then
{EMIT TransferTask (GoalComponent, Task);
call EndInference(self);} }
2.3 EERL同DL間的轉換
EERL以構件的方式表達查詢事件通知,而SO的查詢描述則是DL表達式,兩種不同表達間的轉換由協同管理器來完成。DL解析器解析EERL腳本以執行本體查詢,而將查詢結果轉換為構件可理解的EERL腳本的工作由DL封裝器來實現。限于篇幅,以下只給出DL解析器的解析過程,而后一過程則是其逆運算。
在采用DL描述的本體上進行查詢的DL通用表達式:
〈list-of-roles〉 for getall 〈list-of-constraints〉
其中:list-of-roles是用戶請求角色的列表;list-of-constraints是采用DL表示的約束列表,表示了查詢回答必須滿足的條件。假如list-of-roles為空,查詢返回特殊構件self,表示尋找協同伙伴失敗。例如,對于查詢最大推理時間為MaxIT的診斷推理服務可建立如下DL查詢表達式:
[ReferenceComponentSerialNo] for getall(AND DIAGNOSE _REFERENCE_SERVICE(ATMOST MaxIT InferenceTime))
它是上節EERL代碼中EMIT QueryComponent (DIAGNOSE_INFERENCE_SERVICE, “InferenceTime at most”, MaxIT)事件的DL查詢表達形式。
將EERL腳本表示的查詢事件解析為DL查詢的過程,事實上是設計將EERL查詢事件中的詞匯翻譯為DL查詢詞匯的方案,其目標是獲得以服務本體詞匯表達的查詢的同時保持EERL腳本查詢事件中詞匯語義的不變性。此過程采用在詞匯間的同義詞關系和值之間的等價關而獲得,而同義詞由一個同義詞匯庫提供。具體翻譯算法如下:
TRANSLATER (EERL-script-query, SO)
for each constraint in EERL-script-query do
case constraint is:
term: if synonym from a term in EERL-script-query to a term in SOthen
{Substitute (term, synonym-of-term) }
ELSE if the term in EERL-script-query is a new defined termthen
{ Substitute (term, definition-of-term);
Translate (definition-of-term, SO) }
value: IF a transfer function between relation and new relation then
Substitute (value, equivalent-value)
3 協同介質的設計
根據上文的描述,可設計本文協同模型的整體結構。如圖3所示,通道為協同空間,其中封裝了EERL協同規則;協同管理器由DL解析器、DL封裝器、同義詞庫以及本體查詢接口組成,本體查詢接口是協同管理器與服務本體交互的口岸;服務本體提供系統構件相互觀測的概念化知識。
實現構件間可觀測協同的基本過程為:協同請求構件將協同請求產生到通道上,以EERL表示的本體查詢事件被觸發;此事件通知被發送到DL解析器并被其處理為DL查詢,DL解析器將此DL查詢轉發至本體查詢接口以實施查詢;在查詢到滿足協同請求構件所需服務的構件后,服務本體向協同管理器返回查詢結果;查詢結果通過本體查詢接口轉發DL封裝器,DL封裝器將這些結果封裝為事件通知并傳送到協同空間;接到此事件通知后,通道向查詢到的所有構件發送協同請求,若某構件空閑,它即為協同請求構件的協同伙伴,消耗通道中的數據并計算,若所有查詢到的構件都處于工作狀態,通道等待這些構件之一空閑狀態的出現,若此構件完成當前工作則消耗通道中的數據并計算,計算結果經通道返回協同請求構件。
4 結束語
作為協同模型的范疇,可觀測模式出現于數據庫、多主體系統、多媒體系統等不同的研究和應用領域,因此,它反映了軟件系統的普遍需求。本文通過采用服務本體擴展基本軟件體系結構的連接件,提出了一種概念化的可觀測協同模型;與COOL、MARS、LuCe、LIME等基于知識解決協同可觀測性的協同模型相比,此模型的最大特點為其適應不同應用環境的通用性,這體現于:
a)軟件體系結構是抽象建模分布式軟件系統的重要方法,將描述分布式構件間協同的模型抽象到軟件體系結構級別為構件協同提供一個高級別抽象。
b)將構件服務抽象為服務本體為構件間的可觀測協同提供了一個概念化的解決方案,服務本體不但概括了全局系統中的構件服務,而且為其提供了一種語義級別的、統一的表達。
c)基于腳本的協同規則的設計為協同模型提供了一種泛化的協同規范,文中協同模型也支持了此協同規則概念與服務本體概念間的轉換。
Mediator是協同介質的實例化實體,眾多分布式軟件系統以其作為協同構件的協同介質[15],針對本文的協同模型也可將其協同介質實例化為mediator。若協同實體為multi-agent,底層通信設施為實際應用的網絡環境,則多主體系統的協同是文中模型的一個應用實例。今后筆者將主要致力于以下工作:描述底層通信設施的通信機制;協同介質應用實例——mediator的實現;將此協同模型應用于多主體系統的實際開發。
參考文獻:
[1]CIANCARINI P. Coordination models and languages as software integrators [J]. ACM Computing Surveys, 1996, 28(3): 300-315.
[2]BROGI A, JACQUET A M. On the expressiveness of coordination models [J]. Coordination Languages and Models, 1999, 15(2):134-149.
[3]KAWAMURA T, TAHARA Y, HASEGAWA T,et al. Bee-gent: bonding and encapsulation enhancement agent framework for development of distributed systems [J]. Journal of IEICEJ, 1999, 8(9):735-751.
[4]BARBUCEANU M, FOX M. COOL: a language for describing coordination in multi-agent systems[C]//Proc of the 1st International Conference on Multi-Agent Systems. San Francisco, CA:AAAI Press 1995: 17-25.
[5]OMICINI A, ZAMBONELLI F. TuCSoN: from tuple spaces to tuple centres [J]. Internet Research: Electronic Networking Applications and Policy, 1998, 8(5): 400-413.
[6]OMICINI A, ZAMBONELLI F. Coordination for Internet application development [J]. Autonomous Agents and Multi-Agent Systems, 1999, 2(3):251-269.
[7]CIANCARINI P, TOLKSDORF R, VITALI F. Coordinating multi-agent applications on the WWW: a reference architecture [J]. IEEE Trans on Software Eng, 1998, 24(5):458-475.
[8]CABRI G, LEONARDI L, ZAMBONELLI F, et al. MARS: A programmable coordination architecture for mobile agents [J]. IEEE Internet Computing, 2000, 4(4):26-35.
[9]DENTI E, OMICINI A, TOSCHI V. The LuCe coordination technology for MAS design and development on Internet [C]//Proc of the 4th International Conference on Coordination Languages and Models. London, UK:Springer-Verlag, 2000:305-310.
[10]MURPHY A L, PICCO C G, ROMAN G. LIME:a coordination mo-del and middleware supporting mobility of hosts and agents [J]. ACM Trans on Software Engineering and Methodology, 2006, 18(7): 613-637.
[11]AMINE T, MICHELE C. A generic coordination model for pervasive coputing based on semantic Web languages [C]//Proc of Internatio-nal Conference on Applications of Natural Language to Information System. Berlin: Springer, 2006: 265-275.
[12]TOLKSDORF R, BONTAS E P, NIXON L J B. A coordination model for the semantic Web[C]//Proc of the 2006 ACM Symposium on Applied Computing, Coordination Models, Languages and Applications. New York:ACM Press, 2006: 419- 423.
[13]PAPADOPOULOS G, ARBAB A. Configuration and dynamic reconfiguration of components using the coordination paradigm [J]. Future Generation Computer Systems, 2001, 17(8):1023-1038.
[14]MURILLO J M, RICCI A . Tuple-based coordination models in event-based scenarios [J]. Coordination Languages and Models, 2002, 15(4):53-68.
[15]WIEDERHOLD G. Mediators in the architecture of future information system [J]. IEEE Computer System, 1998, 25(12):40-52.