專利名稱:基于方面的可靠web服務(wù)組裝方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機技術(shù)領(lǐng)域,特別是指一種基于方面的可靠WEB服務(wù)組裝方法和系統(tǒng)。
背景技術(shù):
Web服務(wù)組裝逐漸成為互聯(lián)網(wǎng)環(huán)境下的首選的應(yīng)用程序開發(fā)方案。Web服務(wù)是一種平臺獨立、松耦合、自包含、可編程、并依賴于WEB技術(shù)的應(yīng)用程序,Web服務(wù)的描述、訪問、檢索與發(fā)布均基于標準XML技術(shù)以及一系列的Web技術(shù)標準。這些技術(shù)及標準有效地屏蔽了運行環(huán)境的異構(gòu)性,使得Web服務(wù)可以直接部署和運行于Internet之上。由于單個的Web服務(wù)所實現(xiàn)的功能往往有限,無法滿足實際業(yè)務(wù)需求,因此需要將多個Web服務(wù)協(xié)調(diào)并組織起來構(gòu)造新的Web服務(wù)(復合服務(wù)),而這一過程就被稱為Web服務(wù)組裝。目前,面向過程的Web服務(wù)組裝相對成熟,例如Business Process Execution Language (BPEL)就是一個基于XML技術(shù)的面向過程、可執(zhí)行的Web服務(wù)組裝語言,在學術(shù)界和工業(yè)界受到廣泛重視,并有相應(yīng)的工具支持?;赪eb服務(wù)組裝實現(xiàn)的系統(tǒng)可以快速地重整和優(yōu)化業(yè)務(wù),較好地解決了異構(gòu)分布環(huán)境下數(shù)據(jù)集成與應(yīng)用程序集成等難題。另一方面,與傳統(tǒng)的應(yīng)用程序相比,Web服務(wù)組裝具有一些新特點。主要表現(xiàn)為(I)Web服務(wù)及基于服務(wù)組裝實現(xiàn)的系統(tǒng)往往部署和運行于一個動態(tài)、開放的環(huán)境中。(2)基于服務(wù)組裝的系統(tǒng)所要實現(xiàn)的業(yè)務(wù)過程往往是動態(tài)變化的。·
(3)基于服務(wù)組裝的系統(tǒng)往往要實現(xiàn)一些關(guān)鍵的業(yè)務(wù)流程。由于Web服務(wù)組裝的上述特點,如何保證基于Web服務(wù)組裝實現(xiàn)的系統(tǒng)的可靠性成為一個關(guān)鍵問題?,F(xiàn)有技術(shù)中,事務(wù)提供了一種有效的解決方案。事務(wù)的概念起源于數(shù)據(jù)庫領(lǐng)域,其目的是保證以數(shù)據(jù)為中心的應(yīng)用程序的可靠性。目前,已有關(guān)于Web服務(wù)事務(wù)的相關(guān)標準,比如WS-Transaction協(xié)議族定義了事務(wù)協(xié)調(diào)的框架(WS-Coordination,簡稱WS-C)與兩種事務(wù)類型,即用于短時間的原子事務(wù)WS-AtomicTransaction (簡稱WS-AT)和用于長時間的業(yè)務(wù)活動WS-BusinessActivity (簡稱WS-BA)。由于WS-Transaction協(xié)議族是Web服務(wù)標準協(xié)議棧的組成部分,因此獲得更多的關(guān)注并有相應(yīng)的中間件支持。雖然圍繞著Web服務(wù)事務(wù)協(xié)議及模型的相關(guān)研究已取得一定進展,然而現(xiàn)有標準并沒有明確定義如何將服務(wù)組裝語言BPEL與Web服務(wù)事務(wù)進行集成的問題。針對面向服務(wù)組裝的事務(wù)集成問題,現(xiàn)有的研究一般從語言層或運行時環(huán)境入手提出一些解決方案。但是,這些解決方案都是是針對特定實例的或者需要擴展標準服務(wù)組裝語言BPEL及其執(zhí)行引擎,存在著不易維護、技術(shù)實現(xiàn)復雜等缺點。具體來說,基于Web服務(wù)組裝實現(xiàn)一些大型復雜的業(yè)務(wù)流程時,這些系統(tǒng)往往需要保證關(guān)鍵的業(yè)務(wù)環(huán)節(jié)正確執(zhí)行。為了增強系統(tǒng)的可靠性,必須對這些關(guān)鍵業(yè)務(wù)環(huán)節(jié)提供事務(wù)機制的支持。目前,在服務(wù)組裝語言中集成事務(wù)的實現(xiàn)技術(shù)一般從服務(wù)組裝規(guī)格說明層出發(fā),使得解決方法是基于特定實例的;或者從擴展服務(wù)組裝語言及執(zhí)行引擎的角度考慮,使得解決方案缺乏普適性。例如,在服務(wù)組裝規(guī)格說明中為業(yè)務(wù)流程編寫事務(wù)邏輯處理代碼,即采用硬編碼的方式將事務(wù)操作添加到核心業(yè)務(wù)當中。由于事務(wù)邏輯代碼與業(yè)務(wù)邏輯代碼混雜在一起,導致難以理解、難以維護的問題,并且需要為每個服務(wù)組裝實例編寫事務(wù)處理代碼,工作量大。再如,通過擴展服務(wù)組裝語言及其執(zhí)行引擎,在標準的服務(wù)組裝語言元素之外,添加用于處理事務(wù)邏輯的元素,并通過擴展執(zhí)行引擎使得對擴展后的服務(wù)組裝語言支持。由于對服務(wù)組裝語言和執(zhí)行引擎進行了擴展,造成解決方案特定于語言及實現(xiàn)、無法在其他執(zhí)行引擎上運行的問題。
發(fā)明內(nèi)容
本發(fā)明的目的是提出一種基于方面的可靠WEB服務(wù)組裝方法和系統(tǒng)。 為了達到上述目的,本發(fā)明的實施例提供了一種基于方面的可靠WEB服務(wù)組裝方法,包括步驟I、建立基于方面的面向服務(wù)組裝的事務(wù)集成框架;步驟2、開發(fā)基于方面的事務(wù)集成框架元模型,其中所述事務(wù)集成框架元模型支持不同的事務(wù)策略的定義;所述的事務(wù)策略用來指明事務(wù)操作、所屬的事務(wù)類型,以及該操作的對應(yīng)輸入變量與輸出變量;織入策略用來描述某個事務(wù)策略應(yīng)被織入的位置,以及織入類型;步驟3、對所述基于方面的事務(wù)策略進行驗證;步驟4、以預(yù)處理的方式將基于方面的事務(wù)策略與原始服務(wù)組裝編織起來,在服務(wù)組裝規(guī)格說明中織入標準的事務(wù)操作調(diào)用。其中,所述步驟I具體為將基于方面的事務(wù)策略與原始服務(wù)組裝轉(zhuǎn)化為事務(wù)化服務(wù)組裝;實現(xiàn)Web服務(wù)事務(wù)管理中間件;擴展參與組裝的Web服務(wù)支持事務(wù)協(xié)議。其中,所述將基于方面的事務(wù)策略與原始服務(wù)組裝轉(zhuǎn)化為事務(wù)化服務(wù)組裝具體為根據(jù)預(yù)設(shè)的映射規(guī)則將事務(wù)策略轉(zhuǎn)化為不同的事務(wù)操作接口調(diào)用;其中所述事務(wù)策略包括事務(wù)協(xié)議類型與織入類型。其中,所述的Web服務(wù)事務(wù)管理中間件基于Web服務(wù)事務(wù)協(xié)議的規(guī)格說明實現(xiàn),以Web服務(wù)的形式提供事務(wù)協(xié)議支持,提供統(tǒng)一的調(diào)用接口。其中,所述的擴展參與組裝的Web服務(wù)支持事務(wù)協(xié)議通過擴展已有Web服務(wù)和增加支持不同的事務(wù)協(xié)議的接口實現(xiàn);其中所述參與服務(wù)組裝的Web服務(wù)提供并實現(xiàn)事務(wù)協(xié)議接口以被Web服務(wù)事務(wù)管理中間件調(diào)用。其中,所述步驟2具體為采用面向方面編程思想表達事務(wù)集成時的基本概念及其聯(lián)系,采用XML語法格式表示;所述的基于方面的事務(wù)集成框架元模型用來刻畫采用AOP表達事務(wù)集成時的基本概念及其聯(lián)系,包括方面、切入點、通知、變量、事務(wù)、參數(shù)、方面集合、切入點集合、通知集合、變量集合、事務(wù)集合、參數(shù)集合;變量、事務(wù)及參數(shù)構(gòu)成的事務(wù)策略、方面、切入點及通知構(gòu)成的織入策略;變量、事務(wù)及參數(shù)之間的關(guān)系、方面、切入點及通知之間的關(guān)系通過XML的屬性引用和層次結(jié)構(gòu)建立;事務(wù)策略與織入策略的關(guān)系通過XML的層次結(jié)構(gòu)建立;這些概念與聯(lián)系通過XML Schema進行定義與表不。其中,所述步驟3具體為依據(jù)BPEL語法、事務(wù)結(jié)構(gòu)與層次提供不同形式的驗證方式,包括語法驗證、變量驗證、事務(wù)驗證和層次驗證,以確保基于方面的事務(wù)策略在織入前是正確的;所述的語法驗證是指對基于方面的事務(wù)策略的XML元素、屬性、以及元素之間的層級關(guān)系進行驗證;所述的變量驗證是指對事務(wù)操作的輸入變量、輸出變量的類型進行驗證;對特定事務(wù)類型的事務(wù)操作而言,其輸入變量、輸出變量的類型應(yīng)是唯一匹配的;
所述的事務(wù)驗證是指事務(wù)是否正確的開啟與關(guān)閉;事務(wù)是一組邏輯上連續(xù)執(zhí)行的操作集合,具有事務(wù)邊界的概念;而事務(wù)的邊界由事務(wù)的開啟操作與關(guān)閉操作界定;對不同的事務(wù)類型而言,其開啟與關(guān)閉的操作也不同;所述的層次驗證是指事務(wù)操作所織入的位置是否符合層次關(guān)系。其中,所述步驟4具體為將通過驗證的基于方面的事務(wù)策略轉(zhuǎn)換為標準的服務(wù)調(diào)用代碼,然后根據(jù)切入點指明的織入策略定位到服務(wù)組裝規(guī)格說明中的特定位置,根據(jù)通知中指明的織入類型轉(zhuǎn)換后得到的服務(wù)調(diào)用代碼織入。其中,所述通過驗證的基于方面的事務(wù)策略轉(zhuǎn)換為標準的服務(wù)調(diào)用代碼是通過預(yù)設(shè)的轉(zhuǎn)化規(guī)則將基于方面的事務(wù)策略的元素映射到BPEL元素;其中所述轉(zhuǎn)化規(guī)則包括規(guī)則I :將事務(wù)策略中的變量映射為BPEL中的變量,變量的名字與類型屬性分別映射為BPEL變量的名字與消息類型屬性;規(guī)則2 :將事務(wù)策略中的事務(wù)映射為BPEL中的invoke活動,類型屬性為assignTransaction的除外;事務(wù)的名字、操作、輸入變量和輸出變量分別映射為invoke活動的名字、操作、輸入變量和輸出變量,并依據(jù)事務(wù)類型屬性增加Invoke活動的partnerLink 與 portType 屬性;規(guī)則3 :將事務(wù)策略中的類型屬性為assignTransaction的事務(wù)映射為BPEL中assign活動,用于將協(xié)調(diào)上下文拷貝為Web服務(wù)操作的請求參數(shù);規(guī)則4 :事務(wù)策略中的切入點在BPEL中沒有直接映射,但必須依據(jù)切入點的路徑屬性確定在BPEL中編織的目標位置;規(guī)則5 :將事務(wù)策略中的參數(shù)映射為BPEL中的assign活動,用于為事務(wù)操作的參數(shù)賦值;規(guī)則6 :根據(jù)事物策略中事務(wù)的類型屬性在BPEL中增加名字空間、導入標簽、伙伴連接標簽和伙伴連接類型標簽。其中,解析切入點的表達式屬性以根據(jù)由切入點指明的織入策略定位到服務(wù)組裝規(guī)格說明中的特定位置;其中,在通知中指明織入類型將轉(zhuǎn)換后得到的服務(wù)調(diào)用代碼織入的具體實現(xiàn)方法包括如果織入類型為before,則在目標位置之前織入轉(zhuǎn)換后得到的服務(wù)調(diào)用代碼;如果織入類型為after,則在目標位置之后織入轉(zhuǎn)換后得到的服務(wù)調(diào)用代碼;如果織入類型為child,則在目標元素的子元素中織入轉(zhuǎn)換后得到的服務(wù)調(diào)用代碼。本發(fā)明的實施例還提供了一種基于方面的可靠WEB服務(wù)組裝系統(tǒng),包括框架建立模塊,用于建立基于方面的面向服務(wù)組裝的事務(wù)集成框架;模型建立模塊,用于開發(fā)基于方面的事務(wù)集成框架元模型,其中所述事務(wù)集成框架元模型支持不同的事務(wù)策略的定義;所述的事務(wù)策略用來指明事務(wù)操作、所屬的事務(wù)類型,以及該操作的對應(yīng)輸入變量與輸出變量;織入策略用來描述某個事務(wù)策略應(yīng)被織入的位置,以及織入類型;驗證模塊,用于對所述基于方面的事務(wù)策略進行驗證;編織模塊,用于以預(yù)處理的方式將基于方面的事務(wù)策略與原始服務(wù)組裝編織起 來,在服務(wù)組裝規(guī)格說明中織入標準的事務(wù)操作調(diào)用。本發(fā)明通過采用面向方面編程的思想,將服務(wù)組裝中的事務(wù)邏輯與業(yè)務(wù)邏輯集成,使用基于方面的事務(wù)集成框架元模型進行事務(wù)策略的聲明,由支持平臺完成自動化驗證和編織,形成事務(wù)化的服務(wù)組裝流程。由于事務(wù)化的服務(wù)組裝流程中只包含業(yè)務(wù)邏輯,對核心業(yè)務(wù)流程的理解、開發(fā)和維護變得更為簡單;而基于方面的事務(wù)策略中只包含事務(wù)邏輯,與具體業(yè)務(wù)流程無關(guān),可以隨時選擇添加或刪去事務(wù)邏輯,也可以隨時更換事務(wù)類型和事務(wù)操作,支持平臺能夠自動地將基于方面的事務(wù)策略與服務(wù)組裝進行編織,使得事務(wù)邏輯與核心業(yè)務(wù)邏輯的耦合降低,具有易于理解、易于使用和易于擴展等優(yōu)點。本發(fā)明具有關(guān)注點分離、易于維護、高效等特點,對于目前基于服務(wù)組裝實現(xiàn)的大型軟件系統(tǒng)的可靠性保證具有十分重要的意義。
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖I為本發(fā)明實施例的流程示意圖;圖2為本發(fā)明實施例的基于方面的服務(wù)組裝事務(wù)集成方法框架原理圖;圖3為本發(fā)明實施例的基于方面的事務(wù)集成框架元模型。
具體實施例方式基于Web服務(wù)組裝實現(xiàn)一些大型復雜的業(yè)務(wù)流程時,這些系統(tǒng)往往需要保證關(guān)鍵的業(yè)務(wù)環(huán)節(jié)正確執(zhí)行。為了增強系統(tǒng)的可靠性,必須對這些關(guān)鍵業(yè)務(wù)環(huán)節(jié)提供事務(wù)機制的支持。目前,在服務(wù)組裝語言中集成事務(wù)的實現(xiàn)技術(shù)一般從服務(wù)組裝規(guī)格說明層出發(fā),使得解決方法是基于特定實例的;或者從擴展服務(wù)組裝語言及執(zhí)行引擎的角度考慮,使得解決方案缺乏普適性。例如,在服務(wù)組裝規(guī)格說明中為業(yè)務(wù)流程編寫事務(wù)邏輯處理代碼,即采用硬編碼的方式將事務(wù)操作添加到核心業(yè)務(wù)當中。由于事務(wù)邏輯代碼與業(yè)務(wù)邏輯代碼混雜在一起,導致難以理解、難以維護的問題,并且需要為每個服務(wù)組裝實例編寫事務(wù)處理代碼,工作量大。再如,通過擴展服務(wù)組裝語言及其執(zhí)行引擎,在標準的服務(wù)組裝語言元素之外,添加用于處理事務(wù)邏輯的元素,并通過擴展執(zhí)行引擎使得對擴展后的服務(wù)組裝語言支持。由于對服務(wù)組裝語言和執(zhí)行引擎進行了擴展,造成解決方案特定于語言及實現(xiàn)、無法在其他執(zhí)行引擎上運行的問題。為此,本發(fā)明提出了一種基于方面的服務(wù)組裝事務(wù)集成的方法,采用面向方面編程的思想將事務(wù)邏輯與業(yè)務(wù)邏輯進行集成,提供基于方面的事務(wù)策略的定義,在運行前以預(yù)處理的方式將事務(wù)策略與服務(wù)組裝編織到一起,形成事務(wù)化的服務(wù)組裝流程。該方法具有易于理解、易于使用、易于維護、易于推廣的特點。本發(fā)明實施例的方法流程如圖I所示的,包括步驟I、建立基于方面的面向服務(wù)組裝的事務(wù)集成框架;步驟2、開發(fā)基于方面的事務(wù)集成框架元模型,其中所述事務(wù)集成框架元模型支持不同的事務(wù)策略的定義;所述的事務(wù)策略用來指明事務(wù)操作、所屬的事務(wù)類型,以及該操作的對應(yīng)輸入變量與輸出變量;織入策略用來描述某個事務(wù)策略應(yīng)被織入的位置,以及織入 類型;
步驟3、對所述基于方面的事務(wù)策略進行驗證; 步驟4、以預(yù)處理的方式將基于方面的事務(wù)策略與原始服務(wù)組裝編織起來,在服務(wù)組裝規(guī)格說明中織入標準的事務(wù)操作調(diào)用。其中,所述步驟I具體為將基于方面的事務(wù)策略與原始服務(wù)組裝轉(zhuǎn)化為事務(wù)化服務(wù)組裝; 實現(xiàn)Web服務(wù)事務(wù)管理中間件;擴展參與組裝的Web服務(wù)支持事務(wù)協(xié)議。其中,所述將基于方面的事務(wù)策略與原始服務(wù)組裝轉(zhuǎn)化為事務(wù)化服務(wù)組裝具體為根據(jù)預(yù)設(shè)的映射規(guī)則將事務(wù)策略轉(zhuǎn)化為不同的事務(wù)操作接口調(diào)用;其中所述事務(wù)策略包括事務(wù)協(xié)議類型與織入類型。其中,所述的Web服務(wù)事務(wù)管理中間件基于Web服務(wù)事務(wù)協(xié)議的規(guī)格說明實現(xiàn),以Web服務(wù)的形式提供事務(wù)協(xié)議支持,提供統(tǒng)一的調(diào)用接口。其中,所述的擴展參與組裝的Web服務(wù)支持事務(wù)協(xié)議通過擴展已有Web服務(wù)和增加支持不同的事務(wù)協(xié)議的接口實現(xiàn);其中所述參與服務(wù)組裝的Web服務(wù)提供并實現(xiàn)事務(wù)協(xié)議接口以被Web服務(wù)事務(wù)管理中間件調(diào)用。其中,所述步驟2具體為采用面向方面編程思想表達事務(wù)集成時的基本概念及其聯(lián)系,采用XML語法格式表示;所述的基于方面的事務(wù)集成框架元模型用來刻畫采用AOP表達事務(wù)集成時的基本概念及其聯(lián)系,包括方面、切入點、通知、變量、事務(wù)、參數(shù)、方面集合、切入點集合、通知集合、變量集合、事務(wù)集合、參數(shù)集合;變量、事務(wù)及參數(shù)構(gòu)成的事務(wù)策略、方面、切入點及通知構(gòu)成的織入策略;變量、事務(wù)及參數(shù)之間的關(guān)系、方面、切入點及通知之間的關(guān)系通過XML的屬性引用和層次結(jié)構(gòu)建立;事務(wù)策略與織入策略的關(guān)系通過XML的層次結(jié)構(gòu)建立;這些概念與聯(lián)系通過XML Schema進行定義與表不。其中,所述步驟3具體為依據(jù)BPEL語法、事務(wù)結(jié)構(gòu)與層次提供不同形式的驗證方式,包括語法驗證、變量驗證、事務(wù)驗證和層次驗證,以確?;诜矫娴氖聞?wù)策略在織入前是正確的;所述的語法驗證是指對基于方面的事務(wù)策略的XML元素、屬性、以及元素之間的層級關(guān)系進行驗證;所述的變量驗證是指對事務(wù)操作的輸入變量、輸出變量的類型進行驗證;對特定事務(wù)類型的事務(wù)操作而言,其輸入變量、輸出變量的類型應(yīng)是唯一匹配的;所述的事務(wù)驗證是指事務(wù)是否正確的開啟與關(guān)閉;事務(wù)是一組邏輯上連續(xù)執(zhí)行的操作集合,具有事務(wù)邊界的概念;而事務(wù)的邊界由事務(wù)的開啟操作與關(guān)閉操作界定;對不同的事務(wù)類型而言,其開啟與關(guān)閉的操作也不同;所述的層次驗證是指事務(wù)操作所織入的位置是否符合層次關(guān)系。其中,所述步驟4具體為將通過驗證的基于方面的事務(wù)策略轉(zhuǎn)換為標準的服務(wù) 調(diào)用代碼,然后根據(jù)切入點指明的織入策略定位到服務(wù)組裝規(guī)格說明中的特定位置,根據(jù) 通知中指明的織入類型轉(zhuǎn)換后得到的服務(wù)調(diào)用代碼織入。其中,所述通過驗證的基于方面的事務(wù)策略轉(zhuǎn)換為標準的服務(wù)調(diào)用代碼是通過預(yù)設(shè)的轉(zhuǎn)化規(guī)則將基于方面的事務(wù)策略的元素映射到BPEL元素;其中所述轉(zhuǎn)化規(guī)則包括規(guī)則I :將事務(wù)策略中的變量映射為BPEL中的變量,變量的名字與類型屬性分別映射為BPEL變量的名字與消息類型屬性;規(guī)則2 :將事務(wù)策略中的事務(wù)映射為BPEL中的invoke活動,類型屬性為assignTransaction的除外;事務(wù)的名字、操作、輸入變量和輸出變量分別映射為invoke活動的名字、操作、輸入變量和輸出變量,并依據(jù)事務(wù)類型屬性增加Invoke活動的partnerLink 與 portType 屬性;規(guī)則3 :將事務(wù)策略中的類型屬性為assignTransaction的事務(wù)映射為BPEL中assign活動,用于將協(xié)調(diào)上下文拷貝為Web服務(wù)操作的請求參數(shù);規(guī)則4 :事務(wù)策略中的切入點在BPEL中沒有直接映射,但必須依據(jù)切入點的路徑屬性確定在BPEL中編織的目標位置;規(guī)則5 :將事務(wù)策略中的參數(shù)映射為BPEL中的assign活動,用于為事務(wù)操作的參數(shù)賦值;規(guī)則6 :根據(jù)事物策略中事務(wù)的類型屬性在BPEL中增加名字空間、導入標簽、伙伴連接標簽和伙伴連接類型標簽。其中,解析切入點的表達式屬性以根據(jù)由切入點指明的織入策略定位到服務(wù)組裝規(guī)格說明中的特定位置;其中,在通知中指明織入類型將轉(zhuǎn)換后得到的服務(wù)調(diào)用代碼織入的具體實現(xiàn)方法包括如果織入類型為before,則在目標位置之前織入轉(zhuǎn)換后得到的服務(wù)調(diào)用代碼;如果織入類型為after,則在目標位置之后織入轉(zhuǎn)換后得到的服務(wù)調(diào)用代碼;如果織入類型為child,則在目標元素的子元素中織入轉(zhuǎn)換后得到的服務(wù)調(diào)用代碼。具體的,本發(fā)明的方法具體為為了在服務(wù)組裝中集成事務(wù),首先開發(fā)基于方面的面向服務(wù)組裝的事務(wù)集成框架。該框架包括三個部分,即將基于方面的事務(wù)策略與原始服務(wù)組裝轉(zhuǎn)化為事務(wù)化服務(wù)組裝流程,實現(xiàn)Web服務(wù)事務(wù)管理中間件,擴展參與組裝的Web服務(wù)支持事務(wù)協(xié)議。為了將基于方面的事務(wù)策略與原始服務(wù)組裝轉(zhuǎn)化為事務(wù)化服務(wù)組裝流程,本發(fā)明定義了一種基于方面的事務(wù)集成框架元模型。該模型不僅用來定義基于方面的事務(wù)策略,也是面向服務(wù)組裝的事務(wù)集成框架中各個模塊實現(xiàn)的依據(jù),包括基于方面的事務(wù)策略定義、基于方面的事務(wù)策略驗證和基于方面的事務(wù)策略編織。以下結(jié)合圖3,對元模型進行說明。方面代表了跨越多個模塊的橫切性的關(guān)注,一般而言是與核心業(yè)務(wù)邏輯關(guān)聯(lián)不大的非功能性需求。切入點代表了程序執(zhí)行時的某個特定位置。通知代表了期望在切入點處所執(zhí)行的動作。事務(wù)代表了一個通知的實際內(nèi)容,指定某個特定的事務(wù)類型下的事務(wù)操作。變量代表了某個事務(wù)操作的輸入變量、輸出變量及其類型。 參數(shù)代表了某個事務(wù)操作輸入變量的具體參數(shù)細節(jié)。方面、切入點與通知構(gòu)成了基于方面的事務(wù)策略中的織入策略,指明織入的位置和類型;事務(wù)、變量和參數(shù)構(gòu)成了方面中的事務(wù)策略,指明操作的具體事務(wù)細節(jié)??椚氩呗院褪聞?wù)策略的構(gòu)建通過XML元素的層次結(jié)構(gòu)和屬性引用實現(xiàn),而織入策略和事務(wù)策略通過通知關(guān)聯(lián)起來??紤]到服務(wù)組裝語言BPEL采用了 XML表示法,本發(fā)明中基于方面的事務(wù)策略也采用XML表示。這樣的設(shè)計方案進一步強化了基于服務(wù)組裝實現(xiàn)的系統(tǒng)在應(yīng)用程序集成和數(shù)據(jù)集成方面的突出優(yōu)點?;诜矫娴氖聞?wù)集成框架元模型的XML表示如下列所示
權(quán)利要求
1.一種基于方面的可靠WEB服務(wù)組裝方法,其特征在于,包括 步驟I、建立基于方面的面向服務(wù)組裝的事務(wù)集成框架; 步驟2、開發(fā)基于方面的事務(wù)集成框架元模型,其中所述事務(wù)集成框架元模型支持不同的事務(wù)策略的定義;所述的事務(wù)策略用來指明事務(wù)操作、所屬的事務(wù)類型,以及該操作的對應(yīng)輸入變量與輸出變量;織入策略用來描述某個事務(wù)策略應(yīng)被織入的位置,以及織入類型; 步驟3、對所述基于方面的事 務(wù)策略進行驗證; 步驟4、以預(yù)處理的方式將基于方面的事務(wù)策略與原始服務(wù)組裝編織起來,在服務(wù)組裝規(guī)格說明中織入標準的事務(wù)操作調(diào)用。
2.根據(jù)權(quán)利要求I所述的基于方面的可靠WEB服務(wù)組裝方法,其特征在于,所述步驟I具體為 將基于方面的事務(wù)策略與原始服務(wù)組裝轉(zhuǎn)化為事務(wù)化服務(wù)組裝; 實現(xiàn)Web服務(wù)事務(wù)管理中間件; 擴展參與組裝的Web服務(wù)支持事務(wù)協(xié)議。
3.根據(jù)權(quán)利要求2所述的基于方面的可靠WEB服務(wù)組裝方法,其特征在于,所述將基于方面的事務(wù)策略與原始服務(wù)組裝轉(zhuǎn)化為事務(wù)化服務(wù)組裝具體為 根據(jù)預(yù)設(shè)的映射規(guī)則將事務(wù)策略轉(zhuǎn)化為不同的事務(wù)操作接口調(diào)用;其中所述事務(wù)策略包括事務(wù)協(xié)議類型與織入類型。
4.根據(jù)權(quán)利要求2所述的基于方面的可靠WEB服務(wù)組裝方法,其特征在于, 所述的Web服務(wù)事務(wù)管理中間件是基于Web服務(wù)事務(wù)協(xié)議的規(guī)格說明實現(xiàn),以Web服務(wù)的形式提供事務(wù)協(xié)議支持,提供統(tǒng)一的調(diào)用接口 ; 所述的擴展參與組裝的Web服務(wù)支持事務(wù)協(xié)議通過擴展已有Web服務(wù)和增加支持不同的事務(wù)協(xié)議的接口實現(xiàn); 其中所述參與服務(wù)組裝的Web服務(wù)提供并實現(xiàn)事務(wù)協(xié)議接口以被Web服務(wù)事務(wù)管理中間件調(diào)用。
5.根據(jù)權(quán)利要求I所述的基于方面的可靠WEB服務(wù)組裝方法,其特征在于,所述步驟2具體為采用面向方面編程思想表達事務(wù)集成時的基本概念及其聯(lián)系,采用XML語法格式表不; 所述的基于方面的事務(wù)集成框架元模型用來刻畫采用AOP表達事務(wù)集成時的基本概念及其聯(lián)系,包括方面、切入點、通知、變量、事務(wù)、參數(shù)、方面集合、切入點集合、通知集合、變量集合、事務(wù)集合、參數(shù)集合;變量、事務(wù)及參數(shù)構(gòu)成的事務(wù)策略、方面、切入點及通知構(gòu)成的織入策略;變量、事務(wù)及參數(shù)之間的關(guān)系、方面、切入點及通知之間的關(guān)系通過XML的屬性引用和層次結(jié)構(gòu)建立;事務(wù)策略與織入策略的關(guān)系通過XML的層次結(jié)構(gòu)建立;這些概念與聯(lián)系通過XML Schema進行定義與表不。
6.根據(jù)權(quán)利要求I所述的基于方面的可靠WEB服務(wù)組裝方法,其特征在于,所述步驟3具體為依據(jù)BPEL語法、事務(wù)結(jié)構(gòu)與層次提供不同形式的驗證方式,包括語法驗證、變量驗證、事務(wù)驗證和層次驗證,以確保基于方面的事務(wù)策略在織入前是正確的; 所述的語法驗證是指對基于方面的事務(wù)策略的XML元素、屬性、以及元素之間的層級關(guān)系進行驗證;所述的變量驗證是指對事務(wù)操作的輸入變量、輸出變量的類型進行驗證;對特定事務(wù)類型的事務(wù)操作而言,其輸入變量、輸出變量的類型應(yīng)是唯一匹配的; 所述的事務(wù)驗證是指事務(wù)是否正確的開啟與關(guān)閉;事務(wù)是一組邏輯上連續(xù)執(zhí)行的操作集合,具有事務(wù)邊界的概念;而事務(wù)的邊界由事務(wù)的開啟操作與關(guān)閉操作界定;對不同的事務(wù)類型而言,其開啟與關(guān)閉的操作也不同; 所述的層次驗證是指事務(wù)操作所織入的位置是否符合層次關(guān)系。
7.根據(jù)權(quán)利要求I所述的基于方面的可靠WEB服務(wù)組裝方法,其特征在于,所述步驟4具體為將通過驗證的基于方面的事務(wù)策略轉(zhuǎn)換為標準的服務(wù)調(diào)用代碼,然后根據(jù)切入點指明的織入策略定位到服務(wù)組裝規(guī)格說明中的特定位置,根據(jù)通知中指明的織入類型轉(zhuǎn)換后得到的服務(wù)調(diào)用代碼織入。
8.根據(jù)權(quán)利要求7所述的基于方面的可靠WEB服務(wù)組裝方法,其特征在于,所述通過驗證的基于方面的事務(wù)策略轉(zhuǎn)換為標準的服務(wù)調(diào)用代碼是通過預(yù)設(shè)的轉(zhuǎn)化規(guī)則將基于方面的事務(wù)策略的元素映射到BPEL元素;其中所述轉(zhuǎn)化規(guī)則包括 規(guī)則I :將事務(wù)策略中的變量映射為BPEL中的變量,變量的名字與類型屬性分別映射為BPEL變量的名字與消息類型屬性; 規(guī)則2 :將事務(wù)策略中的事務(wù)映射為BPEL中的invoke活動,類型屬性為assignTransaction的除外;事務(wù)的名字、操作、輸入變量和輸出變量分別映射為invoke活動的名字、操作、輸入變量和輸出變量,并依據(jù)事務(wù)類型屬性增加Invoke活動的partnerLink 與 portType 屬性; 規(guī)則3 :將事務(wù)策略中的類型屬性為assignTransaction的事務(wù)映射為BPEL中assign活動,用于將協(xié)調(diào)上下文拷貝為Web服務(wù)操作的請求參數(shù); 規(guī)則4 :事務(wù)策略中的切入點在BPEL中沒有直接映射,但必須依據(jù)切入點的路徑屬性確定在BPEL中編織的目標位置; 規(guī)則5 :將事務(wù)策略中的參數(shù)映射為BPEL中的assign活動,用于為事務(wù)操作的參數(shù)賦值; 規(guī)則6 :根據(jù)事物策略中事務(wù)的類型屬性在BPEL中增加名字空間、導入標簽、伙伴連接標簽和伙伴連接類型標簽。
9.根據(jù)權(quán)利要求7所述的基于方面的可靠WEB服務(wù)組裝方法,其特征在于,其中,解析切入點的表達式屬性以根據(jù)由切入點指明的織入策略定位到服務(wù)組裝規(guī)格說明中的特定位置;其中,在通知中指明織入類型將轉(zhuǎn)換后得到的服務(wù)調(diào)用代碼織入的具體實現(xiàn)方法包括如果織入類型為before,則在目標位置之前織入轉(zhuǎn)換后得到的服務(wù)調(diào)用代碼;如果織入類型為after,則在目標位置之后織入轉(zhuǎn)換后得到的服務(wù)調(diào)用代碼;如果織入類型為child,則在目標元素的子元素中織入轉(zhuǎn)換后得到的服務(wù)調(diào)用代碼。
10.一種基于方面的可靠WEB服務(wù)組裝系統(tǒng),其特征在于,包括 框架建立模塊,用于建立基于方面的面向服務(wù)組裝的事務(wù)集成框架; 模型建立模塊,用于開發(fā)基于方面的事務(wù)集成框架元模型,其中所述事務(wù)集成框架元模型支持不同的事務(wù)策略的定義;所述的事務(wù)策略用來指明事務(wù)操作、所屬的事務(wù)類型,以及該操作的對應(yīng)輸入變量與輸出變量;織入策略用來描述某個事務(wù)策略應(yīng)被織入的位置,以及織入類型;驗證模塊,用于對所述基于方面的事務(wù)策略進行驗證; 編織 模塊,用于以預(yù)處理的方式將基于方面的事務(wù)策略與原始服務(wù)組裝編織起來,在服務(wù)組裝規(guī)格說明中織入標準的事務(wù)操作調(diào)用。
全文摘要
本發(fā)明提出了一種基于方面的可靠WEB服務(wù)組裝方法和系統(tǒng),其中所述方法包括建立基于方面的面向服務(wù)組裝的事務(wù)集成框架;開發(fā)基于方面的事務(wù)集成框架元模型,其中所述事務(wù)集成框架元模型支持不同的事務(wù)策略的定義;所述的事務(wù)策略用來指明事務(wù)操作、所屬的事務(wù)類型,以及該操作的對應(yīng)輸入變量與輸出變量;織入策略用來描述某個事務(wù)策略應(yīng)被織入的位置,以及織入類型;對所述基于方面的事務(wù)策略進行驗證;以預(yù)處理的方式將基于方面的事務(wù)策略與原始服務(wù)組裝編織起來,在服務(wù)組裝規(guī)格說明中織入標準的事務(wù)操作調(diào)用。本發(fā)明將服務(wù)組裝中的事務(wù)邏輯與業(yè)務(wù)邏輯集成,對于目前基于服務(wù)組裝實現(xiàn)的大型軟件系統(tǒng)的可靠性保證具有十分重要的意義。
文檔編號G06F9/44GK102929629SQ20121042816
公開日2013年2月13日 申請日期2012年10月31日 優(yōu)先權(quán)日2012年10月31日
發(fā)明者孫昌愛, 尚巖 申請人:北京科技大學