專利名稱:自動服務(wù)組合的系統(tǒng)及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及SOA(Service Oriented Architecture面向服務(wù)的架構(gòu))領(lǐng)域,特別 涉及自動服務(wù)組合的系統(tǒng)及方法。
背景技術(shù):
隨著SOA發(fā)展與廣泛采納,網(wǎng)絡(luò)環(huán)境下Web服務(wù)數(shù)目越來越多。由于Web服務(wù)具 有分布式、自描述、模塊化等特征,使之成為在網(wǎng)絡(luò)環(huán)境下進(jìn)行互操作和實現(xiàn)分布式系統(tǒng)的 基本要素。由于單個Web服務(wù)的功能是有限的,為了實現(xiàn)現(xiàn)實當(dāng)中復(fù)雜的業(yè)務(wù)需求,往往需 要將多個Web服務(wù)組合起來以實現(xiàn)更加強(qiáng)大的功能,該過程稱為服務(wù)組合。在大量Web服 務(wù)空間中,通過人工來實現(xiàn)服務(wù)組合往往較復(fù)雜、不切實際,故自動服務(wù)組合技術(shù)被提出用 以解決此問題。自動服務(wù)組合是采用一定的算法,能夠讓程序自動、快速、準(zhǔn)確地找出相關(guān) 服務(wù),并按照特定的邏輯和時序關(guān)系將它們組合以完成特定的功能,而不需要人工的干預(yù)。
如何快速、準(zhǔn)確地找到相關(guān)的服務(wù)及其組合順序,以便滿足需求,為所要解決的 問題。另一方面,對于功能相似的服務(wù),通常存在多個服務(wù)提供者,而每個提供者提供的 QoS(服務(wù)質(zhì)量)具有差別,如何從中選擇較優(yōu)的服務(wù),構(gòu)造出一個質(zhì)量可保障的組合服務(wù) 也是服務(wù)組合所要解決的問題。綜合上述兩方面,既需要有效地組合相關(guān)的服務(wù)以滿足功 能需求,又需要保證組合服務(wù)的質(zhì)量。 為解決上述兩方面問題,現(xiàn)有技術(shù)中存在多種方法。在該些方法中,一些方法只考 慮該問題的單一方面,或者將該問題的兩個方面分開解決。此外,一些方法雖然從整體上考 慮了兩個方面,但采用通過窮舉,或者通過啟發(fā)性規(guī)則,或者通過建立大量的索引表來解決 該問題,因而現(xiàn)有技術(shù)存在效率、可擴(kuò)展性、準(zhǔn)確性上都無法提供保證的問題。
發(fā)明內(nèi)容
為解決上述問題,本發(fā)明提供了自動服務(wù)組合的系統(tǒng)及方,能夠避免窮舉搜索提 高效率。 本發(fā)明公開了一種自動服務(wù)組合的方法,包括 步驟1,對服務(wù)進(jìn)行注冊,存儲服務(wù)對應(yīng)的輸入?yún)?shù)、輸出參數(shù)和QoS值;
步驟2,接收服務(wù)的查詢請求,以查詢請求的輸入?yún)?shù)、查詢請求的需求參數(shù),以及 服務(wù)為節(jié)點,根據(jù)節(jié)點對應(yīng)服務(wù)的輸入?yún)?shù)和輸出參數(shù),將所述節(jié)點組成依賴關(guān)系圖;
步驟3,以所述查詢請求的輸入?yún)?shù)對應(yīng)的節(jié)點為初始節(jié)點,以所述查詢請求的需 求參數(shù)對應(yīng)的節(jié)點為目的節(jié)點,在所述依賴關(guān)系圖中搜索從所述初始節(jié)點到所述目的節(jié)點 的QoS值最優(yōu)路徑,所述最優(yōu)路徑中節(jié)點對應(yīng)的服務(wù)組成所述查詢請求對應(yīng)的服務(wù)組合。
從所述初始節(jié)點到節(jié)點的QoS值為所述節(jié)點的總QoS值;
所述步驟3進(jìn)一步為, 步驟21,在所述依賴關(guān)系圖中,選擇初始節(jié)點,從所述初始節(jié)點開始搜索,選擇當(dāng) 前被觸發(fā)的節(jié)點中總QoS值最優(yōu)的節(jié)點,并以所述節(jié)點為所述節(jié)點對應(yīng)服務(wù)的輸出參數(shù)的最優(yōu)提供者,當(dāng)所述目的節(jié)點被觸發(fā)時,搜索結(jié)束;當(dāng)節(jié)點對應(yīng)服務(wù)的輸入?yún)?shù)的提供者都 已被選擇時,所述節(jié)點被觸發(fā); 步驟22,在所述依賴關(guān)系圖中,確定從所述目的節(jié)點到所述初始節(jié)點的路徑,以節(jié)
點對應(yīng)服務(wù)的輸入?yún)?shù)的最優(yōu)提供者為所述節(jié)點的上游節(jié)點;所述路徑中的節(jié)點對應(yīng)的服
務(wù)組成所述服務(wù)集合。 所述步驟21進(jìn)一步為, 步驟31,將所述查詢請求的輸入?yún)?shù)放入可提供參數(shù)集合中; 步驟32,從所述依賴關(guān)系圖未被觸發(fā)的節(jié)點中查找對應(yīng)服務(wù)的輸入?yún)?shù)被包含在 所述可提供參數(shù)集合中的節(jié)點,該節(jié)點為被觸發(fā)的節(jié)點,將所述被觸發(fā)的節(jié)點加入所述觸 發(fā)服務(wù)隊列中; 步驟33,判斷觸發(fā)服務(wù)隊列中是否包括所述目的節(jié)點,如果包括,則結(jié)束所述搜 索,否則,根據(jù)服務(wù)的輸入?yún)?shù)提供者的總QoS值和被觸發(fā)的節(jié)點自身QoS值,計算被觸發(fā) 節(jié)點的總QoS值,執(zhí)行步驟34 ; 步驟34,從所述觸發(fā)服務(wù)隊列中選擇總QoS值最優(yōu)的節(jié)點并將所述被選擇的節(jié)點 移出所述觸發(fā)服務(wù)隊列,所述節(jié)點為所述節(jié)點對應(yīng)服務(wù)的輸出參數(shù)的最優(yōu)提供者,將所述 節(jié)點對應(yīng)服務(wù)的輸出參數(shù)加入所述可提供參數(shù)集合中,執(zhí)行所述步驟32。
所述步驟l進(jìn)一步為, 步驟41,提取服務(wù)的輸入?yún)?shù)和輸出參數(shù)進(jìn)行存儲; 步驟42,根據(jù)語義本體樹提取服務(wù)輸入?yún)?shù)對應(yīng)的概念和輸出參數(shù)對應(yīng)的概念,
用哈希表保存輸入?yún)?shù)或輸出參數(shù)同對應(yīng)概念間的關(guān)系;
步驟43,采集服務(wù)的指標(biāo)信息,確定服務(wù)的QoS值。
所述步驟43進(jìn)一步為,
步驟51,采集服務(wù)的指標(biāo)信息; 步驟52,在所述服務(wù)的指標(biāo)為一維時,所述服務(wù)的QoS值為所述指標(biāo)值;
步驟53,在所述服務(wù)的指標(biāo)為多維時,將所述服務(wù)的多個指標(biāo)值進(jìn)行歸一化,所述 服務(wù)的QoS值為歸一化所得值。
所述步驟21進(jìn)一步為, 步驟61,為所述依賴關(guān)系圖中每個節(jié)點對應(yīng)的服務(wù)存儲一個對應(yīng)的計數(shù)值,所述 計數(shù)值的初始值為所述服務(wù)的輸入?yún)?shù)的個數(shù),在所述依賴關(guān)系圖中查找輸入?yún)?shù)同查詢 請求的輸入?yún)?shù)匹配的節(jié)點,并將所述節(jié)點對應(yīng)的計數(shù)值減去匹配的輸入?yún)?shù)的個數(shù);
步驟62,查找計數(shù)值為0的未被觸發(fā)的節(jié)點,將所述節(jié)點放入觸發(fā)服務(wù)隊列中,判 斷觸發(fā)服務(wù)隊列中是否包括所述目的節(jié)點,如果包括,則結(jié)束所述搜索,否則,根據(jù)服務(wù)的 輸入?yún)?shù)提供者的總QoS值和被觸發(fā)的節(jié)點自身QoS值,計算被觸發(fā)節(jié)點的總QoS值,執(zhí)行 步驟63 ; 步驟63,從所述觸發(fā)服務(wù)隊列中選擇總QoS值最優(yōu)的節(jié)點并將所述被選擇的節(jié)點 移出所述觸發(fā)服務(wù)隊列,更新所述節(jié)點對應(yīng)服務(wù)的輸出參數(shù)的最優(yōu)提供者為所述節(jié)點;在 所述依賴關(guān)系圖中查找滿足條件的節(jié)點,所述條件為所述節(jié)點的未被匹配的輸入?yún)?shù)同所 述選擇的節(jié)點的輸出參數(shù)相匹配,并將所述被匹配的節(jié)點對應(yīng)的計數(shù)值減去新匹配的輸入 參數(shù)的個數(shù),執(zhí)行所述步驟62。
本發(fā)明還公開了一種自動服務(wù)組合的系統(tǒng),包括 服務(wù)注冊模塊,用于對服務(wù)進(jìn)行注冊,存儲服務(wù)對應(yīng)的輸入?yún)?shù)、輸出參數(shù)和QoS 值; 依賴關(guān)系圖生成模塊,用于接收服務(wù)的查詢請求,以查詢請求的輸入?yún)?shù)、查詢請 求的需求參數(shù),以及服務(wù)為節(jié)點,根據(jù)節(jié)點對應(yīng)服務(wù)的輸入?yún)?shù)和輸出參數(shù),將所述節(jié)點組 成依賴關(guān)系圖; 服務(wù)組合生成模塊,用于以所述查詢請求的輸入?yún)?shù)對應(yīng)的節(jié)點為初始節(jié)點,以 所述查詢請求的需求參數(shù)對應(yīng)的節(jié)點為目的節(jié)點,在所述依賴關(guān)系圖中搜索從所述初始節(jié) 點到所述目的節(jié)點的QoS值最優(yōu)路徑,所述最優(yōu)路徑中節(jié)點對應(yīng)的服務(wù)組成所述查詢請求 對應(yīng)的服務(wù)組合。 從所述初始節(jié)點到節(jié)點的QoS值為所述節(jié)點的總QoS值;
所述服務(wù)組合生成模塊進(jìn)一步包括, 服務(wù)提供者確定模塊,用于在所述依賴關(guān)系圖中,選擇初始節(jié)點,從所述初始節(jié)點 開始搜索,選擇當(dāng)前被觸發(fā)的節(jié)點中總QoS值最優(yōu)的節(jié)點,并以所述節(jié)點為所述節(jié)點對應(yīng) 服務(wù)的輸出參數(shù)的最優(yōu)提供者,當(dāng)所述目的節(jié)點被觸發(fā)時,搜索結(jié)束;當(dāng)節(jié)點對應(yīng)服務(wù)的輸 入?yún)?shù)的提供者都已被選擇時,所述節(jié)點被觸發(fā); 路徑生成模塊,用于在所述依賴關(guān)系圖中,確定從所述目的節(jié)點到所述初始節(jié)點 的路徑,以節(jié)點對應(yīng)服務(wù)的輸入?yún)?shù)的最優(yōu)提供者為所述節(jié)點的上游節(jié)點;所述路徑中的 節(jié)點對應(yīng)的服務(wù)組成所述服務(wù)集合。 所述服務(wù)提供者確定模塊進(jìn)一步用于將所述查詢請求的輸入?yún)?shù)放入可提供參 數(shù)集合中;從所述依賴關(guān)系圖未被觸發(fā)的節(jié)點中查找對應(yīng)服務(wù)的輸入?yún)?shù)被包含在所述可 提供參數(shù)集合中的節(jié)點,該節(jié)點為被觸發(fā)的節(jié)點,將所述被觸發(fā)的節(jié)點加入所述觸發(fā)服務(wù) 隊列中;判斷觸發(fā)服務(wù)隊列中是否包括所述目的節(jié)點,如果包括,則結(jié)束所述搜索,否則,根 據(jù)服務(wù)的輸入?yún)?shù)提供者的總QoS值和被觸發(fā)的節(jié)點自身QoS值,計算被觸發(fā)節(jié)點的總QoS 值,從所述觸發(fā)服務(wù)隊列中選擇總QoS值最優(yōu)的節(jié)點并將并將所述被選擇的節(jié)點移出所述 觸發(fā)服務(wù)隊列,所述節(jié)點為所述節(jié)點對應(yīng)服務(wù)的輸出參數(shù)的最優(yōu)提供者,將所述節(jié)點對應(yīng) 服務(wù)的輸出參數(shù)加入所述可提供參數(shù)集合中。 所述服務(wù)注冊模塊進(jìn)一步用于提取服務(wù)的輸入?yún)?shù)和輸出參數(shù)進(jìn)行存儲;根據(jù)語 義本體樹提取服務(wù)輸入?yún)?shù)對應(yīng)的概念和輸出參數(shù)對應(yīng)的概念,用哈希表保存輸入?yún)?shù)或
輸出參數(shù)同對應(yīng)概念間的關(guān)系凍集服務(wù)的指標(biāo)信息,確定服務(wù)的QoS值。 所述服務(wù)注冊模塊在采集服務(wù)的指標(biāo)信息,確定服務(wù)的QoS值時進(jìn)一步用于采集
服務(wù)的指標(biāo)信息;在所述服務(wù)的指標(biāo)為一維時,所述服務(wù)的QoS值為所述指標(biāo)值;在所述服
務(wù)的指標(biāo)為多維時,將所述服務(wù)的多個指標(biāo)值進(jìn)行歸一化,所述服務(wù)的QoS值為歸一化所得值。 所述服務(wù)提供者確定模塊進(jìn)一步用于為所述依賴關(guān)系圖中每個節(jié)點對應(yīng)的服務(wù) 存儲一個對應(yīng)的計數(shù)值,所述計數(shù)值的初始值為所述服務(wù)的輸入?yún)?shù)的個數(shù),在所述依賴 關(guān)系圖中查找輸入?yún)?shù)同查詢請求的輸入?yún)?shù)匹配的節(jié)點,并將所述節(jié)點對應(yīng)的計數(shù)值減 去匹配的輸入?yún)?shù)的個數(shù);查找計數(shù)值為0的未被觸發(fā)的節(jié)點,將所述節(jié)點放入觸發(fā)服務(wù) 隊列中,判斷觸發(fā)服務(wù)隊列中是否包括所述目的節(jié)點,如果包括,則結(jié)束所述搜索,否則,根據(jù)服務(wù)的輸入?yún)?shù)提供者的總QoS值和被觸發(fā)的節(jié)點自身QoS值,計算被觸發(fā)節(jié)點的總QoS 值,從所述觸發(fā)服務(wù)隊列中選擇總QoS值最優(yōu)的節(jié)點并將并將所述被選擇的節(jié)點移出所述 觸發(fā)服務(wù)隊列,更新所述節(jié)點對應(yīng)服務(wù)的輸出參數(shù)的最優(yōu)提供者為所述節(jié)點;在所述依賴 關(guān)系圖中查找滿足條件的節(jié)點,所述條件為所述節(jié)點的未被匹配的輸入?yún)?shù)同所述選擇的 節(jié)點的輸出參數(shù)相匹配,并將所述被匹配的節(jié)點對應(yīng)的計數(shù)值減去新匹配的輸入?yún)?shù)的個 數(shù)。 本發(fā)明的有益效果在于,通過在一個有權(quán)重的有向圖,依賴關(guān)系圖,中提取出一個 QoS最優(yōu)的有向無環(huán)圖,以查詢請求的輸入?yún)?shù)為初始結(jié)點,以查詢請求的需求參數(shù)為目的 節(jié)點,能夠避免窮舉搜索并保證了搜索出的組合服務(wù)結(jié)果一定是QoS最優(yōu)的;通過在搜索 過程中,剔除了不能夠觸發(fā)的服務(wù),保證從觸發(fā)服務(wù)隊列中取出的服務(wù)被進(jìn)行一次處理,能 夠提高搜索效率;因為數(shù)據(jù)結(jié)構(gòu)簡單,每個服務(wù)記錄自己的QoS值,每個觸發(fā)的服務(wù)記錄總 QoS,參數(shù)為記錄該參數(shù)最優(yōu)的QoS和對應(yīng)的提供者,能夠降低存儲開銷;因為在優(yōu)先隊列 的基礎(chǔ)上進(jìn)行搜索每次選擇總QoS最優(yōu)節(jié)點,保證了搜索出的結(jié)果為最優(yōu)的組合結(jié)果。
圖i是本發(fā)明自動服務(wù)組合的方法流程圖; 圖2是服務(wù)組合單元各個類型的示意圖; 圖3是實施例中建立的依賴關(guān)系圖; 圖4是實施例中前向搜索示意圖; 圖5是實施例中通過后向搜索的示意圖; 圖6是實施例中獲得的組合結(jié)果; 圖7是本發(fā)明自動服務(wù)組合的系統(tǒng)結(jié)構(gòu)圖。
具體實施例方式
下面結(jié)合附圖,對本發(fā)明做進(jìn)一步的詳細(xì)描述。
本發(fā)明使用的術(shù)語名稱如下所述。 (1) QoS (服務(wù)質(zhì)量),服務(wù)的QoS是服務(wù)的非功能屬性,如price (價格),response time ( 口向應(yīng)時間),throughput (吞吐量)。 本發(fā)明將服務(wù)的質(zhì)量分為四種類型sum(求和)類型,如響應(yīng)時間;min(最小值) 類型,如吞吐量multiplication(乘積)類型,如r印utation聲譽(yù);max(最大值)類型。 注意這是根據(jù)實際情況劃分的,并可以擴(kuò)充至更多的類型。對于這些不同類型的服務(wù)質(zhì)量, 必須采用不同的函數(shù)以求取服務(wù)組合的QoS的總值。如對于鏈狀的順序的服務(wù)組合,如果 此服務(wù)組合的某一個QoS總值等于其中各個服務(wù)的QoS值之和,那么這個QoS屬于sum類 型。如服務(wù)價格和響應(yīng)時間都屬于這類。同理,如果此服務(wù)組合的另一個QoS總值等于各 個服務(wù)的QoS值之積,那么這個QoS屬于multiplication類型,如聲譽(yù)值。對于min, max 類型也是類似的。 例如求取k個順序調(diào)用服務(wù)的總吞吐量,它的值等于該k個服務(wù)中最小的吞吐量, 因為它是系統(tǒng)吞吐量的瓶頸。 另外,本發(fā)明將服務(wù)質(zhì)量分為兩類一類是Positive (正質(zhì)量類),其值越大,服務(wù)
8質(zhì)量越好,如吞吐量;一類是Negative (負(fù)質(zhì)量類),其值越小,服務(wù)質(zhì)量越好,如響應(yīng)時間。
(2)服務(wù),表示為Wi,為一個三元組(Iwi, 0 , Q》(1《i《N) 。 Iwi, QWi分別代表服
務(wù)輸入?yún)?shù)、輸出參數(shù)。Qi是服務(wù)質(zhì)量的指標(biāo)值的集合,Q =氾v IU , j (1《j《N)表示 服務(wù)Wi的第j維QoS質(zhì)量的指標(biāo)值。 (3)參數(shù)匹配,對于來自服務(wù)的任意兩個參數(shù)Pa, Pb,通過語義信息中的本體樹來 確定Pa,Pb之間的匹配關(guān)系,記Conc印t (Pa) , Conc印t (Pb)分別表示該兩個參數(shù)對應(yīng)的概念。 當(dāng)且僅當(dāng)它們屬于同一個概念,或者Conc印t (Pa) subClassof Conc印t (Pb),表示Pa表示概 念是Pb表示概念的子類時,稱參數(shù)Pa匹配參數(shù)Pb。 (4)服務(wù)匹配,它是建立在參數(shù)匹配的基礎(chǔ)上的。如果任意兩個服務(wù)Wa和Wb,
^K。n^6^0,則該兩個服務(wù)可以匹配,稱服務(wù)Wa為服務(wù)Wb提供參數(shù)o^ n Iwb。反之,對于 服務(wù)Wb的該些輸入?yún)?shù)o^ n iwb, Wa為其參數(shù)提供者。對于某個輸入?yún)?shù),可能存在多個
該參數(shù)的提供者。 服務(wù)匹配又分為為完全匹配和部分匹配,分別對應(yīng)下面兩種關(guān)系^W ^乙b ,表示
wa完全匹配wb,(cva n/wfc - 0) a(/w6 (X oj表示W(wǎng)a部分匹配wb。 本發(fā)明的自動服務(wù)組合的方法如圖1所示,包括 步驟S100,對服務(wù)進(jìn)行注冊,存儲服務(wù)對應(yīng)的輸入?yún)?shù)、輸出參數(shù)和QoS值。
步驟S100具體實施如下所示。 步驟SllO,提取服務(wù)的輸入?yún)?shù)和輸出參數(shù)進(jìn)行存儲。 根據(jù)Web服務(wù)模型,從WSDL文件(Web Services Description Language,網(wǎng)絡(luò)服
務(wù)描述語言)中提取出服務(wù)的輸入?yún)?shù)和輸出參數(shù),存儲在服務(wù)數(shù)據(jù)庫中。 步驟S120,根據(jù)語義本體樹提取服務(wù)輸入?yún)?shù)對應(yīng)的概念和輸出參數(shù)對應(yīng)的概
念,用哈希表保存輸入?yún)?shù)或輸出參數(shù)同對應(yīng)概念間的關(guān)系。 從0WL—S文^牛(Ontology Web Language for Services月艮務(wù)的網(wǎng)絡(luò)本體i吾言)中, 根據(jù)語義本體樹(Ontology Tree)提取出服務(wù)的參數(shù)對應(yīng)的概念,并用哈希表保存輸入?yún)?數(shù)和對應(yīng)概念之間的對應(yīng)關(guān)系,輸出參數(shù)和對應(yīng)概念之間的對應(yīng)關(guān)系。特別地,由于概念具 有傳遞性,使用概念樹保存概念之間的子類關(guān)系。根據(jù)概念樹,由服務(wù)的參數(shù)對應(yīng)概念得到 服務(wù)的參數(shù)之間的語義匹配關(guān)系。根據(jù)服務(wù)參數(shù)的語義匹配關(guān)系用于生成依賴關(guān)系圖。
步驟S130,采集服務(wù)的指標(biāo)信息,確定服務(wù)的QoS值。 利用QoS處理器通過三種方式采集Web服務(wù)的QoS信息,并將QoS信息賦給對應(yīng) 的Web服務(wù)。該三種方式分別是動態(tài)QoS監(jiān)控,靜態(tài)QoS,模擬QoS。 動態(tài)QoS監(jiān)控,指的是對服務(wù)運行狀態(tài)進(jìn)行實時監(jiān)控,采集當(dāng)前服務(wù)的各種質(zhì)量 指標(biāo)。 靜態(tài)QoS,為歷史QoS統(tǒng)計,指的是對服務(wù)運行狀態(tài)進(jìn)行周期性抽樣,統(tǒng)計出各個 服務(wù)質(zhì)量指標(biāo)的值。 模擬QoS,為程序生成,指的是通過程序生成服務(wù)質(zhì)量。 使用IBM的WSLA (Web Service Level Agreement, Web服務(wù)級別協(xié)議/Web服務(wù)等 級協(xié)定)語言記錄采集的服務(wù)QoS值。 在服務(wù)的指標(biāo)為一維時,該服務(wù)的QoS值為該指標(biāo)值;在服務(wù)的指標(biāo)為多維時,將該服務(wù)的多個指標(biāo)值進(jìn)行歸一化,該服務(wù)的QoS值為歸一化所得值。 將多維的指標(biāo)值轉(zhuǎn)變?yōu)橐粋€加權(quán)后的QoS值,記Vi, j為服務(wù)Wi的第j維QoS值經(jīng)
過下面兩種方法歸一化處理后的值。
方法一 對于Positive類,如果
2r -er" = 0 ,則歸一化的QoS值為0。
對于Negative類,如果 _
2r -2," = 0 ,則歸一化的QoS值為0。
其中,Q/ax表示max (Q丄,」|丄=。,Q/ i表示服務(wù)集合中第i個服務(wù),j是服務(wù)質(zhì)J 標(biāo)值。
方法二
則歸一化的QoS值為
則歸一化的QoS值為
,如果
,如果
n表示min (Qi, j I i = 。 , N表示服務(wù)集合的數(shù)目, :的維數(shù),Qi, j是服務(wù)Wi的第j維QoS質(zhì)量的指 對于Positive類,歸一化的QoS值為1 -
對于Negative類,歸一化的QoS
值為—
cr..
P i, o ,.是第j維QoS指標(biāo)值的平均值和標(biāo)準(zhǔn)差' 記QTCighted(Wi)是服務(wù)Wi所有m維QoS值的力B權(quán)后的總值,則 2—= , Vij為Wi的第j維QoS歸一化處理后的值。 根據(jù)服務(wù)的輸入?yún)?shù)和輸出參數(shù)建立兩個反向索引表。功能為根據(jù)某一個參數(shù),
可以獲取提供該參數(shù)的所有服務(wù)列表,也就是以該參數(shù)為輸出參數(shù)的服務(wù)的列表;以及需
要該參數(shù)的所有服務(wù)的列表,也就是以該參數(shù)為輸入?yún)?shù)的服務(wù)的列表。 步驟S200,接收服務(wù)的查詢請求,以查詢請求的輸入?yún)?shù)、查詢請求的需求參數(shù),
以及服務(wù)為節(jié)點,根據(jù)節(jié)點對應(yīng)服務(wù)的輸入?yún)?shù)和輸出參數(shù),將所述節(jié)點組成依賴關(guān)系圖。 在服務(wù)依賴圖G = (V, E)中,V, E分別表示圖中所有節(jié)點和有向邊的集合。圖中
每一個節(jié)點唯一地對應(yīng)了一個服務(wù)。任意兩個節(jié)點存在有向邊當(dāng)且僅當(dāng)它們對應(yīng)的兩個服
務(wù)是可以匹配的。對于任意兩個服務(wù)wjpwb,o^ruw* *0 ,則對應(yīng)節(jié)點之間存在一條由Wa
指向Wb的有向邊,且其標(biāo)記為(^ n Iwb。例如,如圖3示例中所示。依賴關(guān)系圖中,存在一 條由W2指向W3的有向邊,邊上E表示0w2 n Iw3 = E。步驟S300,以查詢請求的輸入?yún)?shù)對 應(yīng)的節(jié)點為初始節(jié)點,以查詢請求的需求參數(shù)對應(yīng)的節(jié)點為目的節(jié)點,在所述依賴關(guān)系圖 中搜索從所述初始節(jié)點到所述目的節(jié)點的QoS值最優(yōu)路徑,該最優(yōu)路徑中節(jié)點對應(yīng)的服務(wù) 組成所述查詢請求對應(yīng)的服務(wù)組合。 步驟S310,在依賴關(guān)系圖中,選擇初始節(jié)點,從初始節(jié)點開始搜索,選擇當(dāng)前被觸 發(fā)的節(jié)點中總QoS值最優(yōu)的節(jié)點,并以該節(jié)點為該節(jié)點對應(yīng)服務(wù)的輸出參數(shù)的最優(yōu)提供 者,當(dāng)目的節(jié)點被觸發(fā)時,搜索結(jié)束;當(dāng)節(jié)點對應(yīng)服務(wù)的輸入?yún)?shù)的提供者都已被選擇時, 該節(jié)點被觸發(fā)。
所述步驟S310具體實施方式
一。 步驟S3101,將查詢請求的輸入?yún)?shù)放入可提供參數(shù)集合中。 步驟S3102,從依賴關(guān)系圖未被觸發(fā)的節(jié)點中查找對應(yīng)服務(wù)的輸入?yún)?shù)被包含在 可提供參數(shù)集合中的節(jié)點,該節(jié)點為被觸發(fā)的節(jié)點,將該被觸發(fā)的節(jié)點加入觸發(fā)服務(wù)隊列 中,該隊列基于服務(wù)的總QoS值確定服務(wù)的優(yōu)先級。 服務(wù)總QoS值越好,其優(yōu)先級越高,被優(yōu)先處理,該隊列的實現(xiàn)可以使用二叉堆, 斐波那契堆等。 步驟S3103,判斷觸發(fā)服務(wù)隊列中是否包括所述目的節(jié)點,如果包括,則結(jié)束該搜 索,否則,根據(jù)服務(wù)的輸入?yún)?shù)提供者的總QoS值和被觸發(fā)的節(jié)點自身QoS值,計算被觸發(fā) 節(jié)點的總QoS值,執(zhí)行步驟S3104。
計算被觸發(fā)節(jié)點的總QoS值方法如下。 在服務(wù)組合中,組合服務(wù)結(jié)果表示成一個有向無環(huán)圖(DAG),它包含一下3種組合
單元sequence (順序),And-joint (與合并),And-split (與分開),如圖2。 {W1,W2...WN}
中任意一個服務(wù),可以是該三個組合單元的任意組合。 各種類型QoS情況下,組合服務(wù)的QoS值。計算規(guī)則如下所述。 Lsequence (WN, j)表示sequence類型的計算規(guī)則,為』■ 11 = 。 (1《i《N); Ltod—joint (WN, j)表示And-joint類型的計算規(guī)則,為& (F2 」|丄=廣",QN,》; Ltod—split (Wk, j)表示And-split類型的計算規(guī)則,為(L(W, j) , Qk,j) (1《k《N); 其中,L (WN, j)表示,有N-l個服務(wù)在WN之前,L (WN, j)是該N個服務(wù)的第j維QoS
總值; Fl, F2是{ E,TI, min, max}中的一個函數(shù),根據(jù)QoS的類型和實際應(yīng)用決定的。 該函數(shù)的參數(shù)是Qi,j。 步驟S3104,從所述觸發(fā)服務(wù)隊列中選擇總QoS值最優(yōu)的節(jié)點并將該節(jié)點移出觸 發(fā)服務(wù)隊列,所述節(jié)點為所述節(jié)點對應(yīng)服務(wù)的輸出參數(shù)的最優(yōu)提供者,將所述節(jié)點對應(yīng)服 務(wù)的輸出參數(shù)加入所述可提供參數(shù)集合中,執(zhí)行所述步驟S3102。
所述步驟S310具體實施方式
二 服務(wù)組合器接收到遞交的查詢后,在依賴關(guān)系圖中采用圖搜索的方式來尋找出滿 足用戶查詢的最優(yōu)服務(wù)組合結(jié)果。搜索過程中的獲取的QoS信息將會存儲,每個服務(wù)存儲 了本服務(wù)的自身的QoS值,表示為selfQoS,以及從查詢輸入?yún)?shù)對應(yīng)的初始節(jié)點,表示為 L,開始至本服務(wù)被調(diào)用后的總QoS值,表示為allQoS。服務(wù)的每個輸入?yún)?shù)保存了可以 提供該輸入?yún)?shù)的最優(yōu)QoS值,表示為optQoS,及該最優(yōu)QoS值對應(yīng)的最優(yōu)提供者,表示為 optProvider。在另一個具體實施方式
中,也不生成可提供參數(shù)集合,而是對每個服務(wù)存儲 一個對應(yīng)的計數(shù)值count,該計數(shù)值count初始值是服務(wù)輸入?yún)?shù)的數(shù)目,每當(dāng)服務(wù)的一個 輸入?yún)?shù)對應(yīng)的提供者被觸發(fā)后,計數(shù)值count值減一,當(dāng)計數(shù)值count值為零時,表明該 服務(wù)被觸發(fā)。 具體步驟如下所述。 步驟S3111,為依賴關(guān)系圖中每個節(jié)點對應(yīng)的服務(wù)存儲一個對應(yīng)的計數(shù)值,該計數(shù) 值的初始值為所述服務(wù)的輸入?yún)?shù)的個數(shù),在依賴關(guān)系圖中查找輸入?yún)?shù)同查詢請求的輸 入?yún)?shù)匹配的節(jié)點,并將所述節(jié)點對應(yīng)的計數(shù)值減去匹配的輸入?yún)?shù)的個數(shù)。
步驟S3112,查找計數(shù)值為0的未被觸發(fā)的節(jié)點,將該節(jié)點放入觸發(fā)服務(wù)隊列中, 判斷觸發(fā)服務(wù)隊列中是否包括所述目的節(jié)點,如果包括,則結(jié)束所述搜索,否則,根據(jù)服務(wù) 的輸入?yún)?shù)提供者的總QoS值和被觸發(fā)的節(jié)點自身QoS值,計算被觸發(fā)節(jié)點的總QoS值,執(zhí) 行步驟S3113。 步驟S3113,從觸發(fā)服務(wù)隊列中選擇總QoS值最優(yōu)的節(jié)點并將該節(jié)點移出觸發(fā)服 務(wù)隊列,更新所述節(jié)點對應(yīng)服務(wù)的輸出參數(shù)的最優(yōu)提供者為所述節(jié)點;在依賴關(guān)系圖中查 找滿足條件的節(jié)點,所述條件為該節(jié)點的沒有被匹配過的輸入?yún)?shù)同該選擇的節(jié)點的輸出 參數(shù)相匹配,并將被匹配的節(jié)點對應(yīng)的計數(shù)值減去新匹配的輸入?yún)?shù)的個數(shù),執(zhí)行所述步 驟S3112。 具體實施例如下所述。 步驟S3111',按照由前往后的搜索方式,找出被觸發(fā)的服務(wù),將它們保存在觸發(fā)服
務(wù)隊列中,該觸發(fā)服務(wù)隊列按照服務(wù)的allQoS值來排序,執(zhí)行步驟S3112'。 將查詢請求的輸入?yún)?shù)放入可提供參數(shù)集合中。 初始時,該觸發(fā)服務(wù)隊列中僅含有被初始節(jié)點^直接觸發(fā)的服務(wù)。 步驟S3112',當(dāng)觸發(fā)服務(wù)隊列不為空,每次從該觸發(fā)服務(wù)隊列中取出allQoS最好
的服務(wù)。對于該服務(wù)的每一個輸出參數(shù),為該服務(wù)的輸出參數(shù)更新最優(yōu)的QoS值及對應(yīng)的
最優(yōu)提供者,該服務(wù)為該輸出參數(shù)的最優(yōu)提供者。 將輸出參數(shù)對應(yīng)為該選擇的服務(wù)的輸出參數(shù)的節(jié)點加入可提供參數(shù)集合中,并且 根據(jù)該服務(wù)的每一個不被包含在可提供參數(shù)集合中的輸出參數(shù)及反向索引表,找出需要該 輸出參數(shù)的服務(wù),并將該些服務(wù)的計數(shù)值count減一。當(dāng)某些服務(wù)的計數(shù)值co皿t變?yōu)榱?時,該些服務(wù)被觸發(fā),計算該些服務(wù)的allQoS值,將該些新觸發(fā)的服務(wù)也加入觸發(fā)服務(wù)隊 列中。如果該些新觸發(fā)的服務(wù)包括查詢,則執(zhí)行步驟S320,否則執(zhí)行步驟S3112'。
步驟S3113',當(dāng)堆為空時,表明查詢請求無法滿足,返回"無結(jié)果"。
步驟S320,在依賴關(guān)系圖中,確定從目的節(jié)點到初始節(jié)點的路徑,以節(jié)點對應(yīng)服務(wù) 的輸入?yún)?shù)的最優(yōu)提供者為該節(jié)點的上游節(jié)點;路徑中的節(jié)點對應(yīng)的服務(wù)組成所述服務(wù)集 合。 執(zhí)行步驟S320時,表明查詢請求R已經(jīng)被滿足。結(jié)果生成器通過反向搜索找出最 優(yōu)結(jié)果從查詢請求需要的參數(shù)0K開始,對于每一個參數(shù),根據(jù)其最優(yōu)的提供者,找出直接 前驅(qū),并記錄它們之間的順序。同理,對于最優(yōu)提供者,根據(jù)它的每一輸入?yún)?shù),找出各自的 最優(yōu)提供者,直到查詢請求的輸入?yún)?shù)IK為止。最終結(jié)果表示成一個有向無環(huán)圖。
實施例 實例一 本實施例所使用的8個服務(wù)。每個服務(wù)由某個公司提供。它指的是使用 一些原料生產(chǎn)某些產(chǎn)品?,F(xiàn)有某公司擁有原料A, B, C,欲獲取產(chǎn)品D,需要尋找其它廠商代 工。目標(biāo)是使總代工價格盡可能低。通過查找,獲得8個相關(guān)的服務(wù),每個服務(wù)代表一種 生產(chǎn)產(chǎn)品的能力,如果按照窮舉搜索,則會搜索出三個組合結(jié)果,然后比較它們的總的服務(wù) 質(zhì)量值,才得到最優(yōu)的組合結(jié)果。而按照本發(fā)明的方法不需要窮舉。
在該實例中,F(xiàn)l是sum函數(shù),F(xiàn)2是max函數(shù)。 圖3示的是根據(jù)服務(wù)輸入輸出參數(shù)之間的匹配關(guān)系建立的依賴關(guān)系圖。
圖4所示的是前向搜索每個步驟。
首先,將IK可以觸發(fā)的服務(wù)Wl , W2加入觸發(fā)服務(wù)隊列中,并根據(jù)服務(wù)質(zhì)量排序。服 務(wù)W1,W2的allQoS等于自身的QoS,分別是900和100。被觸發(fā)服務(wù)的輸出參數(shù)放在"可提 供的參數(shù)集合"中,該集合的初始值是^可以提供的參數(shù)A,B,C。它們的最優(yōu)QoS,optQoS 為0。提供者為IK。 將觸發(fā)服務(wù)隊列中服務(wù)質(zhì)量最好的服務(wù)W2(100),被取出處理??商峁┑膮?數(shù)集合中加入W2的輸出參數(shù)E, F,它們的最優(yōu)QoS值為100,最優(yōu)QoS提供者是服務(wù) W2(optProvider = W2)。由于服務(wù)W3和W4輸入?yún)?shù)都在可提供的參數(shù)集合中,故它們可 以被觸發(fā),放入觸發(fā)服務(wù)隊列中。服務(wù)W3的allQoS等于服務(wù)W2的selfQoS加上服務(wù)W3 的selfQoS,為300。服務(wù)W4的allQoS等于服務(wù)W2的selfQoS加上服務(wù)W4的selfQoS,為 概 將觸發(fā)服務(wù)隊列中服務(wù)質(zhì)量最好的服務(wù)W3(300)被取出處理。可提供的參數(shù)集合 加入W3的輸出參數(shù)H, H的最優(yōu)QoS值為300,提供者是服務(wù)W3。由于服務(wù)W7可以被服務(wù) W3觸發(fā),將其加入到觸發(fā)服務(wù)隊列。服務(wù)W7的allQoS為服務(wù)W3的allQoS加上服務(wù)W7的 selfQoS,為500. 將觸發(fā)服務(wù)隊列中服務(wù)質(zhì)量最好的服務(wù)W4(400)被取出處理。可提供的參數(shù)集合 加入服務(wù)W4的輸出參數(shù)G。參數(shù)G的最優(yōu)QoS值optQoS為400,提供者是服務(wù)W4。此時,服 務(wù)W8已經(jīng)可以滿足,將其放入觸發(fā)服務(wù)隊列中。服務(wù)W8的allQoS等于服務(wù)W4的allQoS 加上服務(wù)W8的selfQoS,為900。 將"觸發(fā)服務(wù)隊列"中服務(wù)質(zhì)量最好的服務(wù)W7(500)取出處理。可提供的參數(shù)集合 加入服務(wù)W7的輸出參數(shù)D。此時,(^已經(jīng)可以滿足。參數(shù)D的最優(yōu)QoS值optQoS為500, 提供者是服務(wù)W7。 由于查詢請求需要的信息D已經(jīng)獲得,算法終止。 圖5展示了通過后向回溯找出結(jié)果并表示成DAG,圖中雙箭頭表示反向搜索過程。
在該過程中,需要利用上面存儲的信息。具體步驟是 以0K為后向回溯的起始節(jié)點。0K包含的參數(shù)是D,由于D的最優(yōu)服務(wù)質(zhì)量的提供 者是服務(wù)W7,故服務(wù)W7是0K的前驅(qū),服務(wù)W7的后繼是0K。服務(wù)W7的輸入?yún)?shù)是H, H的最 優(yōu)服務(wù)質(zhì)量的提供者是服務(wù)W3,故服務(wù)W3是服務(wù)W7的前驅(qū)。同理,服務(wù)W3的輸入?yún)?shù)是 C,E。參數(shù)C的最優(yōu)服務(wù)質(zhì)量提供者是^故lK是服務(wù)W3的前驅(qū)。又因為E的最優(yōu)服務(wù)質(zhì) 量的提供者是服務(wù)W2,故服務(wù)W2也是服務(wù)W3的前驅(qū)。又因為服務(wù)W2的輸入?yún)?shù)是A, B。 而它們的最優(yōu)服務(wù)質(zhì)量提供者是k,故服務(wù)W2的前驅(qū)是IK。 通過該些已記錄的前驅(qū)關(guān)系,可以將組合結(jié)果表示成一個有向無環(huán)圖,如圖6所 示。雖然在前向搜索算法中,可觸發(fā)服務(wù)隊列總共有{Wl, W2,W3, W4,W7, W8h處理了 {W2, W3, W4, W7},但通過反向回溯發(fā)現(xiàn),該三個服務(wù){(diào)W2, W3, W7}就可以構(gòu)成一個最有的服務(wù)組 合結(jié)果,其它服務(wù)是多余的。該組合結(jié)果的總QoS值是500。
—種自動服務(wù)組合的系統(tǒng)如圖7所示。 服務(wù)注冊模塊701,用于對服務(wù)進(jìn)行注冊,存儲服務(wù)對應(yīng)的輸入?yún)?shù)、輸出參數(shù)和 QoS值。 依賴關(guān)系圖生成模塊702,用于接收服務(wù)的查詢請求,以查詢請求的輸入?yún)?shù)、查 詢請求的需求參數(shù),以及服務(wù)為節(jié)點,根據(jù)節(jié)點對應(yīng)服務(wù)的輸入?yún)?shù)和輸出參數(shù),將所述節(jié)點組成依賴關(guān)系圖。 服務(wù)組合生成模塊703,用于以所述查詢請求的輸入?yún)?shù)對應(yīng)的節(jié)點為初始節(jié)點, 以所述查詢請求的需求參數(shù)對應(yīng)的節(jié)點為目的節(jié)點,在所述依賴關(guān)系圖中搜索從所述初始 節(jié)點到所述目的節(jié)點的QoS值最優(yōu)路徑,所述最優(yōu)路徑中節(jié)點對應(yīng)的服務(wù)組成所述查詢請 求對應(yīng)的服務(wù)組合。 較佳的,從所述初始節(jié)點到節(jié)點的QoS值為所述節(jié)點的總QoS值;
服務(wù)組合生成模塊703進(jìn)一步包括, 服務(wù)提供者確定模塊,用于在所述依賴關(guān)系圖中,選擇初始節(jié)點,從所述初始節(jié)點 開始搜索,選擇當(dāng)前被觸發(fā)的節(jié)點中總QoS值最優(yōu)的節(jié)點,并以所述節(jié)點為所述節(jié)點對應(yīng) 服務(wù)的輸出參數(shù)的最優(yōu)提供者,當(dāng)所述目的節(jié)點被觸發(fā)時,搜索結(jié)束;當(dāng)節(jié)點對應(yīng)服務(wù)的輸 入?yún)?shù)的提供者都已被選擇時,所述節(jié)點被觸發(fā); 路徑生成模塊,用于在所述依賴關(guān)系圖中,確定從所述目的節(jié)點到所述初始節(jié)點 的路徑,以節(jié)點對應(yīng)服務(wù)的輸入?yún)?shù)的最優(yōu)提供者為所述節(jié)點的上游節(jié)點;所述路徑中的 節(jié)點對應(yīng)的服務(wù)組成所述服務(wù)集合。 較佳的,從所述初始節(jié)點到節(jié)點的QoS值為所述節(jié)點的總QoS值;
所述服務(wù)提供者確定模塊進(jìn)一步用于將所述查詢請求的輸入?yún)?shù)放入可提供參 數(shù)集合中;從所述依賴關(guān)系圖未被觸發(fā)的節(jié)點中查找對應(yīng)服務(wù)的輸入?yún)?shù)被包含在所述可 提供參數(shù)集合中的節(jié)點,該節(jié)點為被觸發(fā)的節(jié)點,將所述被觸發(fā)的節(jié)點加入所述觸發(fā)服務(wù) 隊列中;判斷觸發(fā)服務(wù)隊列中是否包括所述目的節(jié)點,如果包括,則結(jié)束所述搜索,否則, 根據(jù)服務(wù)的輸入?yún)?shù)提供者的總QoS值和被觸發(fā)的節(jié)點自身QoS值,計算被觸發(fā)節(jié)點的總 QoS值,從所述觸發(fā)服務(wù)隊列中選擇總QoS值最優(yōu)的節(jié)點并將該選擇的節(jié)點移出觸發(fā)服務(wù) 隊列,所述節(jié)點為所述節(jié)點對應(yīng)服務(wù)的輸出參數(shù)的最優(yōu)提供者,將所述節(jié)點對應(yīng)服務(wù)的輸 出參數(shù)加入所述可提供參數(shù)集合中。 較佳的,服務(wù)注冊模塊701進(jìn)一步用于提取服務(wù)的輸入?yún)?shù)和輸出參數(shù)進(jìn)行存 儲;根據(jù)語義本體樹提取服務(wù)輸入?yún)?shù)對應(yīng)的概念和輸出參數(shù)對應(yīng)的概念,用哈希表保存 輸入?yún)?shù)或輸出參數(shù)同對應(yīng)概念間的關(guān)系;采集服務(wù)的指標(biāo)信息,確定服務(wù)的QoS值。
較佳的,服務(wù)注冊模塊701在采集服務(wù)的指標(biāo)信息,確定服務(wù)的QoS值時進(jìn)一步用 于采集服務(wù)的指標(biāo)信息;在所述服務(wù)的指標(biāo)為一維時,所述服務(wù)的QoS值為所述指標(biāo)值;在 所述服務(wù)的指標(biāo)為多維時,將所述服務(wù)的多個指標(biāo)值進(jìn)行歸一化,所述服務(wù)的QoS值為歸 一化所得值。 較佳的,從所述初始節(jié)點到節(jié)點的QoS值為所述節(jié)點的總QoS值;
所述服務(wù)提供者確定模塊進(jìn)一步用于為所述依賴關(guān)系圖中每個節(jié)點對應(yīng)的服務(wù) 存儲一個對應(yīng)的計數(shù)值,所述計數(shù)值的初始值為所述服務(wù)的輸入?yún)?shù)的個數(shù),在所述依賴 關(guān)系圖中查找輸入?yún)?shù)同查詢請求的輸入?yún)?shù)匹配的節(jié)點,并將所述節(jié)點對應(yīng)的計數(shù)值減 去匹配的輸入?yún)?shù)的個數(shù);查找計數(shù)值為0的未被觸發(fā)的節(jié)點,將所述節(jié)點放入觸發(fā)服務(wù) 隊列中,判斷觸發(fā)服務(wù)隊列中是否包括所述目的節(jié)點,如果包括,則結(jié)束所述搜索,否則,根 據(jù)服務(wù)的輸入?yún)?shù)提供者的總QoS值和被觸發(fā)的節(jié)點自身QoS值,計算被觸發(fā)節(jié)點的總QoS 值,從所述觸發(fā)服務(wù)隊列中選擇總QoS值最優(yōu)的節(jié)點并將該選擇的節(jié)點移出觸發(fā)服務(wù)隊 列,更新所述節(jié)點對應(yīng)服務(wù)的輸出參數(shù)的最優(yōu)提供者為所述節(jié)點;在所述依賴關(guān)系圖中查
14找滿足條件的節(jié)點,所述條件為該節(jié)點的沒有被匹配過的輸入?yún)?shù)同所述選擇的節(jié)點的輸 出參數(shù)相匹配,并將所述被匹配的節(jié)點對應(yīng)的計數(shù)值減去新匹配的輸入?yún)?shù)的個數(shù)。
采用本發(fā)明的方法和系統(tǒng),由于采用過濾和優(yōu)先隊列算法,縮減了搜索空間,保 證了搜索的速度;采用貪心策略保證組合結(jié)果的QoS是最優(yōu)的;將自動服務(wù)組合和選取 最優(yōu)質(zhì)量的組合結(jié)果結(jié)合起來,提高了求最優(yōu)服務(wù)組合的結(jié)果的自動化程度;遵循通用的 標(biāo)準(zhǔn)WSDL, 0WL-S, WSLA。兼容性較好。該發(fā)明是基于有向圖中單源結(jié)點的最優(yōu)路徑中 Dijkstra(迪杰斯特)方法;但每個節(jié)點具有一個或多個約束限制,服務(wù)的輸入?yún)?shù)必須全 部滿足,且所獲得的不僅僅為最優(yōu)路徑,而是一個DAG。 本領(lǐng)域的技術(shù)人員在不脫離權(quán)利要求書確定的本發(fā)明的精神和范圍的條件下,還 可以對以上內(nèi)容進(jìn)行各種各樣的修改。因此本發(fā)明的范圍并不僅限于以上的說明,而是由 權(quán)利要求書的范圍來確定的。
權(quán)利要求
一種自動服務(wù)組合的方法,其特征在于,包括步驟1,對服務(wù)進(jìn)行注冊,存儲服務(wù)對應(yīng)的輸入?yún)?shù)、輸出參數(shù)和QoS值;步驟2,接收服務(wù)的查詢請求,以查詢請求的輸入?yún)?shù)、查詢請求的需求參數(shù),以及服務(wù)為節(jié)點,根據(jù)節(jié)點對應(yīng)服務(wù)的輸入?yún)?shù)和輸出參數(shù),將所述節(jié)點組成依賴關(guān)系圖;步驟3,以所述查詢請求的輸入?yún)?shù)對應(yīng)的節(jié)點為初始節(jié)點,以所述查詢請求的需求參數(shù)對應(yīng)的節(jié)點為目的節(jié)點,在所述依賴關(guān)系圖中搜索從所述初始節(jié)點到所述目的節(jié)點的QoS值最優(yōu)路徑,所述最優(yōu)路徑中節(jié)點對應(yīng)的服務(wù)組成所述查詢請求對應(yīng)的服務(wù)組合。
2. 如權(quán)利要求1所述的自動服務(wù)組合的方法,其特征在于, 從所述初始節(jié)點到節(jié)點的QoS值為所述節(jié)點的總QoS值; 所述步驟3進(jìn)一步為,步驟21,在所述依賴關(guān)系圖中,選擇初始節(jié)點,從所述初始節(jié)點開始搜索,選擇當(dāng)前被 觸發(fā)的節(jié)點中總QoS值最優(yōu)的節(jié)點,并以所述節(jié)點為所述節(jié)點對應(yīng)服務(wù)的輸出參數(shù)的最優(yōu) 提供者,當(dāng)所述目的節(jié)點被觸發(fā)時,搜索結(jié)束;當(dāng)節(jié)點對應(yīng)服務(wù)的輸入?yún)?shù)的提供者都已被 選擇時,所述節(jié)點被觸發(fā);步驟22,在所述依賴關(guān)系圖中,確定從所述目的節(jié)點到所述初始節(jié)點的路徑,以節(jié)點對 應(yīng)服務(wù)的輸入?yún)?shù)的最優(yōu)提供者為所述節(jié)點的上游節(jié)點;所述路徑中的節(jié)點對應(yīng)的服務(wù)組 成所述服務(wù)集合。
3. 如權(quán)利要求2所述的自動服務(wù)組合的方法,其特征在于, 所述步驟21進(jìn)一步為,步驟31,將所述查詢請求的輸入?yún)?shù)放入可提供參數(shù)集合中;步驟32,從所述依賴關(guān)系圖未被觸發(fā)的節(jié)點中查找對應(yīng)服務(wù)的輸入?yún)?shù)被包含在所述 可提供參數(shù)集合中的節(jié)點,該節(jié)點為被觸發(fā)的節(jié)點,將所述被觸發(fā)的節(jié)點加入所述觸發(fā)服 務(wù)隊列中;步驟33,判斷觸發(fā)服務(wù)隊列中是否包括所述目的節(jié)點,如果包括,則結(jié)束所述搜索,否 則,根據(jù)服務(wù)的輸入?yún)?shù)提供者的總QoS值和被觸發(fā)的節(jié)點自身QoS值,計算被觸發(fā)節(jié)點的 總QoS值,執(zhí)行步驟34 ;步驟34,從所述觸發(fā)服務(wù)隊列中選擇總QoS值最優(yōu)的節(jié)點并將所述被選擇的節(jié)點移出 所述觸發(fā)服務(wù)隊列,所述節(jié)點為所述節(jié)點對應(yīng)服務(wù)的輸出參數(shù)的最優(yōu)提供者,將所述節(jié)點 對應(yīng)服務(wù)的輸出參數(shù)加入所述可提供參數(shù)集合中,執(zhí)行所述步驟32。
4. 如權(quán)利要求1所述的自動服務(wù)組合的方法,其特征在于, 所述步驟l進(jìn)一步為,步驟41,提取服務(wù)的輸入?yún)?shù)和輸出參數(shù)進(jìn)行存儲;步驟42,根據(jù)語義本體樹提取服務(wù)輸入?yún)?shù)對應(yīng)的概念和輸出參數(shù)對應(yīng)的概念,用哈希表保存輸入?yún)?shù)或輸出參數(shù)同對應(yīng)概念間的關(guān)系; 步驟43,采集服務(wù)的指標(biāo)信息,確定服務(wù)的QoS值。
5. 如權(quán)利要求4所述的自動服務(wù)組合的方法,其特征在于, 所述步驟43進(jìn)一步為, 步驟51,采集服務(wù)的指標(biāo)信息;步驟52,在所述服務(wù)的指標(biāo)為一維時,所述服務(wù)的QoS值為所述指標(biāo)值;步驟53,在所述服務(wù)的指標(biāo)為多維時,將所述服務(wù)的多個指標(biāo)值進(jìn)行歸一化,所述服務(wù) 的QoS值為歸一化所得值。
6. 如權(quán)利要求2所述的自動服務(wù)組合的方法,其特征在于, 所述步驟21進(jìn)一步為,步驟61,為所述依賴關(guān)系圖中每個節(jié)點對應(yīng)的服務(wù)存儲一個對應(yīng)的計數(shù)值,所述計數(shù) 值的初始值為所述服務(wù)的輸入?yún)?shù)的個數(shù),在所述依賴關(guān)系圖中查找輸入?yún)?shù)同查詢請求 的輸入?yún)?shù)匹配的節(jié)點,并將所述節(jié)點對應(yīng)的計數(shù)值減去匹配的輸入?yún)?shù)的個數(shù);步驟62,查找計數(shù)值為0的未被觸發(fā)的節(jié)點,將所述節(jié)點放入觸發(fā)服務(wù)隊列中,判斷觸 發(fā)服務(wù)隊列中是否包括所述目的節(jié)點,如果包括,則結(jié)束所述搜索,否則,根據(jù)服務(wù)的輸入 參數(shù)提供者的總QoS值和被觸發(fā)的節(jié)點自身QoS值,計算被觸發(fā)節(jié)點的總QoS值,執(zhí)行步驟63 ;步驟63,從所述觸發(fā)服務(wù)隊列中選擇總QoS值最優(yōu)的節(jié)點并將所述被選擇的節(jié)點移出 所述觸發(fā)服務(wù)隊列,更新所述節(jié)點對應(yīng)服務(wù)的輸出參數(shù)的最優(yōu)提供者為所述節(jié)點;在所述 依賴關(guān)系圖中查找滿足條件的節(jié)點,所述條件為所述節(jié)點的未被匹配的輸入?yún)?shù)同所述選 擇的節(jié)點的輸出參數(shù)相匹配,并將所述被匹配的節(jié)點對應(yīng)的計數(shù)值減去新匹配的輸入?yún)?shù) 的個數(shù),執(zhí)行所述步驟62。
7. —種自動服務(wù)組合的系統(tǒng),其特征在于,包括服務(wù)注冊模塊,用于對服務(wù)進(jìn)行注冊,存儲服務(wù)對應(yīng)的輸入?yún)?shù)、輸出參數(shù)和QoS值; 依賴關(guān)系圖生成模塊,用于接收服務(wù)的查詢請求,以查詢請求的輸入?yún)?shù)、查詢請求的需求參數(shù),以及服務(wù)為節(jié)點,根據(jù)節(jié)點對應(yīng)服務(wù)的輸入?yún)?shù)和輸出參數(shù),將所述節(jié)點組成依賴關(guān)系圖;服務(wù)組合生成模塊,用于以所述查詢請求的輸入?yún)?shù)對應(yīng)的節(jié)點為初始節(jié)點,以所述 查詢請求的需求參數(shù)對應(yīng)的節(jié)點為目的節(jié)點,在所述依賴關(guān)系圖中搜索從所述初始節(jié)點到 所述目的節(jié)點的QoS值最優(yōu)路徑,所述最優(yōu)路徑中節(jié)點對應(yīng)的服務(wù)組成所述查詢請求對應(yīng) 的服務(wù)組合。
8. 如權(quán)利要求7所述的自動服務(wù)組合的系統(tǒng),其特征在于, 從所述初始節(jié)點到節(jié)點的QoS值為所述節(jié)點的總QoS值; 所述服務(wù)組合生成模塊進(jìn)一步包括,服務(wù)提供者確定模塊,用于在所述依賴關(guān)系圖中,選擇初始節(jié)點,從所述初始節(jié)點開始 搜索,選擇當(dāng)前被觸發(fā)的節(jié)點中總QoS值最優(yōu)的節(jié)點,并以所述節(jié)點為所述節(jié)點對應(yīng)服務(wù) 的輸出參數(shù)的最優(yōu)提供者,當(dāng)所述目的節(jié)點被觸發(fā)時,搜索結(jié)束;當(dāng)節(jié)點對應(yīng)服務(wù)的輸入?yún)?數(shù)的提供者都已被選擇時,所述節(jié)點被觸發(fā);路徑生成模塊,用于在所述依賴關(guān)系圖中,確定從所述目的節(jié)點到所述初始節(jié)點的路 徑,以節(jié)點對應(yīng)服務(wù)的輸入?yún)?shù)的最優(yōu)提供者為所述節(jié)點的上游節(jié)點;所述路徑中的節(jié)點 對應(yīng)的服務(wù)組成所述服務(wù)集合。
9. 如權(quán)利要求8所述的自動服務(wù)組合的系統(tǒng),其特征在于,所述服務(wù)提供者確定模塊進(jìn)一步用于將所述查詢請求的輸入?yún)?shù)放入可提供參數(shù)集 合中;從所述依賴關(guān)系圖未被觸發(fā)的節(jié)點中查找對應(yīng)服務(wù)的輸入?yún)?shù)被包含在所述可提供 參數(shù)集合中的節(jié)點,該節(jié)點為被觸發(fā)的節(jié)點,將所述被觸發(fā)的節(jié)點加入所述觸發(fā)服務(wù)隊列中;判斷觸發(fā)服務(wù)隊列中是否包括所述目的節(jié)點,如果包括,則結(jié)束所述搜索,否則,根據(jù)服 務(wù)的輸入?yún)?shù)提供者的總QoS值和被觸發(fā)的節(jié)點自身QoS值,計算被觸發(fā)節(jié)點的總QoS值, 從所述觸發(fā)服務(wù)隊列中選擇總QoS值最優(yōu)的節(jié)點并將并將所述被選擇的節(jié)點移出所述觸 發(fā)服務(wù)隊列,所述節(jié)點為所述節(jié)點對應(yīng)服務(wù)的輸出參數(shù)的最優(yōu)提供者,將所述節(jié)點對應(yīng)服 務(wù)的輸出參數(shù)加入所述可提供參數(shù)集合中。
10. 如權(quán)利要求7所述的自動服務(wù)組合的系統(tǒng),其特征在于,所述服務(wù)注冊模塊進(jìn)一步用于提取服務(wù)的輸入?yún)?shù)和輸出參數(shù)進(jìn)行存儲;根據(jù)語義本 體樹提取服務(wù)輸入?yún)?shù)對應(yīng)的概念和輸出參數(shù)對應(yīng)的概念,用哈希表保存輸入?yún)?shù)或輸出 參數(shù)同對應(yīng)概念間的關(guān)系凍集服務(wù)的指標(biāo)信息,確定服務(wù)的QoS值。
11. 如權(quán)利要求io所述的自動服務(wù)組合的系統(tǒng),其特征在于,所述服務(wù)注冊模塊在采集服務(wù)的指標(biāo)信息,確定服務(wù)的QoS值時進(jìn)一步用于采集服務(wù) 的指標(biāo)信息;在所述服務(wù)的指標(biāo)為一維時,所述服務(wù)的QoS值為所述指標(biāo)值;在所述服務(wù)的 指標(biāo)為多維時,將所述服務(wù)的多個指標(biāo)值進(jìn)行歸一化,所述服務(wù)的QoS值為歸一化所得值。
12. 如權(quán)利要求8所述的自動服務(wù)組合的系統(tǒng),其特征在于,所述服務(wù)提供者確定模塊進(jìn)一步用于為所述依賴關(guān)系圖中每個節(jié)點對應(yīng)的服務(wù)存儲 一個對應(yīng)的計數(shù)值,所述計數(shù)值的初始值為所述服務(wù)的輸入?yún)?shù)的個數(shù),在所述依賴關(guān)系 圖中查找輸入?yún)?shù)同查詢請求的輸入?yún)?shù)匹配的節(jié)點,并將所述節(jié)點對應(yīng)的計數(shù)值減去匹 配的輸入?yún)?shù)的個數(shù);查找計數(shù)值為0的未被觸發(fā)的節(jié)點,將所述節(jié)點放入觸發(fā)服務(wù)隊列 中,判斷觸發(fā)服務(wù)隊列中是否包括所述目的節(jié)點,如果包括,則結(jié)束所述搜索,否則,根據(jù) 服務(wù)的輸入?yún)?shù)提供者的總QoS值和被觸發(fā)的節(jié)點自身QoS值,計算被觸發(fā)節(jié)點的總QoS 值,從所述觸發(fā)服務(wù)隊列中選擇總QoS值最優(yōu)的節(jié)點并將并將所述被選擇的節(jié)點移出所述 觸發(fā)服務(wù)隊列,更新所述節(jié)點對應(yīng)服務(wù)的輸出參數(shù)的最優(yōu)提供者為所述節(jié)點;在所述依賴 關(guān)系圖中查找滿足條件的節(jié)點,所述條件為所述節(jié)點的未被匹配的輸入?yún)?shù)同所述選擇的 節(jié)點的輸出參數(shù)相匹配,并將所述被匹配的節(jié)點對應(yīng)的計數(shù)值減去新匹配的輸入?yún)?shù)的個 數(shù)。
全文摘要
本發(fā)明涉及一種自動服務(wù)組合的方法及其系統(tǒng),方法包括步驟1,對服務(wù)進(jìn)行注冊,存儲服務(wù)對應(yīng)的輸入?yún)?shù)、輸出參數(shù)和QoS值;步驟2,接收服務(wù)的查詢請求,以查詢請求的輸入?yún)?shù)、查詢請求的需求參數(shù),以及服務(wù)為節(jié)點,根據(jù)節(jié)點對應(yīng)服務(wù)的輸入?yún)?shù)和輸出參數(shù),將所述節(jié)點組成依賴關(guān)系圖;步驟3,以所述查詢請求的輸入?yún)?shù)對應(yīng)的節(jié)點為初始節(jié)點,以所述查詢請求的需求參數(shù)對應(yīng)的節(jié)點為目的節(jié)點,在所述依賴關(guān)系圖中搜索從所述初始節(jié)點到所述目的節(jié)點的QoS值最優(yōu)路徑,所述最優(yōu)路徑中節(jié)點對應(yīng)的服務(wù)組成所述查詢請求對應(yīng)的服務(wù)組合。本發(fā)明能夠避免窮舉搜索提高效率,而且能夠保證組合結(jié)果的QoS值最優(yōu)。
文檔編號H04L29/08GK101719932SQ200910238520
公開日2010年6月2日 申請日期2009年11月20日 優(yōu)先權(quán)日2009年11月20日
發(fā)明者姜偉, 虎嵩林, 陳明文, 黃鎮(zhèn)球 申請人:中國科學(xué)院計算技術(shù)研究所