回顧NASA(美國國家航空航天管理局,以下簡稱美國航天局)從多個方面整合數(shù)據(jù)的成效,Ames研究中心智能系統(tǒng)部門信息共享與整合組的負責(zé)人Richard Keller并不能感到滿意。美國航天局希望在探索任務(wù)中加入數(shù)據(jù)的采集工作,包括樣本數(shù)據(jù)、照片、聲音記錄和GPS(全球定位系統(tǒng))信息,并將這些數(shù)據(jù)與衛(wèi)星圖、GIS(地理信息系統(tǒng))數(shù)據(jù)及在樣本數(shù)據(jù)中發(fā)現(xiàn)的特征信息等進行整合。
“這不僅僅需要采集各種各樣的信息,而且還要求這些數(shù)據(jù)能夠以各種格式保存,從表單文件到SQL數(shù)據(jù)庫或者網(wǎng)頁?!盧ichard Keller表達了他的期望。但數(shù)據(jù)采集工作僅僅是開頭。一旦Keller得到了這些信息,他還需要判斷這些以不同格式保存的數(shù)據(jù)之間有什么樣的關(guān)系。
“如果你在兩個不同的數(shù)據(jù)庫中,都有一個名為‘temp的字段,那么假設(shè)它們都代表同樣的意思,具有同樣的單位,可以直接進行整合,這是否合情合理呢?”Keller說,“實際上,它們可能一個代表‘溫度,而另一個則意味著‘臨時的取值。所以,為了恰如其分地合并這兩個字段,你不得不完全理解這些數(shù)據(jù)的真實含義?!?/p>
在NASA和其他大型機構(gòu)——不管是政府部門還是企業(yè),整合各種數(shù)據(jù)都面臨著很大的挑戰(zhàn),但是為了能夠方便地在內(nèi)部或者與外部的合作伙伴共享信息,這又是一個不得不面對的問題。數(shù)據(jù)整合的挑戰(zhàn)也是NASA及其他很多大型機構(gòu)轉(zhuǎn)為使用具有語義整合能力的SOA的一個重要原因。SOA由能夠通過網(wǎng)絡(luò)提供相互操作性能力的各種服務(wù)組成。盡管SOA以業(yè)務(wù)為中心的特性能夠激發(fā)人們的熱情,但它能夠讓網(wǎng)絡(luò)服務(wù)的整合與動態(tài)選擇成為可能,這一特點讓無數(shù)人產(chǎn)生了濃厚的興趣。這就讓語義技術(shù)有了用武之地,它能夠用盡可能接近自然語言的模型來處理各種如生物學(xué)和經(jīng)濟學(xué)一樣的專業(yè)問題。
語義技術(shù)
具有內(nèi)置推理能力的SOA平臺,能夠幫助企業(yè)迅速作出決策,這是基于其服務(wù)能力和根據(jù)預(yù)定義條件獲取相關(guān)信息的。從SOA本身而言,它并不具備這種能力,但加上語義技術(shù)的幫助,能夠充分地發(fā)揮出彼此的特長,幫助企業(yè)作出準(zhǔn)確及時的決策。
語義整合技術(shù)是基于底層可靠的服務(wù)和數(shù)據(jù)來作出判斷的。然而,這些技術(shù)目前還沒有完全發(fā)展成熟。Progress Software公司的DataXtend Semantic Integrator等工具可以使用普通數(shù)據(jù)模型追蹤這個問題,并驗證數(shù)據(jù)交換的可靠性。
支持本體論的SOA
所謂語義整合技術(shù),就是要在各種紛繁復(fù)雜的原始數(shù)據(jù)中找出其共同具有的匹配模式。如果能夠做到這一點,那么就可以將這種模式定義為一個原模型,然后將幾個原模型根據(jù)它們之間的關(guān)系連接起來。一種先進的語義整合方法就是Ontology(本體論)。本體論是對一個領(lǐng)域的結(jié)構(gòu)化表述——用它我們可以處理如生物學(xué)或者經(jīng)濟學(xué)之類的專業(yè)領(lǐng)域問題——其表述的基礎(chǔ)是面向?qū)ο蟮念惣案鞣N類之間的相互關(guān)系,這些類和關(guān)系可以使用基于XML的網(wǎng)絡(luò)本體論語言來定義。
使用本體論,任何一個領(lǐng)域都可以被劃分為各種類,然后再描述這些類之間的相互關(guān)系。支持本體論的SOA將這一建模技術(shù)進行了擴展,在SOA的各種服務(wù)之上建立了一個層模型,其中包含了與服務(wù)域相對應(yīng)的各種本體論類。這些對應(yīng)關(guān)系是在建立本體論的設(shè)計階段就確定的,然后在運行的時候通過服務(wù)請求的語義相似性實現(xiàn)。這里面還用到了策略思想,用來建立查找語義相似性的邏輯。
要建立支持本體論的SOA,有以下四個步驟:
第一步:分析業(yè)務(wù)流程。
業(yè)務(wù)流程通常都包含一系列基于條件的任務(wù)執(zhí)行。這些條件可能需要語義能力來展現(xiàn)其智能化的路由選擇。我們將這些地方定義為“可變點”,或者是需要推理能力來實現(xiàn)語義特性的區(qū)域。
每個任務(wù)可能都具有幾個可變因素,或者對于每個可變因素,都可能具有多個可能的取值。而且未來的業(yè)務(wù)需求可能會引入新的可變因素,或者已有可變因素有新的取值可能。例如,早期人們認(rèn)為物理形態(tài)只有固態(tài)和液態(tài)兩種,而隨著科學(xué)的發(fā)展,人們才逐漸認(rèn)可了氣態(tài)是另一種物理形態(tài)。因此,在定義本體論模型時,每一個變量都對應(yīng)一個數(shù)據(jù)字典,可以不斷地進行擴展,以保證能夠滿足未來新的業(yè)務(wù)需求。
第二步:建立本體論模型。
本體論是用術(shù)語概念和關(guān)系來定義。本體論的概念實現(xiàn)為類。本體論中的關(guān)系被定義為術(shù)語的“對象屬性”和“數(shù)據(jù)類型屬性”。從可變點組件到本體論模型中元素的映射,能夠幫助建立其本體論模型。
要準(zhǔn)確地識別出業(yè)務(wù)流程中的任務(wù)和可變點,從而最終將它們映射為本體論模型中的元素,建立起有用的模型,必須要有足夠的業(yè)務(wù)知識。開源的本體論建模編輯器和基于知識模型的框架工具,如Protege可以用于本體論建模。
第三步:創(chuàng)建上下文相關(guān)的參與者。
接下來要做的是,創(chuàng)建運行時的組件,它們在執(zhí)行時按照條件調(diào)用本體論模型中的元素,并根據(jù)上下文具體條件執(zhí)行不同的分支。實現(xiàn)這一點的一種方式是使用基于Java語言的技術(shù)。使用業(yè)務(wù)流程執(zhí)行語言(BPEL)和模塊的概念,業(yè)務(wù)流程會被封裝為一個線性流程。而使用本體論的運行時組件則映射為決定正確服務(wù)調(diào)用的端點。
通過定義“策略”和“斷言”,能夠?qū)崿F(xiàn)充分的語義特性?!安呗浴睍Q定流程的可用性,并決定端點調(diào)用的服務(wù),定義哪個地方可以使用什么服務(wù)?!皵嘌浴卑吮倔w論中映射的所有可能變量取值。運行時對包含端點的判斷是基于“斷言”與“策略”二者之間的最佳匹配原則的。
第四步:實現(xiàn)網(wǎng)絡(luò)服務(wù)。
網(wǎng)絡(luò)服務(wù)提供最終的業(yè)務(wù)服務(wù)。他們是最終的執(zhí)行點,包含了實際的業(yè)務(wù)功能。作用于網(wǎng)絡(luò)服務(wù)的策略,是需要包含新服務(wù)端點任務(wù)的必要組成部分。
改進SOA實施
語義整合被用于各行各業(yè),例如金融服務(wù)行業(yè)和醫(yī)療藥品行業(yè),而作為支持本體論的語義整合,其應(yīng)用范圍會更加廣泛。我們將建立的支持本體論的SOA體系結(jié)構(gòu)應(yīng)用在了一個典型的業(yè)務(wù)領(lǐng)域——禁毒。所有的禁毒活動都需要化學(xué)和生物樣品,這些樣品的管理包括了獲取、注冊、保存和分發(fā)。我們的本體論模型通過動態(tài)地調(diào)用不同的網(wǎng)絡(luò)服務(wù)實現(xiàn)了對樣品獲取活動的支持。
這個系統(tǒng)大致是這樣的:一個研究員請求樣品(上面的第一步),這個請求發(fā)出了一個BPEL過程(第二步),其中,這個業(yè)務(wù)流程模型的BPEL引擎包括了對一個上下文相關(guān)調(diào)用的請求(第三步),然后這個調(diào)用會與本體論模型引擎相互作用,并根據(jù)條件查詢相關(guān)的“斷言”和“策略”。結(jié)果會根據(jù)具體條件選擇適當(dāng)?shù)木W(wǎng)絡(luò)服務(wù)執(zhí)行(第四步)。
通過將專業(yè)業(yè)務(wù)領(lǐng)域的流程建模為工作流,并同時建立業(yè)務(wù)流程模型和本體論模型,本體論可以用來實現(xiàn)語義整合。本體論模型中的類和關(guān)系可以基于專業(yè)領(lǐng)域的知識和業(yè)務(wù)流程創(chuàng)建。
如果基于本體論的SOA實現(xiàn)得不好,隨著時間的推移,它可能會變得越來越復(fù)雜,而且難以維護。但如果實現(xiàn)得好,用本體論創(chuàng)建智能軟件代理就會是一種非常好的方法,能夠幫助實現(xiàn)對用戶友好度很強的軟件,幫助企業(yè)用戶更好地作出準(zhǔn)確及時的決策,加速企業(yè)內(nèi)外部信息的共享。