專利名稱:一個Web Services的實時、動態(tài)合成方法
技術(shù)領(lǐng)域:
本發(fā)明屬于Web Services技術(shù)領(lǐng)域,具體涉及到Web Services的一種實時、動合成方法。利用該合成方法,用戶只要給定的輸入和所期望的輸出,就可自動合成一個合成方案,或者可以根據(jù)用戶給定的SLA(Service Level Agreement)來合成一個最佳的Web Service,并轉(zhuǎn)換為可執(zhí)行的BPEL4WS(Business Process Execution Language for Web Service)代碼,然后由BPEL4WS引擎來執(zhí)行并返回用戶所需要的輸出。
背景技術(shù):
Web Services是當(dāng)今的研究熱點之一,也是一項發(fā)展前景頗為看好的重要技術(shù),它作為一套技術(shù)標(biāo)準(zhǔn),定義了應(yīng)用程序如何在Web上實現(xiàn)互操作性,是建立可互操作的分布式應(yīng)用程序的新平臺。人們可以用任何所喜歡的語言,在不同的平臺中編寫Web Services,然后通過Web Services的標(biāo)準(zhǔn)來對這些服務(wù)進行查詢和訪問。利用Web Services,能夠創(chuàng)建出可供任何人從任何地方使用的、功能強大的應(yīng)用程序,極大地拓展了應(yīng)用程序的功能,實現(xiàn)了軟件的動態(tài)提供。
Web Services是一種部署在Web上的對象,因此具有對象技術(shù)所承諾的所有優(yōu)點;同時,Web Services的基石是以XML(Extensible Markup Language)為主的、開放的Web規(guī)范技術(shù),具有比任何現(xiàn)有的對象技術(shù)更好的開放性。
我們看到各大技術(shù)提供商陸續(xù)地推出Web Services的構(gòu)建工具,比如Microsoft的Visual Studio.NET;IBM的Web Service Toolkit;SUN的Sun ONE等等。基于Web Service的公共技術(shù)標(biāo)準(zhǔn)SOAP/WSDL/UDDI/WSFL或是已經(jīng)成為事實行業(yè)標(biāo)準(zhǔn),或是正在制訂的進程中,各大技術(shù)提供商和傳統(tǒng)商業(yè)企業(yè)都投入到了標(biāo)準(zhǔn)的制定和應(yīng)用的架構(gòu)中去。作為Web Services的體系架構(gòu)的領(lǐng)導(dǎo)者IBM和Microsoft也開始在全球推廣Web Services技術(shù)。我們有理由相信Web Services將成為將來動態(tài)商務(wù)Web的主流技術(shù)。
雖然Web Services給應(yīng)用程序的集成帶來了方便,但是單個Web service提供的功能有限,不能滿足實際應(yīng)用的需要。要想僅僅通過單一的、簡單Web Services的交互來實現(xiàn)真正跨企業(yè)邊界的應(yīng)用集成是顯然不夠的,因為每一個Web service都具有一定的片面性,沒有也不可能有一個能滿足各種查詢需要的Web service;而如果針對所有的查詢都專門開發(fā)一個與之對應(yīng)的Web Services是代價很高的,也是不現(xiàn)實的。因此,有時為了完成某個查詢,需要對現(xiàn)有的Web Services進行合成。只有對現(xiàn)有的單個Web Services進行合成,從而形成新的Web Services以提供更多功能的時候,Web Services的真正潛力才算發(fā)揮出來,這對于提高應(yīng)用程序的集成,增加Web Services的重用度,以支持應(yīng)用過程中的長時間交互,減少Web Services的開發(fā)數(shù)量具有重要的意義。
Web Services本身具有嚴(yán)格自治性、松散耦合和協(xié)議規(guī)范性等特點,而合成的WebServices又要求具有靈活性、可重用性等,所以Web Services合成的研究工作帶來了許多新的挑戰(zhàn)。對Web Services合成的研究,目前已提出了許多方法,這些方法大體上可以分成兩大類基于工作流的合成和基于語義的合成。
基于工作流的Web Services合成是通過定義一個Web Services的執(zhí)行流程來實現(xiàn)的,在流程中詳細(xì)指明了Web Services之間的控制流和數(shù)據(jù)流。IBM和微軟2002年聯(lián)合發(fā)布的BPEL4WS結(jié)合了WSFL(Web Services Flow Language)面向圖形和XLANG結(jié)構(gòu)化的特點,因此它允許一個流程模型中可以進行“結(jié)構(gòu)化塊”和“結(jié)構(gòu)化圖形”混合描述,雖然復(fù)雜度增加了,但是其表述能力也大大加強了。BPEL4WS的模型和它的XML語法定義了企業(yè)中流程之間以及與合作伙伴之間使用Web Services進行交互的情況。同時,BPEL4WS也定義了這些交互之間的狀態(tài)、協(xié)調(diào)邏輯以及在碰到異常情況下系統(tǒng)的處理方式。商業(yè)交互協(xié)議被稱之為抽象流程,它指定了不同參與者之間的公共、可視的消息交換情況,但是并不關(guān)心所涉及的參與者的內(nèi)部行為和實現(xiàn)情況。另一方面,這個可執(zhí)行的流程類似使用基本的和結(jié)構(gòu)化的活動的工作流描述,這些活動指明了Web Services的執(zhí)行模式。BPEL4WS定義的流程模型是基于WSDL(Web Service Description Language)的,流程中的基本的調(diào)用和響應(yīng)活動是利用它們的WSDL描述來表示的。
除BPEL4WS外,其它如WSCI(Web Services Choreography Interface)、ebXML、BPML(Business Process Modeling Language)、XPDL(XML Process Definition Language)、WSMF(Web Services Modeling Framework)等也都是近年來新提出面向工作流的合成標(biāo)準(zhǔn)。利用這些標(biāo)準(zhǔn)雖然能夠較方便地定義企業(yè)內(nèi)部、企業(yè)之間的業(yè)務(wù)流程是如何相互協(xié)作的,但是這些流程需要用戶手工來明確定義,自動化程度不高,也沒有解決合成過程中的語義問題。
DAML-S是從語義Web上發(fā)展起來的一種比較典型的基語義的Web Services合成方法,它是一種由DARPA(Defense Advanced Research Projects Agency)資助的由多家研究機構(gòu)共同創(chuàng)建的用于描述Web Services的DAML+OIL本體語言。在DAML-S的官方網(wǎng)站是這樣描述DAML-S的DAML-S為Web Services供應(yīng)商提供了一套核心的標(biāo)記語言集,使之可以以一種明確的、計算機能夠解釋執(zhí)行的方式來描述Web Services的屬性和功能。DAML-S是在若干Web Services工業(yè)標(biāo)準(zhǔn)之上開發(fā)的,同時加入了豐富的類型和類信息,可以使用這些信息來描述和限制Web服務(wù)。而且它采用一種獲取Web服務(wù)的控制流和數(shù)據(jù)流的處理模型,集成了更多的類表示。這樣的語言能夠把Web Services聚合成分類的層次結(jié)構(gòu),并且還帶有類以及類實例之間關(guān)系和限制的豐富定義。這種定義良好的語義信息通過現(xiàn)有的功能強大的推理技術(shù),就能實現(xiàn)對這些結(jié)構(gòu)的自動操作。簡而言之,DAML-S使語義Web Services的自動交互成為可能。設(shè)計DAML-S是針對語義Web Services自動執(zhí)行的任務(wù),包括自動發(fā)現(xiàn)、自動調(diào)用、自動交互、自動集成、自動執(zhí)行監(jiān)控與恢復(fù)、自動模擬和驗證。
DAML-S主要由三部分組成Service Profile描述“What the services does”,指明所描述的Web Services的功能與接口,以便于服務(wù)代理能夠搜索與匹配該Web Services;Service Model描述“how the services works”,指明當(dāng)服務(wù)被調(diào)用時的操作,以便服務(wù)代理進一步匹配,以及服務(wù)合成和服務(wù)的協(xié)調(diào)工作和監(jiān)控;Service Grounding指定調(diào)用服務(wù)的具體細(xì)節(jié),比如通信協(xié)議,調(diào)用端口等。
DAML-S是利用DAML+OIL本體來對Web Services的屬性和函數(shù)進行的語義描述,并通過預(yù)先定義的處理過程來實現(xiàn)自動合成。DAML-S雖然能利用對象和對象之間的復(fù)雜聯(lián)系來定義Web Services之間的關(guān)系和約束,提供了一種比WSDL支持更多特征的語言,在一定程度上解決了合成中的語義問題,但是它所描述的概念模型之間的聯(lián)系不是很清晰,模型參數(shù)會出現(xiàn)多態(tài)現(xiàn)象,而且映射到WSDL上時限制了DAML-S本身具有的豐富表達性特點;另外,DAML-S的支持工具有限,學(xué)習(xí)起來也比較困難。
Thakkar等提出了一種基于Mediator的Web Services的AI(Artificial Intelligence)合成方法,該合成方法首先用屬性綁定形式對Web Services進行統(tǒng)一建模,并通過屬性級本體來描述這些屬性之間關(guān)系,以解決合成過程中的語義問題,然后在Mediator中使用一個前向鏈算法來自動生成一個合成方案并進行優(yōu)化,最后由一個執(zhí)行引擎來執(zhí)行該合成方案。但是他并沒有對該方法給出一個明確的合成框架,而且當(dāng)Web Services數(shù)量很大的時候,需要對合成方案進行優(yōu)化,尤其是當(dāng)需要進行多次合成時,而且前向鏈算法存在著回溯問題,總體效率并不高。另外,該合成方法也不能找出所有的合成方案,沒有辦法找出服務(wù)質(zhì)量最優(yōu)的合成方案。
發(fā)明內(nèi)容
本發(fā)明的目的在于提出一種新的Web Services實時、動態(tài)合成方法,使得用戶只需要給定輸入和所期望的輸出,系統(tǒng)就可以實時、動態(tài)地生成一個Web Service合成方案來完成用戶給定的查詢?nèi)蝿?wù),以減少合成過程中的人工干預(yù)程度,增加在線Web Services的數(shù)量,滿足實際應(yīng)用中的需要。
下面先介紹一些相關(guān)的基本概念。
Web Service是一種部署在Web上的、自包含的、模塊化的應(yīng)用程序,它可以在網(wǎng)絡(luò)中被描述、發(fā)布、查找以及調(diào)用。Web Services具有對象技術(shù)所承諾的所有優(yōu)點;同時,Web Services的基石是以XML為主的、開放的Web規(guī)范技術(shù),因此具有比任何現(xiàn)有的對象技術(shù)更好的開放性,是建立可互操作的分布式應(yīng)用程序的新平臺。
Web Services合成就是將多個自治的Web Services根據(jù)應(yīng)用需要,通過服務(wù)查找以及服務(wù)之間的接口集成來提供新的、功能更強的Web Services,或者說提供一些value-added的Web Services。一個合成的Web Services是一些獨立的、相互交互的Web Services的聚集,并把它所聚集的Web Services作為自己的組件來看待,從而獲得比原先Web Services具有更新的功能。從“粒度”意義上講,Web Services合成是對Web Services進行更大部分的封裝并把該封裝后作為一個Web Service暴露給外界;而從“順序”意義上講,合成是定義一系列Web Services的調(diào)用順序。
從Web Services合成過程來看,Web Services可以分為基本服務(wù)(elementary service)和合成服務(wù)(composite service)?;痉?wù)是指事先已經(jīng)存在、開發(fā)好的服務(wù),對于其它服務(wù)或者用戶來說,它是透明的;而合成服務(wù)是指對一些其它服務(wù)(可能是基本服務(wù),也可能是合成服務(wù))的合成,并以一個接口的形式提供給用戶或者其它服務(wù)使用。Web Services的合成方法從技術(shù)上大體可以分為靜態(tài)合成和動態(tài)合成兩種。靜態(tài)合成是在開發(fā)設(shè)計過程中就決定了Web Services之間的控制流和數(shù)據(jù)流是如何進行的;而動態(tài)合成是在系統(tǒng)運行過程中進行的,它們之間的控制流和數(shù)據(jù)流是自動產(chǎn)生的。采用靜態(tài)合成還是動態(tài)合成可根據(jù)Web Services的特點和用戶需要決定,如果合成的Web Services之間的內(nèi)在關(guān)系比較固定,則采用靜態(tài)合成;如果合成的Web Services需要經(jīng)常根據(jù)環(huán)境進行動態(tài)調(diào)整,則采用動態(tài)合成技術(shù)。動態(tài)合成以靜態(tài)合成為基礎(chǔ),而且其難度要大于靜態(tài)合成。
本發(fā)明提出的Web Services實時、動態(tài)合成方法,有一個Web Services的實時、動態(tài)合成框架,該框架包括Web Services建模、參數(shù)級本體構(gòu)造、無回溯反向鏈合成算法和基于SLA的最優(yōu)合成算法;框架中還具有建模工具、本體構(gòu)造工具、模型庫和本體庫,具體步驟為首先根據(jù)Web Services的WSDL文件進行產(chǎn)生式建模,并由模型來構(gòu)造一個參數(shù)級本體,用于消除參數(shù)之間的語義沖突;然后再根據(jù)用戶給定的輸入和所期望的輸出,利用無回塑反向鏈合成算法來找出一個合成方案,或者根據(jù)用戶的SLA要求來找出最優(yōu)的合成方案;最后可把生成的合成方案轉(zhuǎn)換為BPEL4WS代碼,調(diào)用BPEL引擎執(zhí)行并返回結(jié)果給用戶。
下面對各步驟作進一步描述(1)Web Services建模建模(見圖2)是利用一個建模引擎來進行的。通過導(dǎo)入Web Services的WSDL描述文件給建模引擎生成頭部只有單項的產(chǎn)生式作為模型,并在產(chǎn)生式上附加一些其它的WebServices的描述信息(在從合成方案向BPEL4WS轉(zhuǎn)換過程中,這些附加信息有助于轉(zhuǎn)換算法的自動進行),然后把模型存放在一個Web Services模型庫中(對應(yīng)圖1中的流程①)。
(2)參數(shù)級本體構(gòu)造本體構(gòu)造(見圖2)是利用模型庫中的Web Services模型,根據(jù)模型的語義和領(lǐng)域情況,利用本體構(gòu)造工具來構(gòu)造一個參數(shù)級(指Web Services的輸入和輸出參數(shù))本體,來解決合成過程中可能存在的語義沖突問題。也就是說在本體中定義領(lǐng)域術(shù)語、Web Services輸入輸出參數(shù)之間的語義關(guān)系,包括同名異義和異名同義等(對應(yīng)圖1中的流程②)。具體來說,該參數(shù)級本體共分為兩層,上層為領(lǐng)域內(nèi)術(shù)語,下層為Web Services的輸入、輸出參數(shù),并通過實線和虛線來關(guān)聯(lián)那些同名異義和異名同義的參數(shù)或者術(shù)語,消除合成過程中可能出現(xiàn)的語義沖突。
(3)合成合成包括兩類算法無回溯反向鏈合成算法和基于SLA的優(yōu)化合成算法。其中,無回溯反向鏈合成算法(見圖3)是首先根據(jù)用戶給出的輸入、已經(jīng)生成的模型庫和語義本體庫來計算一個輸入閉包(輸入閉包也就是用戶輸入在模型庫中所能推出的所有可能輸出),并把該輸入閉包存放在一個合成緩沖區(qū)中以用于下次合成(只要用戶輸入和Web Services模型不變,那么該輸入閉包可以被利用多次);然后通過反向推導(dǎo)來找出合成中要用到的所有Web Services(對應(yīng)圖1中的流程③)。
基于SLA的最優(yōu)合成算法(見圖4),首先根據(jù)用戶輸入和現(xiàn)有的Web Services模型計算一個推導(dǎo)網(wǎng)絡(luò),再按照用戶所期望的輸出、利用推導(dǎo)網(wǎng)絡(luò)來求出各種可能的合成方案,并可依照用戶的SLA要求選擇一條最優(yōu)的合成方案(對應(yīng)圖1中的流程③)。
(4)BPEL4WS代碼生成與執(zhí)行BPEL4WS代碼生成與執(zhí)行(見圖5)是根據(jù)上述合成算法得到的合成方案,參考WebServices模型庫的信息,可以自動把合成方案轉(zhuǎn)換為BPEl4WS代碼,并調(diào)用引擎來執(zhí)行,返回用戶所期望的輸出結(jié)果(對應(yīng)圖1中的流程④)。
圖1為Web Services實時、動態(tài)合成方法總體框架圖示。
圖2為Web Services建模與本體構(gòu)造。
圖3為無回溯反向鏈合成算法。
圖4為基于SLA的最優(yōu)合成算法。
圖5為BPEL4WS代碼的轉(zhuǎn)換與執(zhí)行。
圖6為給定3個輸入{A,B,D},輸出{E,F(xiàn)}的查詢方案圖示。其中,(a)為方案(1),(b)為方案(2),(c)為方案(3)。
圖7為4種推導(dǎo)關(guān)系圖示。其中,(a)為”∧”關(guān)系,(b)為”∨”關(guān)系,(c)為”→”關(guān)系,(d)”=>”關(guān)系。
圖8為給{A,B,D}的推導(dǎo)網(wǎng)絡(luò)圖示。
圖9為本發(fā)明的合成流程圖示。
圖中標(biāo)號1為Web Services,2為Web Services模型庫,3為語義本體庫,4為用戶,5為合成方案,6為BPEL4WS代碼,7為Web Services輸入和輸出。①為Web Services建模,②為本體構(gòu)造,③為合成算法,④為BPEL4WS代碼轉(zhuǎn)換和執(zhí)行。
具體實施例方式
本發(fā)明的具體實施步驟如下(1)首先利用protege建模工具進行建模。輸入的是Web Services的WSDL文檔,輸出的是Web Services模型。
(2)利用本體構(gòu)造工具構(gòu)造一個參數(shù)級本體,用來消除合成中可能出現(xiàn)的語義沖突。輸入的是模型庫,輸出的是一個參數(shù)級本體庫。
(3)根據(jù)用戶的輸入、模型庫和參數(shù)級本體,計算一個輸入閉包,并把該閉包放入一個合成緩沖區(qū)中,以防止逆向推導(dǎo)時產(chǎn)生回溯,并加快合成速度。
(4)根據(jù)用戶的輸入和所期望的輸出,利用無回溯反向鏈合成算法來找出一條合成方案。使得通過該合成方案中,可以從用戶給定的輸入中,得到用戶所需要的輸出。
(5)根據(jù)用戶的輸入和期望的輸出,可以事先計算一個推導(dǎo)網(wǎng)絡(luò)。在該推導(dǎo)網(wǎng)絡(luò)的基礎(chǔ)上,利用基于SLA的最優(yōu)合成算法來找出所有合成方案,并從中選擇一條SLA最優(yōu)合成方案。
(6)兩個合成算法所生成的合成方案都可以自動轉(zhuǎn)換為可執(zhí)行的BPEL4WS代碼,并調(diào)用BPEL4WS引擎來執(zhí)行,返回執(zhí)行結(jié)果。
下面結(jié)合兩個例子來詳細(xì)介紹整個合成方法。
實施例1說明無回溯反向鏈合成方法的詳細(xì)過程,該例子中只找出一條合成方案,并沒有找出所有的合成方案;實施例2描述了基于SLA的最優(yōu)合成方法的詳細(xì)過程。首先找出所有的合成方案,然后根據(jù)用戶的SLA要求選擇一條最佳的合成方案。
實施例1在股票行業(yè)中,用戶想通過一個“跨國公司名字”和“某一特定時刻”,找出該公司在某一股市(比如紐約股市、倫敦股市)的股票折合成人民幣后的價格以及該公司所在國家名稱和國家其它信息。不妨假定有以下幾個Web Services①Country(CountryCodei,CountryNameo,Infoo)②UStoRMB(USpricei,Datetimei,RMBpriceo)③UKtoRMB(UKpricei,GivenDatetimei,RMBpriceo)④NewYorkStock(CompanyIDi,SomeDatetimei,USpriceo)⑤YellowPages(CompanyNamei,CompanyIDo,Addresso,CountryIDo,Phoneo,Infoo)我們可把Web Services寫成帶有綁定模式的謂詞形式,謂詞中的屬性的上標(biāo)i表示的是Web Services的輸入?yún)?shù),上標(biāo)o表示該Web Services的輸出結(jié)果項。例如,Country服務(wù)要求輸入一個“國家編碼”,返回“國家名稱”和“國家其它信息”。UStoRMB服務(wù)要求輸入“美元價格”和“日期時間”,返回對應(yīng)的“人民幣價格”。同樣,UKtoRMB也是要求輸入“英鎊價格”和“給定時刻”,返回對應(yīng)的“人民幣價格”。NewYorkStock服務(wù)是查詢某一個公司在紐約股市的股票價格,它要求輸入“公司代碼”和“某一日期時間”,則返回該公司在紐約的“股票價格(美元)”;最后,YellowPages是一個企業(yè)黃頁服務(wù),通過輸入“公司名稱”,可以獲得有關(guān)企業(yè)的一些基本信息,比如“公司代碼”,“地址”,“國家代碼”,“電話”和“公司其它信息”等。
利用上面的幾個Web Services,用戶可以進行各種查詢。比如查詢企業(yè)黃頁,某公司的股票價格,人民幣匯率等,但是上述的每一個Web service都具有一定的片面性。沒有也不可能有一個能滿足各種查詢需要的Web service,而如果針對所有的查詢都專門開發(fā)一個與之對應(yīng)的Web Services是代價很高的,也不現(xiàn)實。因此,有時為了完成某個查詢,需要對現(xiàn)有的基本W(wǎng)eb Services進行合成。比如要找出某一跨國公司在某一給定時刻在紐約股市的股票折合成人民幣后的價格以及該公司所在國家名稱和國家的其它信息,需要分以下幾步來進行查詢(1)根據(jù)需要,對輸入分解;此例可分解為“公司名稱”和“某一特定時刻”;(2)利用YellowPages服務(wù),輸入公司名稱獲取公司代碼和國家代碼;(3)利用NewYorkStock服務(wù),輸入公司代碼和給定的時刻,獲取該公司在紐約股市的股票美元價格;(4)利用UStoRMB服務(wù),根據(jù)給定日期把股票美元價格轉(zhuǎn)換成人民幣價格;(5)利用Country服務(wù),根據(jù)國家代碼查詢出該國家的名稱和國家其它信息;(6)合并股票人民幣價格、國家名稱和國家其它信息,返回給用戶。
由此例可以看出,雖然利用現(xiàn)有幾個的Web Services可以完成該查詢?nèi)蝿?wù),但是需要分多步來完成,不但查詢分解以及分解后的每一步查詢都要用戶來進行,對查詢結(jié)果的合并也要由用戶自己來處理,而且其中存在的語義問題(如NewYorkStock中的輸入項“SomeDatetime”和UStoRMB中的輸入項“DateTime”雖然形式不一,但實際上表示的是同一個意思)也需要用戶自己解決,這是一個費時、費事的手工查詢工作。因此,如果能對現(xiàn)有的Web Services進行自動、動態(tài)合成,就可避免繁瑣的手工查詢分解、查詢合并和語義問題處理的工作,這對于提高應(yīng)用程序的集成,增加Web Services的重用度,減少Web Services的開發(fā)數(shù)量具有重要的意義。
(1)Web Service產(chǎn)生式建模產(chǎn)生式建模,是把一個Web Service表示為一個或者多個產(chǎn)生式,其體部和頭部分別表示W(wǎng)eb Service的輸入和輸出。由于這種建模采用產(chǎn)生式的形式,清晰直觀地區(qū)分了輸入和輸出,更適合于使用人工智能的各種推理控制算法進行合成。
假定一個Web service要求m個輸入I1,I2,...,Im,可產(chǎn)生n個輸出O1,O2,...,On,那么它就可以表示為n個產(chǎn)生式I1&I2&...&Im—>O1I1&I2&...&Im—>O2
……I1&I2&...&Im—>On這樣的話,前面例子中的Web Services共有10個輸出項,可以表示成如下的10個產(chǎn)生式表1
(2)參數(shù)級本體構(gòu)造本發(fā)明采用的是一種稱為參數(shù)級本體來描述模型參數(shù)之間的語義關(guān)系,參數(shù)級本體也就是根據(jù)Web Services模型的輸入輸出參數(shù)(即產(chǎn)生式的頭部項和體部項)建立的本體,該本體分為兩層即領(lǐng)域模型參數(shù)和Web Services模型參數(shù)。在下層的模型參數(shù)之中,同名異義和異名同義的參數(shù)之間分別用虛線和實線連接;另外在下層的模型參數(shù)上附加一個模型標(biāo)號用于指明該參數(shù)是屬于哪個模型(產(chǎn)生式)。這樣在Web Services模型數(shù)量很多的時候,也可以很方便地通過底層參數(shù)之間的實線連接或者通過領(lǐng)域模型找出異名同義的參數(shù),也可以通過底層參數(shù)的虛線連接方便地找出用同名異義的參數(shù)。也就是說,給定任何一個參數(shù),就可以知道該參數(shù)是屬于哪個Web service模型以及它在領(lǐng)域模型中的意義是什么。
(3)合成緩沖區(qū)設(shè)置一個合成緩沖區(qū),用來存放經(jīng)過語義沖突處理后的Web Services模型和算法生成輸入閉包。緩沖區(qū)由兩個部分組成,一個是持久保存的存儲區(qū),另一個是臨時內(nèi)存區(qū)。每當(dāng)進行一次合成,就把數(shù)據(jù)從持久存儲區(qū)調(diào)入到臨時內(nèi)存區(qū)。Web Services模型放在合成緩沖區(qū)一方面是為了加快合成的速度,另一方面是為了不改變模型庫中模型本來的形式。而輸入閉包存放在合成緩沖區(qū)是為了下次合成時再次使用,以避免重新計算同樣的輸入閉包,提高算法的合成效率。
在算法合成開始之前,語義處理模塊先利用Web Services模型描述庫和本體庫,把Web Services模型描述庫中的某些輸入項和輸出項(產(chǎn)生式的體部項和頭部項)替換為領(lǐng)域模型參數(shù)(領(lǐng)域術(shù)語),消除同名異義、異名同義等語義問題并放入合成緩沖區(qū)后,然后再利用無回溯反向鏈算法進行合成。
(4)無回溯反向鏈算法在一般反向鏈算法中,如果頭部相同的產(chǎn)生式很多,則在算法中可能會導(dǎo)致大量回溯而影響算法合成的效率。為了防止產(chǎn)生回溯,本發(fā)明采用先根據(jù)用戶的輸入求出一個輸入閉包,如果在反向鏈合成過程中碰到滿足當(dāng)前匹配的產(chǎn)生式有多個時,則選擇體部包含在輸入閉包中的產(chǎn)生式進行合成。假定I是用戶輸入集,s是Web Services模型輸入輸出參數(shù)的一個參數(shù),我們定義I的輸入閉包ε_Closure(I)為①若s∈I,則s∈ε_Closure(I);②若s∈I,s′是從s出發(fā),利用模型可以得到的輸出,那么s′∈ε_Closure(I)。
無論頭部相同的產(chǎn)生式有多少,輸入閉包最多只需計算一次,如果在合成過程中沒有遇到匹配當(dāng)前目標(biāo)有多個產(chǎn)生式的情況,則不需要計算輸入閉包。無回溯反向鏈算法的步驟是從用戶所想要得到的查詢結(jié)果開始,試圖找出能得到該結(jié)果所需要的所有產(chǎn)生式。如果和當(dāng)前目標(biāo)匹配的產(chǎn)生式有多個,則先去緩沖區(qū)查找有無對該用戶輸入的輸入閉包,若沒有則計算出輸入閉包,并放入緩沖區(qū)中,然后選用產(chǎn)生式體部項全部包含在輸入閉包中的產(chǎn)生式進行合成。輸入閉包只需調(diào)用一次,只要用戶的輸入和模型描述庫不變,以后的合成都可以從緩沖區(qū)中取出使用。
無回溯反向鏈算法最后得到的是一個擴展的DAG圖,該圖可以方便、自動地轉(zhuǎn)換為BPEl4WS代碼,并調(diào)用BPEL4WS來執(zhí)行。
實施例2假定有以下6個Web Services,每一個Web Service都接受一定的輸入,并產(chǎn)生一定的輸出(這里我們假定每個Web Service只有一個操作),而且每個Web Service具有一定的執(zhí)行代價。如下表所示表2
其中,WSi(Ai,Bi,Co)表示該Web Service要求輸入兩個參數(shù)’A’和’B’,輸出一個’C’,它的執(zhí)行代價為0.5元/次;而WS3(Di,Co,Eo)則意味著該Web Service輸入一個參數(shù)’D’,則會返回’C’和’E’兩個輸出,它的執(zhí)行代價為1.5元/次。其余WSi的含義類似。
例如“用戶給定三個輸入{A,B,D},要得出一個輸出{E,F(xiàn)}”,要完成這個查詢,在現(xiàn)有的Web Services下,用戶可有三種不同的查詢方法,如圖6所示在查詢過程中,我們假定這些Web Services的輸入/輸出參數(shù)具有唯一性,也就是說這些參數(shù)之間不存在“同名異義”和“異名同義”的情況。上面的3個方案中,方案(1)的總執(zhí)行代價最小。由此例可以看出,在完成同樣任務(wù)的前提下,如何選擇一條執(zhí)行代價最小查詢方案以滿足用戶實際需要也具有重要的意義。
為了找出所有的合成方案,并根據(jù)需要從中選擇一個優(yōu)化的合成方案,本發(fā)明事先計算一個推導(dǎo)網(wǎng)絡(luò),該推導(dǎo)網(wǎng)絡(luò)中存放了各種可能合成方案。在計算推導(dǎo)網(wǎng)絡(luò)之前,首先也要進行建模和參數(shù)級本體的構(gòu)造,以消除合成過程中的語義沖突。在建模過程中,需要把Web Services的執(zhí)行代價等SLA信息附加到模型中去(下表所示),以便在以后的步驟作為選擇合成方案的依據(jù)。
表3
一個給定“輸入集合”在某個“規(guī)則庫(模型庫)”中的推導(dǎo)網(wǎng)絡(luò)實際上是該“輸入集合”在該“規(guī)則庫(模型庫)”中推導(dǎo)過程的一個閉包,也就是該“輸入集合”的所有可能推導(dǎo)的一個集合。與一般的其它網(wǎng)絡(luò)不同,推導(dǎo)網(wǎng)絡(luò)中允許存在回路,并且允許有多個起始節(jié)點和終止節(jié)點。形式地,我們可以把推導(dǎo)網(wǎng)絡(luò)定義為一個三元組DNet(PN,RN,DR),其中①PN(parameter node)是網(wǎng)絡(luò)中的輸入輸出參數(shù)節(jié)點的結(jié)合。其中有若干個節(jié)點為起始節(jié)點,我們用SPN來表示;②RN(rule node)是網(wǎng)絡(luò)中所有規(guī)則節(jié)點(模型代號)的集合;③DR(deduce relationship)是網(wǎng)絡(luò)中的推導(dǎo)關(guān)系的集合,這些推導(dǎo)關(guān)系中主要包括4種,即”∧”關(guān)系、”∨”關(guān)系、”→”關(guān)系和”=>”關(guān)系,其中“∧”關(guān)系是作用于規(guī)則節(jié)點前的一種”and”關(guān)系。(PN1,PN2,...,PNn)∧RNx意味著只有當(dāng)輸入?yún)?shù)PN1,PN2,...,PNn都同時具備的時候,規(guī)則節(jié)點RNx才可以執(zhí)行下去。事實上,如果規(guī)則節(jié)點RNx的前驅(qū)輸入?yún)?shù)的個數(shù)大于1,那么它們之間肯定是一種“∧”關(guān)系,如下圖7(a)所示。
“∨”關(guān)系是作用于參數(shù)前的一種”or”關(guān)系。(RN1,RN2,...,RNn)∨PNx意味著RN1,RN2,...,RNn中任何一個規(guī)則節(jié)點都可以推出參數(shù)節(jié)點PNx。事實上,如果參數(shù)PNx的前驅(qū)規(guī)則的個數(shù)大于1,那么它們之間肯定是一種”∨”關(guān)系,如下圖7(b)所示。
“→”關(guān)系是“∧”關(guān)系n=1的一種特殊情況。在(PN1,PN2,...,PNn)∧Rx中,當(dāng)n=1時就變?yōu)椤薄标P(guān)系,即PNx→RNx,它意味著當(dāng)輸入?yún)?shù)節(jié)點PNx具備的時候,規(guī)則節(jié)點RNx就可以以執(zhí)行下去。事實上,這種關(guān)系對應(yīng)于規(guī)則節(jié)點中的輸入?yún)?shù)只有一個時候的情況,如圖7(c)所示。
“=>”關(guān)系是“∨”關(guān)系中n=1的一種特殊情況。在(RN1,RN2,...,RNn)∨PNx中,當(dāng)n=1時就變?yōu)椤保剑尽标P(guān)系,即RNx=>PNx,它意味著規(guī)則RNx可以推出輸出參數(shù)PNx。事實上,當(dāng)模型庫中如果只有一條規(guī)則可以得出某個輸出參數(shù)時,那么該規(guī)則和該參數(shù)就具有這種”=>”關(guān)系,如圖7(d)所示。
我們考慮表3的7個規(guī)則(模型){①A,B->C;②D->C;③D->E;④D,C->E;⑤E->A;⑥B,G->D;⑦B->F;},那么在這個規(guī)則集合中,可以得出給定輸入{A,B,D}的推導(dǎo)網(wǎng)絡(luò)如圖8所示,其中規(guī)則⑥B,G->D在推導(dǎo)網(wǎng)絡(luò)中不出現(xiàn),因為G不在輸入中,該規(guī)則也不出現(xiàn)在A,B,D可能的推導(dǎo)中。
在該推導(dǎo)網(wǎng)絡(luò)為中,PN,RN和DR的值分別為PN={A,B,C,D,E,F(xiàn)},其中SPN={A,B,D};RN{①,②,③,④,⑤,⑦};DR={(A,B)∧①;D→②;(①,②)∨C;(C,D)∧④;D→③;(③,④)∨E;E→⑤;⑤=>A;B→⑦;⑦=>F;}由此可以看出,推導(dǎo)網(wǎng)絡(luò)DR中存放了網(wǎng)絡(luò)中的全部可能的推導(dǎo)關(guān)系,因此給定任意一個節(jié)點,都可以在該推導(dǎo)網(wǎng)絡(luò)中逆向找出該節(jié)點的所有可能推導(dǎo)路徑。例如在該推導(dǎo)網(wǎng)絡(luò)中節(jié)點E的推導(dǎo)路徑有三條{①A,B->C;④D,C->E;}{②D->C;④D,C->E;}{③D->E;}為了能夠在用戶給定的輸入/期望輸出的條件下,找出現(xiàn)有的Web Services模型庫中存在的所有可能合成方案,并選擇一條執(zhí)行代價最優(yōu)的合成方案,基于SLA的最優(yōu)合成主要分為以下4個步驟(1)根據(jù)用戶的輸入和Web Services模型庫求出推導(dǎo)網(wǎng)絡(luò);其步驟是根據(jù)用戶給定的輸入集合,利用Web Services模型庫來進行各種可能推導(dǎo),在推導(dǎo)過程中記錄各種推導(dǎo)關(guān)系DR,直到推導(dǎo)關(guān)系集合DR不再增大為止;(2)在找出用戶期望輸出集合的所有合成方案之前,首先必須為單個輸出求出其所有合成方案。算法在搜索過程中利用一個棧來存放所生成的合成方案,并采用逆向的方法來進行搜索。在搜索過程中,碰到“參數(shù)節(jié)點”和“規(guī)則節(jié)點”分別做不同的進棧和退棧處理,如果碰到“∨”關(guān)系,則需要從棧頂派生出多個新的合成方案來代替棧頂?shù)姆桨?。如果棧頂合成方案的所有起始?jié)點全部包含在用戶輸入中,則輸出該棧頂合成方案。
(3)上一步是求解單個輸出的所有合成方案,但是用戶所期望的輸出往往具有多個,因此當(dāng)用戶所期望輸出多于一個的時候,則需要分別為每一個輸出求出其所有合成方案,然后把各個輸出的合成方案進行自然乘積的合并,就可以求得整個輸出集合的所有合成方案。
(4)在求出用戶給定輸入/輸出條件下的所有合成方案之后,就可以根據(jù)用戶的SLA要求分別計算各個方案的SLA(如執(zhí)行代價、響應(yīng)時間等)情況。合成方案的SLA計算非常直觀,只需要找出各個合成方案中各個Web Services,并對各個Web Services的SLA進行求和。
從上面的介紹可以看出,整個合成過程的可以歸納為如下圖所示的幾個階段,用戶只要給定一些輸入和所期望的輸出,那么就可以在已有的Web Services模型庫下,根據(jù)用戶的SLA要求自動生成一個最優(yōu)的合成方案。由于生成的合成方案中規(guī)則節(jié)點只存在單個輸出的情況(它實際上可以看成是一個擴充的DAG圖),所以與無回溯反向鏈算法生成的合成方案一樣,完全可以利用改進的拓樸排序算法將合成方案自動轉(zhuǎn)換為BPEL4WS代碼,并調(diào)用BPEL4WS引擎來執(zhí)行,返回所需要結(jié)果,整個過程如圖9所示。
權(quán)利要求
1.一種Web Services的實時、動態(tài)合成方法,其特征在于有一個Web Services的實時、動態(tài)合成框架,該框架中包括Web Services建模、參數(shù)級本體構(gòu)造、無回溯反向鏈合成算法和基于SLA的最優(yōu)合成算法;框架中還具有建模工具、本體構(gòu)造工具、模型庫和本體庫,具體步驟為首先根據(jù)Web Services的WSDL文件進行產(chǎn)生式建模,并由模型來構(gòu)造一個參數(shù)級本體,用于消除參數(shù)之間的語義沖突;然后再根據(jù)用戶給定的輸入和所期望的輸出,利用無回塑反向鏈合成算法來找出一個合成方案,或者根據(jù)用戶的SLA要求來找出最優(yōu)的合成方案;最后把生成的合成方案轉(zhuǎn)換為BPEL4WS代碼,調(diào)用BPEL引擎執(zhí)行并返回結(jié)果給用戶。
2.根據(jù)權(quán)利要求1所述的合成方法,其特征在于所述產(chǎn)生式建模是通過導(dǎo)入WebServices的WSDL描述文件給建模引擎生成頭部只有單項的產(chǎn)生式作為模型,并在產(chǎn)生式上附加一些其它的Web Services的描述信息,然后把模型存放在一個Web Services模型庫中。
3.根據(jù)權(quán)利要求1所述的合成方法,其特征在于所述構(gòu)造參數(shù)級本體中,該參數(shù)級本體共分為兩層,上層為領(lǐng)域內(nèi)術(shù)語,下層為Web Services的輸入、輸出參數(shù),并通過實線和虛線來關(guān)聯(lián)那些同名異義和異名同義的參數(shù)或者術(shù)語,消除合成過程中可能出現(xiàn)的語義沖突。
4.根據(jù)權(quán)利要求1所述的合成方法,其特征在于所述的無回溯反向鏈合成算法是首先根據(jù)用戶給出的輸入、已經(jīng)生成的模型庫和語義本體庫來計算一個輸入閉包,并把該輸入閉包存放在一個合成緩沖區(qū)中,用于下次合成;然后通過反向推導(dǎo)來找出合成中要用到的所有Web Services;所述的基于SLA的最優(yōu)合成算法,首先根據(jù)用戶輸入和現(xiàn)有的WebServices模型計算一個推導(dǎo)網(wǎng)絡(luò),再按照用戶所期望的輸出,利用推導(dǎo)網(wǎng)絡(luò)來求出各種可能的合成方案,并依照用戶的SLA要求選擇一條最優(yōu)的合成方案。
5.根據(jù)權(quán)利要求1所述的合成方法,其特征在于設(shè)置有一個用于存放經(jīng)過語義沖突處理后Web Services模型和算法生成輸入閉包的合成緩沖區(qū),該區(qū)分為持久保存的存儲區(qū)和臨時內(nèi)存區(qū),每當(dāng)進行一次合成,就把數(shù)據(jù)從持久存儲區(qū)調(diào)到臨時內(nèi)存區(qū)。
6.根據(jù)權(quán)利要求4所述的合成方法,其特征在于所述的推導(dǎo)網(wǎng)絡(luò)定義為一個三元組DNet(PN,RN,DR),其中①PN是網(wǎng)絡(luò)中的輸入輸出參數(shù)節(jié)點的結(jié)合,其中有若干個節(jié)點為起始節(jié)點,用SPN來表示;②RN是網(wǎng)絡(luò)中所有規(guī)則節(jié)點的集合;③DR是網(wǎng)絡(luò)中的推導(dǎo)關(guān)系的集合,這些推導(dǎo)關(guān)系中主要包括4種,即”∧”關(guān)系、”∨”關(guān)系、”→”關(guān)系和”=>”關(guān)系,其中“∧”關(guān)系是作用于規(guī)則節(jié)點前的一種”and”關(guān)系;“∨”關(guān)系是作用于參數(shù)前的一種”or”關(guān)系;“→”關(guān)系是“∧”關(guān)系n=1的一種特殊情況;“=>”關(guān)系是“∨”關(guān)系中n=1的一種特殊情況。
7.根據(jù)權(quán)利要求6所述的合成方法,其特征在于基于SLA的最優(yōu)合成的步驟如下(1)根據(jù)用戶的輸入和Web Services模型庫求出推導(dǎo)網(wǎng)絡(luò);其步驟是根據(jù)用戶給定的輸入集合,利用Web Services模型庫來進行各種可能推導(dǎo),在推導(dǎo)過程中記錄各種推導(dǎo)關(guān)系DR,直到推導(dǎo)關(guān)系集合DR不再增大為止;(2)在找出用戶期望輸出集合的所有合成方案之前,首先為單個輸出求出其所有合成方案;算法在搜索過程中利用一個棧來存放所生成的合成方案,并采用逆向的方法來進行搜索;在搜索過程中,碰到“參數(shù)節(jié)點”和“規(guī)則節(jié)點”分別做不同的進棧和退棧處理,如果碰到“∨”關(guān)系,則需要從棧頂派生出多個新的合成方案來代替棧頂?shù)姆桨福蝗绻麠m敽铣煞桨傅乃衅鹗脊?jié)點全部包含在用戶輸入中,則輸出該棧頂合成方案;(3)當(dāng)用戶所期望輸出多于一個的時候,需要分別為每一個輸出求出其所有合成方案,然后把各個輸出的合成方案進行自然乘積的合并,即求得整個輸出集合的所有合成方案;(4)根據(jù)用戶的SLA要求分別計算各個方案的SLA情況,找出各個合成方案中各個Web Services,并對各個Web Services的SLA進行求和。
全文摘要
本發(fā)明是一種Web Services的實時、動態(tài)合成方法。包括Web Services產(chǎn)生式建模、參數(shù)級本體構(gòu)造、無回溯反向鏈合成算法和基于SLA的最優(yōu)合成算法。合成的流程為首先根據(jù)Web Services的WSDL文件進行產(chǎn)生式建模,并由模型來構(gòu)造一個參數(shù)級本體,用于消除參數(shù)之間的語義沖突;然后根據(jù)用戶給定的輸入和所期望的輸出,利用無回塑反向鏈合成算法找出一個合成方案,或者根據(jù)用戶的SLA要求找出最優(yōu)的合成方案;最后把生成的合成方案轉(zhuǎn)換為BPEL4WS代碼,調(diào)用BPEL引擎執(zhí)行并返回結(jié)果給用戶。本發(fā)明只需用戶要給出一定的輸入和所期望的輸出,就可實時、動態(tài)地在現(xiàn)有的Web Services基礎(chǔ)上合成一個新的Web Service,來完成所要求的查詢。
文檔編號G06F9/44GK1752928SQ200510029089
公開日2006年3月29日 申請日期2005年8月25日 優(yōu)先權(quán)日2005年8月25日
發(fā)明者顧寧, 劉家茂, 吳宇進, 崔俊濤, 朱一聞, 葉煒 申請人:復(fù)旦大學(xué)