專利名稱:支持Top K查詢的自動服務組合方法及系統(tǒng)的制作方法
技術(shù)領域:
本發(fā)明涉及面向服務的計算領域,特別涉及一種自動服務組合方法及系統(tǒng)。
背景技術(shù):
在SOCService Oriented Computing,面向服務的計算)的推動下,作為網(wǎng)絡環(huán)境 下進行互操作和實現(xiàn)分布式系統(tǒng)的基本要素的Web服務的數(shù)目急劇增長。SOC的關(guān)鍵技術(shù) 之一在于服務組合,即將多個原子Web服務組合起來以實現(xiàn)功能更加豐富的組合服務。組 合服務的使用范圍十分廣泛,如當用戶到外地出差、旅游時,通常需要天氣預報、航班查詢、 航班訂票、預定旅店等多種服務的信息,此時就需要將多種服務進行整合,以提供”一站式” 服務給用戶?,F(xiàn)有技術(shù)中通常采用手工方法實現(xiàn)服務的組合,但手工方法具有低效、易錯的缺 陷,因此本領域技術(shù)人員開始關(guān)注于服務組合的自動實現(xiàn)。此外,不同的服務提供者可能提 供功能相似但質(zhì)量(QoQ迥異的服務。質(zhì)量低劣的服務將導致組合服務不可靠、可用性低 等問題。故在實際使用中,不僅僅需要選擇質(zhì)量優(yōu)良的原子服務,也需要選擇和構(gòu)造質(zhì)量可 保障的組合服務。綜合上述兩方面,在服務組合領域,需要設計高效的算法既可以有效地組 合相關(guān)的服務以滿足用戶的功能需求,又需要保證組合服務的質(zhì)量。這個問題稱為質(zhì)量敏 感\(zhòng)驅(qū)動的自動服務組合。但是,現(xiàn)有質(zhì)量敏感的自動服務組合方法往往只能夠搜索出最優(yōu)的或近似最優(yōu)的 服務組合結(jié)果,不能夠搜索出質(zhì)量最好的前K個結(jié)果(K可以自由設定),這給組合服務的進 一步應用帶來了不便。如果能夠搜索出質(zhì)量最好的前K個結(jié)果,將會帶來以下好處(1)用 戶具有更多的選擇權(quán),可以根據(jù)自己的喜好(非QoS因素)進行選擇;(2)當最優(yōu)服務組合 結(jié)果失效時,可以利用其它K-I個結(jié)果替代。從而提供系統(tǒng)的可靠性;(3)從服務提供者的 角度看,提供前K個服務組合結(jié)果而不僅僅是一個最好的結(jié)果,可以避免負載不均的情況。 除去那種低效的搜索所有的服務組合結(jié)果然后排序的方法外,在現(xiàn)有技術(shù)中尚不存在能夠 準確自動搜索出前K個QoS最好的服務組合結(jié)果的相關(guān)方法或系統(tǒng)。
發(fā)明內(nèi)容
本發(fā)明的目的是克服現(xiàn)有方法只能夠搜索出最優(yōu)的或近似最優(yōu)的服務組合結(jié)果, 不能夠搜索出質(zhì)量最好的前K個結(jié)果的缺陷,從而提供一種能夠提供支持Top K查詢的自 動服務組合方法。為了實現(xiàn)上述目的,本發(fā)明提供了一種支持Top K查詢的自動服務組合方法,包 括步驟1)、用戶提交一用于請求前K個質(zhì)量最好的服務組合結(jié)果的查詢請求,根據(jù) 該查詢請求以及多個原子服務的輸入?yún)?shù)、輸出參數(shù)、原子服務間的匹配關(guān)系建立服務依 賴圖,由所述服務依賴圖找出滿足所述查詢請求第一最優(yōu)關(guān)鍵路徑;其中,所述最優(yōu)關(guān)鍵路徑為總服務質(zhì)量值allQoS最優(yōu)的關(guān)鍵路徑;所述關(guān)鍵路徑為一條或多條只包括關(guān)鍵前驅(qū)的鏈狀順序路徑;所述關(guān)鍵前驅(qū)是指對于服務組合結(jié)果中的任意 一個服務節(jié)點,其所有輸入?yún)?shù)的最優(yōu)提供者中總服務質(zhì)量值allQoS最差的那個提供者; 所述總服務質(zhì)量值allQoS為從所述查詢請求的查詢輸入?yún)?shù)開始到所在原子服務被調(diào)用 后的服務質(zhì)量值;步驟2、、將所述第一最優(yōu)關(guān)鍵路徑保存在一集合中;步驟幻、從所述集合中選取總服務質(zhì)量值allQoS最優(yōu)的至少一條關(guān)鍵路徑作為 當前的最優(yōu)關(guān)鍵路徑,并生成對應的服務組合結(jié)果,然后對當前的最優(yōu)關(guān)鍵路徑進行松弛 操作,生成新的關(guān)鍵路徑,并放入所述集合中;其中,所述松弛操作包括改變關(guān)鍵路徑中的某一個節(jié)點的關(guān)鍵前驅(qū)來獲取一個新的 allQoS更差的關(guān)鍵路徑;步驟4)、重復步驟3)的操作,直到已經(jīng)找到的所有服務組合結(jié)果的數(shù)目達到用戶 所需要的K值。上述技術(shù)方案中,在所述的步驟幻中,在對當前的最優(yōu)關(guān)鍵路徑進行松弛操作 時,不對當前的最優(yōu)關(guān)鍵路徑中之前已經(jīng)做過松弛操作的結(jié)點做重復的松弛操作。上述技術(shù)方案中,在所述的步驟幻中,所述的松弛操作包括步驟3-1)、選擇當前的最優(yōu)關(guān)鍵路徑中的某一個結(jié)點作為待做松弛操作的松弛結(jié)占.步驟3- 、從所述松弛結(jié)點的各個輸入?yún)?shù)的所有提供者中尋找具有最好 allQoS的提供者且該提供者的allQoS差于目前的關(guān)鍵前驅(qū)的allQoS,若能找到,將該提供 者記為新提供者,并執(zhí)行下一步,否則步驟3-3)、將所述松弛結(jié)點的前驅(qū)結(jié)點改為所述的新提供者,保持所述松弛結(jié)點 到所述終結(jié)結(jié)點的路徑不變;步驟3-4)、從所述新提供者開始,從后往前,為每個結(jié)點尋找其前驅(qū)結(jié)點,直到起 始結(jié)點,從而形成一條從起始結(jié)點開始,經(jīng)由所述新提供者,最終到達所述終結(jié)結(jié)點的新的 關(guān)鍵路徑。上述技術(shù)方案中,在所述的步驟幻中,所述的生成對應的服務組合結(jié)果包括由 最優(yōu)關(guān)鍵路徑生成有向無環(huán)圖,由所述有向無環(huán)圖得到服務組合結(jié)果。上述技術(shù)方案中,所述的由最優(yōu)關(guān)鍵路徑生成有向無環(huán)圖包括從后往前遍歷最優(yōu)關(guān)鍵路徑,對于其中每一個結(jié)點,為它的非關(guān)鍵參數(shù)選擇不能 改變關(guān)鍵路徑的提供者;所述非關(guān)鍵參數(shù)是指對于服務依賴圖中的一個結(jié)點,由該結(jié)點的 非關(guān)鍵前驅(qū)所提供的參數(shù)。上述技術(shù)方案中,所述集合按照關(guān)鍵路徑的allQoS值對所保持的關(guān)鍵路徑進行 排序,allQoS值越優(yōu)者越優(yōu)先從所述集合中取出。本發(fā)明還提供了一種自動服務組合系統(tǒng),包括第一最優(yōu)關(guān)鍵路徑查找模塊、服務 組合結(jié)果生成模塊;其中,所述的第一最優(yōu)關(guān)鍵路徑查找模塊用于由用戶提交一用于請求前K個質(zhì)量最好 的服務組合結(jié)果的查詢請求,根據(jù)該查詢請求以及多個原子服務的輸入?yún)?shù)、輸出參數(shù)、原 子服務間的匹配關(guān)系建立服務依賴圖,由所述服務依賴圖找出滿足所述查詢請求第一最優(yōu) 關(guān)鍵路徑;其中,
所述最優(yōu)關(guān)鍵路徑為總服務質(zhì)量值allQoS最優(yōu)的至少一條關(guān)鍵路徑;所述關(guān)鍵 路徑為一條或多條只包括關(guān)鍵前驅(qū)的鏈狀順序路徑;所述關(guān)鍵前驅(qū)是指對于服務組合結(jié)果 中的任意一個服務節(jié)點,其所有輸入?yún)?shù)的最優(yōu)提供者中總服務質(zhì)量值allQoS最差的那 個提供者;所述總服務質(zhì)量值allQoS為從所述查詢請求的查詢輸入?yún)?shù)開始到所在原子 服務被調(diào)用后的服務質(zhì)量值;所述的服務組合結(jié)果生成模塊用于將所述第一最優(yōu)關(guān)鍵路徑保存在一集合中;然 后從所述集合中選取總服務質(zhì)量值allQoS最優(yōu)的關(guān)鍵路徑作為當前的最優(yōu)關(guān)鍵路徑,并 生成對應的服務組合結(jié)果,接著對當前的最優(yōu)關(guān)鍵路徑進行松弛操作,生成新的關(guān)鍵路徑, 并放入所述集合中;最后重復上述操作,直到已經(jīng)找到的所有服務組合結(jié)果的數(shù)目達到用 戶所需要的K值;其中,所述松弛操作包括改變關(guān)鍵路徑中的某一個節(jié)點的關(guān)鍵前驅(qū)來獲取一個新的 alIQoS更差的關(guān)鍵路徑。上述技術(shù)方案中,所述的松弛操作模塊在對當前的最優(yōu)關(guān)鍵路徑進行松弛操作 時,不對當前的最優(yōu)關(guān)鍵路徑中之前已經(jīng)做過松弛操作的結(jié)點做重復的松弛操作。本發(fā)明的優(yōu)點在于1、本發(fā)明將自動服務組合和選取最優(yōu)質(zhì)量的組合結(jié)果結(jié)合起來,提高了求最優(yōu)服 務組合的結(jié)果的自動化程度。2、本發(fā)明通過挖掘出關(guān)鍵路徑與DAG之間的關(guān)系,將求取Top K組合結(jié)果簡化為 求取Top k關(guān)鍵路徑,大大提高了算法的效率。3、本發(fā)明采用過濾可觸發(fā)服務和堆排序算法,縮減了搜索空間,保證了搜索的速度。
圖1為在一個實施例中,本發(fā)明所涉及的服務依賴圖的示意圖;圖2為在一個實施例中,一個服務組合結(jié)果的DAG表示形式的示意圖;圖3為在一個實施例中,本發(fā)明所涉及的數(shù)據(jù)結(jié)構(gòu)的示意圖;圖4為在一個實施例中,在圖1所示的服務依賴圖的基礎上做從前往后搜索所有 可觸發(fā)服務的中間結(jié)果示意圖;圖5為在一個實施例中,在圖4所得到的最優(yōu)關(guān)鍵路徑的基礎上做松弛操作的中 間結(jié)果示意圖;圖6為在一個實施例中,由圖4所得到的最優(yōu)關(guān)鍵路徑所得到的有向無環(huán)圖;圖7為在一個實施例中,對圖4所得到的最優(yōu)關(guān)鍵路徑做松弛操作得到的新的最 優(yōu)關(guān)鍵路徑,由該最優(yōu)關(guān)鍵路徑所得到的有向無環(huán)圖;圖8為在一個實施例中,對圖7所得到的最優(yōu)關(guān)鍵路徑做松弛操作得到的新的最 優(yōu)關(guān)鍵路徑,由該最優(yōu)關(guān)鍵路徑所得到的有向無環(huán)圖;圖9為在一個實施例中,本發(fā)明的自動服務組合方法的流程圖。
具體實施例方式在對本發(fā)明做詳細說明前,首先對本發(fā)明中所涉及的相關(guān)概念進行說明。
服務服務Wi表示成一個三元組(Iwi,Owi,Qwi) (1彡i彡N)。其中,Iwi, Offi分別代 表服務輸入?yún)?shù)、輸出參數(shù)。^ti是服務質(zhì)量的集合,β =IQlj I;}。服務質(zhì)量OioS):服務質(zhì)量是服務的非功能屬性,如price(價格)、response time (響應時間)、throughput (吞吐量)等都可以作為服務質(zhì)量的參考指標。本發(fā)明將 用于描述服務質(zhì)量的指標分為四種類型sum類型(如響應時間)、min類型(如吞吐量)、 multiplication類型(如reputation聲譽)、max類型(如1/吞吐量),通常情況下,min 類型和max類型可以相互轉(zhuǎn)化。例如,求取k個順序調(diào)用服務的總吞吐量,由于吞吐量屬于 min類型,因此總吞吐量的值等于這k個服務中最小的吞吐量,因為k個服務中最小的吞吐 量是系統(tǒng)吞吐量的瓶頸。另外,本發(fā)明還將用于描述服務質(zhì)量的指標按照其值與服務質(zhì)量好壞間的正反關(guān) 系分為兩類一類是Positive 其值越大,服務質(zhì)量越好,如吞吐量;另一類是Negative 其值越小,服務質(zhì)量越好,如響應時間。本發(fā)明中還可以將QoS分為selfQoS和allQoS,每個原子服務自身的服務質(zhì)量記 為selfQoS,而allQoS為若干個服務組合后的“合成服務/組合服務”的總服務質(zhì)量。參數(shù)匹配對于來自服務的任意兩個參數(shù)Pa,Pb,通過語義信息中的本體樹來確定 Pa、Pb之間的匹配關(guān)系。用Conc印t (Pa)、CoiK^pt(Pb)分別表示該兩個參數(shù)對應的概念。當 且僅當它們屬于同一個概念,或者Concept (Pa) subClassof Concept (Pb) (subClassof表示 子類),我們稱Pa匹配Pb。服務匹配服務匹配建立在參數(shù)匹配的基礎上。如果任意兩個服務Wa和\,存在 OwaI ,則這兩個服務可以匹配。服務匹配又分為為完全匹配和部分匹配,分別對應下面兩種關(guān)系Owa 3 Iwb ,則 Wa 完全匹配 Wb ;則 ^部分匹配 Wb。Top K查詢從大量的原子服務中找出滿足某一查詢要求的服務組合結(jié)果中質(zhì)量 最好的前K個結(jié)果(K可以是用戶指定或采用服務組合系統(tǒng)的默認值)。在對本發(fā)明所涉及的一些基本概念作上述說明后,參考圖9,下面對本發(fā)明的實現(xiàn) 方法進行說明。步驟10、根據(jù)用戶的查詢請求建立原子服務的依賴關(guān)系圖。在本發(fā)明中,對多個原子服務進行組合形成服務組合結(jié)果的起因在于用戶發(fā)出了 查詢請求。在此將查詢請求標記為R,將查詢請求R的查詢條件記為Ικ(也就是查詢請求的 輸入?yún)?shù)),將查詢請求R的查詢結(jié)果記為0Κ(也就是查詢請求的輸出參數(shù))。在得到用戶的查詢請求后,就可以將該查詢請求作為兩個特殊節(jié)點添加到原子服 務的依賴關(guān)系圖(簡稱服務依賴圖)。在圖1中給出了服務依賴圖的一個例子,在該圖中,結(jié) 點代表各個原子服務,每個結(jié)點具有的權(quán)重是該結(jié)點所代表的原子服務的QoS值(為理解 和敘述的方便,以下服務質(zhì)量均以響應時間為例。如在圖1中僅僅將響應時間作為QoS值。 由于響應時間是越小越好,所以下文中在allQoS “較小”的可觸發(fā)服務意味著allQoS “較 好”的可觸發(fā)服務。如果當服務質(zhì)量為吞吐量時,則指的是allQoS “較大”的可觸發(fā)服務)。 每個結(jié)點之前的輸入箭頭上的標記(如結(jié)點W7的輸入箭頭上的I)表示該結(jié)點所代表的原 子服務的輸入?yún)?shù),每個結(jié)點之后的輸出箭頭上的標記(如結(jié)點W7的輸出箭頭上的F)表示該結(jié)點所代表的原子服務的輸出參數(shù)。圖1中的結(jié)點Vs代表前述的查詢請求R的查詢 條件Ικ,結(jié)點Ve代表前述的查詢請求R的查詢結(jié)果0Κ。從對服務依賴圖的描述看,該圖實 質(zhì)是一個有向圖。在創(chuàng)建服務依賴圖時,圖中各個原子服務的輸入?yún)?shù)、輸出參數(shù)、QoS值等信息都 是已知的,如在本發(fā)明的一個實施例中,可從WSDL (Webkrvice Definition Language)文 件中提取出原子服務的輸入、輸出參數(shù),從WSLA(Web Service Level Agreement)文件中采 集原子服務的QoS信息。這些信息的獲取可在預處理步驟中實現(xiàn),如圖9中的步驟00。由 這些信息創(chuàng)建服務依賴圖的過程已經(jīng)在本申請人于2009年申請的名稱為《自動服務組合 的系統(tǒng)及方法》、申請?zhí)枮?00910238520. 5的中國專利申請中有詳細的說明,該申請所提到 的內(nèi)容也包含在本發(fā)明中。步驟20、根據(jù)服務依賴圖找出最優(yōu)關(guān)鍵路徑,將這一最優(yōu)關(guān)鍵路徑保存在一優(yōu)先 隊列中。在上述服務依賴圖的基礎上,要查找出滿足查詢請求R的服務組合實質(zhì)上就是 要在服務依賴圖中找出以Ik為初始結(jié)點,可以使Ok滿足的子圖,而要找出質(zhì)量最好的前 K個結(jié)果也就是要篩選出全局QoS最好的前K個子圖。在本實施例中,用于表示服務組合 結(jié)果的子圖為DAG(有向無環(huán)圖),但在其他實施例中,該子圖也可以用其它表示方式,如 BPEL(BusinessProcess Executive Language,業(yè)務過程執(zhí)行語言),我們的系統(tǒng)可以提供 BPEL和DAG格式之間的轉(zhuǎn)換。雖然窮舉的方法(即找出所有的組合結(jié)果)也可以解決上述 問題,但顯然效率很低;尤其當原子服務數(shù)量較大,存在很多功能相似的原子服務時,服務 組合結(jié)果的數(shù)量勢必巨大,窮舉方法的缺陷也更為突出。因此,在本發(fā)明下列實施例中,采 用了不同的實現(xiàn)方法來尋找質(zhì)量最好的K個服務組合。在本步驟中所要完成的就是由服務 依賴圖找出最優(yōu)關(guān)鍵路徑。為了便于理解,在對由服務依賴圖找出最優(yōu)關(guān)鍵路徑的相關(guān)操作做詳細說明之 前,還要對其中所涉及到的一些概念加以說明。關(guān)鍵前驅(qū)對于服務組合結(jié)果中的任意一個服務節(jié)點,它的關(guān)鍵前驅(qū)是其所有輸 入?yún)?shù)的提供者中allQoS最差的那個提供者。以圖2為例,Ve的輸入?yún)?shù)D、E的提供者分 別是Vwi和Vw2,在該例子中,只用響應時間RS表示服務質(zhì)量,由于Vwi. allQoS = 20ms < Vff2. allQoS = 50ms,因此根據(jù)關(guān)鍵前驅(qū)的定義,Ve的關(guān)鍵前驅(qū)是VW2。關(guān)鍵參數(shù)對于服務組合結(jié)果中的任意一個服務結(jié)點,其關(guān)鍵前驅(qū)提供的參數(shù)稱 為關(guān)鍵參數(shù),否則稱為非關(guān)鍵參數(shù)。在定義關(guān)鍵參數(shù)后,可以隨意替換非關(guān)鍵參數(shù)的提供者 (只要非關(guān)鍵參數(shù)的提供者的allQoS優(yōu)于關(guān)鍵前驅(qū)的allQoS,否則該服務結(jié)點的關(guān)鍵前驅(qū) 發(fā)生變化),而服務結(jié)點的allQoS仍然保持不變。如圖2所示,將Wl替換成W3,而Ve. allQoS 仍然為50ms。關(guān)鍵路徑對于一個服務組合結(jié)果,其關(guān)鍵路徑是一條只包括關(guān)鍵前驅(qū)的鏈狀順 序路徑,該關(guān)鍵路徑的全局QoS(allQoS)與服務組合結(jié)果的allQoS相等。以圖2為例,它 的關(guān)鍵路徑是 Vs — Vff2 — Ve。由于 DAGlVs,Vwi,Vw2,Ve}和 DAG{Vs,Vw3,Vw2,Ve}具有相同 的關(guān)鍵路徑Vs — Vff2 — Ve,故這兩個DAG的allQoS也相同。如果利用W4代替W2,新的關(guān) 鍵路徑是Vs — Vff4 — Ve,它的allQoS是60ms,Ve的關(guān)鍵前驅(qū)從Vw2變?yōu)閂w4。將這種替換 關(guān)鍵前驅(qū),生成新的QoS更差的關(guān)鍵路徑的操作稱為松弛操作。在下文中有對松弛操作的詳細說明。關(guān)鍵路徑與服務組合結(jié)果具有以下性質(zhì)1、關(guān)鍵路徑的allQoS與其對應的服務組合結(jié)果的allQoS相同。2、只要關(guān)鍵路徑?jīng)]有改變,無論參數(shù)的提供者如何變化,生成的服務組合結(jié)果的 allQoS仍然是保持不變的。3、一個服務組合結(jié)果可能有很多個關(guān)鍵路徑,這些關(guān)鍵路徑的allQoS是相同的。4、一條關(guān)鍵路徑對應一個或多個服務組合結(jié)果,換句話說,不同的服務組合結(jié)果 可以具有相同的關(guān)鍵路徑。除了上述概念外,要實現(xiàn)對最優(yōu)關(guān)鍵路徑的查找還涉及到一些數(shù)據(jù)結(jié)構(gòu),在本發(fā) 明的一個實施例中,根據(jù)服務依賴圖做最優(yōu)關(guān)鍵路徑的查詢時用到了圖3所示的與服務結(jié) 點有關(guān)的數(shù)據(jù)結(jié)構(gòu)以及與參數(shù)(指服務的輸入或輸出參數(shù))有關(guān)的數(shù)據(jù)結(jié)構(gòu)。其中,與服務 有關(guān)的數(shù)據(jù)結(jié)構(gòu)中存儲了該服務本身的QoS值(selfQoS)以及從查詢輸入Ik開始至該服務 被調(diào)用后的總QoS值(allQoQ。與服務有關(guān)的數(shù)據(jù)結(jié)構(gòu)中還有一個count值,該count初 始值是服務輸入?yún)?shù)的數(shù)目,每當服務的一個輸入?yún)?shù)被滿足后,count值減一,當count 值為零時,表明該服務被觸發(fā)或稱為可觸發(fā)服務。與參數(shù)有關(guān)的數(shù)據(jù)結(jié)構(gòu)保存了可以提供 給本參數(shù)的QoS值及其對應的提供者列表。此外,在本發(fā)明的一個實施例中,還包括了兩個 用于存儲服務結(jié)點或參數(shù)的數(shù)據(jù)結(jié)構(gòu),一是“觸發(fā)服務堆”,它用來保存可被觸發(fā)的原子服 務,由于“堆”本身的特性,因此保存在“觸發(fā)服務堆”中的原子服務都按照各個服務的服務 質(zhì)量allQoS進行排序;二是“可提供的參數(shù)集合”,該集合用于保存可提供給各個原子服務 的參數(shù)。此外,本步驟中所采用的優(yōu)先隊列按照allQoS值對所保存的關(guān)鍵路徑進行排序。 用于實現(xiàn)本發(fā)明的數(shù)據(jù)結(jié)構(gòu)并不局限于上面所提到的,在其他實施例中,也可以采用其它 類型的數(shù)據(jù)結(jié)構(gòu),只要能實現(xiàn)本發(fā)明的方法即可。對相關(guān)數(shù)據(jù)結(jié)構(gòu)做上述說明后,下面對查找最優(yōu)關(guān)鍵路徑的具體實現(xiàn)步驟加以描 述步驟21、按照由前往后的搜索方式,找出可以被觸發(fā)的服務,將它們保存在所述的 “觸發(fā)服務堆”中。最初,該堆中僅含有那些可以被Ik直接觸發(fā)的服務,然后轉(zhuǎn)到下一步。步驟22、判斷堆是否為空,分為兩種情況A、當堆不為空每次從該堆中取出allQoS最好的服務。對于該服務的每一個輸出 參數(shù)(outputs),為該服務的輸出參數(shù)更新QoS值及對應的提供者列表,并且根據(jù)該服務的 每一個輸出參數(shù)及反向索引表,找出需要它的服務,并將這些服務的count值減一。當某些 服務的count值為變?yōu)榱銜r,這些服務被觸發(fā),記錄它們的allQoS值。然后將這些新觸發(fā) 的服務也加入觸發(fā)服務堆中,轉(zhuǎn)到步驟22的判斷操作。B、當堆為空時判斷查詢請求Ok是否可觸發(fā),如果不可以觸發(fā),返回“無結(jié)果”,否則執(zhí)行步驟23。步驟23、查詢請求R可以被滿足,此時通過反向搜索找出最優(yōu)關(guān)鍵路徑,由最優(yōu)關(guān) 鍵路徑得到最優(yōu)服務組合結(jié)果。此處所述的反向搜索包括從查詢需要的參數(shù)Ok開始,對于服務節(jié)點的每一個參 數(shù),根據(jù)其最優(yōu)的提供者,可以找出該服務的關(guān)鍵前驅(qū),并記錄它們之間的順序;同理,對于 關(guān)鍵前驅(qū),根據(jù)它的每一輸入?yún)?shù),根據(jù)它們的最優(yōu)提供者找出關(guān)鍵前驅(qū),直到Ik為止,從而得到最優(yōu)關(guān)鍵路徑。步驟30、從所述優(yōu)先隊列中選取總服務質(zhì)量值allQoS最優(yōu)的關(guān)鍵路徑作為當前 的最優(yōu)關(guān)鍵路徑,并生成對應的DAG,然后對當前的最優(yōu)關(guān)鍵路徑進行松弛操作,生成新的 關(guān)鍵路徑,并放入所述優(yōu)先隊列中;重復上述操作,直到已經(jīng)找到的所有DAG的數(shù)目達到用 戶所需要的K值。在找到最優(yōu)關(guān)鍵路徑后,可以在本步驟中就由最優(yōu)關(guān)鍵路徑得到最優(yōu)服務組合結(jié) 果,由最優(yōu)關(guān)鍵路徑得到最優(yōu)服務組合結(jié)果的一種實現(xiàn)方式是本步驟中所提到的由最優(yōu)關(guān) 鍵路徑生成有向無環(huán)圖DAG,所述DAG中所包含的原子服務就組成了所述的最優(yōu)服務組合 結(jié)果。由關(guān)鍵路徑生成DAG的方法是從后往前遍歷關(guān)鍵路徑,對于其中每一個結(jié)點,為它 的非關(guān)鍵參數(shù)選擇提供者,確保選擇的提供者不會改變關(guān)鍵路徑即可。前文中提到,在其他 實施例中,也可以用BPEL表示服務組合結(jié)果,本領域技術(shù)人員依據(jù)現(xiàn)有技術(shù)可實現(xiàn)最優(yōu)關(guān) 鍵路徑到BPEL的轉(zhuǎn)換。在本步驟中有一個關(guān)于松弛操作的概念,下面先對這一概念進行說明。松弛操作松弛操作是對關(guān)鍵路徑的一個操作。它指的是改變關(guān)鍵路徑中某一個 節(jié)點的關(guān)鍵前驅(qū)來獲取一個新的allQoS更差的關(guān)鍵路徑。這個節(jié)點稱為松弛節(jié)點。松弛 節(jié)點的新關(guān)鍵前驅(qū)必須從該結(jié)點的所有輸入?yún)?shù)的提供者中選取。每一次松弛操作中,選 取具有最好allQoS的提供者且它的allQoS差于目前的關(guān)鍵前驅(qū)的allQoS。如此,可以獲 取一個新的QoS更差的關(guān)鍵路徑。設新的關(guān)鍵路徑allQoS是M,老的關(guān)鍵路徑的allQoS是 N,不會存在一個關(guān)鍵路徑(記為L),使得N. allQoS < L. allQoS < Μ. allQoS。即經(jīng)過松 弛操作后的新的關(guān)鍵路徑M必定是所有allQoS比N差的關(guān)鍵路徑中最好的那一個。具體的說,所述松弛操作包括以下步驟(1)、在關(guān)鍵路徑中選擇某一個結(jié)點作為松弛結(jié)點;(2)、從該松弛結(jié)點的各個輸入?yún)?shù)的所有提供者中找出具有最好allQoS的提 供者(記為newProvider)且它的allQoS大于目前的關(guān)鍵前驅(qū)的allQoS ;(3)、將松弛結(jié)點的前驅(qū)改為newProvider,并保持從松弛節(jié)點出發(fā)到終止節(jié)點 (Ve)的路徑不變;(4)、從newProvider開始,從后往前為每個節(jié)點V找出前驅(qū)(V的每個輸入?yún)?shù)的 最優(yōu)提供者中最差的那個),直到起始結(jié)點(Vs);(5)、新形成了一條從Vs經(jīng)newProvider到Ve的新關(guān)鍵路徑。其中newProvider 到Ve部分不變。在本實施例中,所有計算得到的關(guān)鍵路徑都存儲在優(yōu)先隊列中,每次取出當前最 優(yōu)關(guān)鍵路徑,執(zhí)行下列操作首先生成對應的若干個最優(yōu)DAG(不同的DAG可以有相同的關(guān)鍵路徑),若總的 DAG數(shù)目小于K,則通過松弛操作得到新的最優(yōu)關(guān)鍵路徑放入優(yōu)先隊列中。若總的DAG數(shù)目 已經(jīng)到達K,則終止!如何由最優(yōu)關(guān)鍵路徑得到最優(yōu)服務組合在前文中已經(jīng)有相關(guān)的描述, 因此不在此處重復。從本步驟的描述看,所述優(yōu)先隊列的使用有助于提高選取總服務質(zhì)量 值alIQoS最優(yōu)的關(guān)鍵路徑的效率,在其他實施例中,也可以采用其它數(shù)據(jù)結(jié)構(gòu)來保存關(guān)鍵 路徑,但顯然會降低提取最優(yōu)關(guān)鍵路徑的效率。以上是對本發(fā)明的自動服務組合方法的說明,為了便于理解,下面結(jié)合圖1所示的實例,對本發(fā)明的實現(xiàn)過程進行說明。步驟1)、首先,對服務依賴圖從查詢起始節(jié)點開始做前向搜索。參考圖4,該步驟 包括步驟1-1)、最開始的時候,“觸發(fā)服務堆”中只包括用于表示查詢條件的結(jié)點Ik,此 時“可提供的參數(shù)集合”為空。步驟1-2)、將“觸發(fā)服務堆”中服務質(zhì)量最好的服務Ik移出,參見圖1,將Ik可以 觸發(fā)的服務W1、W2、W3、W6、W7、W9、W12加入“觸發(fā)服務堆”中,并根據(jù)服務質(zhì)量(allQoS)排 序。放入“觸發(fā)服務堆”中的服務如Wl (5)的形式,Wl表示服務的名稱,5表示allQoS值。 被觸發(fā)服務的輸出參數(shù)放在“可提供的參數(shù)集合”中,該集合的初始值是^可以提供的參數(shù) I、J、G。它們的allQoS值為0,提供者都為Ικ。因此,這些參數(shù)可記為I (0,IE), J (0, Ie), G(0,Ie),每一項分別對應參數(shù)名稱、allQoS值、提供者。步驟1-3)、將“觸發(fā)服務堆”中服務質(zhì)量最好的服務Wl ( 取出處理。Wl的輸出 參數(shù)為J,故在“可提供的參數(shù)集合”新添一項J(5,W1)。此時,沒有新的服務從不可觸發(fā)狀 態(tài)變?yōu)榭捎|發(fā)狀態(tài)。步驟1-4)、將“觸發(fā)服務堆”中服務質(zhì)量最好的服務W6 00)取出處理。W6的輸出 參數(shù)為D,故在“可提供的參數(shù)集合”加入IK20,W6)。沒有新的服務從不可觸發(fā)狀態(tài)變?yōu)榭?觸發(fā)狀態(tài)。步驟1-5)、將“觸發(fā)服務堆”中服務質(zhì)量最好的服務W7 00)取出處理。W7的輸出 參數(shù)為F,故“可提供的參數(shù)集合”加入F (20, W7)。此時,W8被觸發(fā),將W8加入服務觸發(fā)堆中。步驟1-6)、將“觸發(fā)服務堆”中服務質(zhì)量最好的服務W12 (20)取出處理。W12的輸 出參數(shù)為M,故“可提供的參數(shù)集合”加ΛΜΟΟ,W12)。沒有新的服務從不可觸發(fā)狀態(tài)變?yōu)?可觸發(fā)狀態(tài)。步驟1-7)、將“觸發(fā)服務堆”中服務質(zhì)量最好的服務W3 (30)取出處理。W3的輸出 參數(shù)為Α,故“可提供的參數(shù)集合”加入A (30,W3)。此時,W4被觸發(fā),將W4加入服務觸發(fā)堆中。步驟1-8)、將“觸發(fā)服務堆”中服務質(zhì)量最好的服務W9 (30)取出處理。W9的輸出 參數(shù)為H,故“可提供的參數(shù)集合”加入H(30,W9)。此時,WlO被觸發(fā),將WlO加入服務觸發(fā)堆中。步驟1-9)、將“觸發(fā)服務堆”中服務質(zhì)量最好的服務W2 (3 取出處理。W2的輸出 參數(shù)A,故“可提供的參數(shù)集合”加入A(35,W2)。沒有新的服務從不可觸發(fā)狀態(tài)變?yōu)榭捎|發(fā) 狀態(tài)。步驟1-10)、將“觸發(fā)服務堆”中服務質(zhì)量最好的服務W4 00)取出處理。W4的輸 出參數(shù)B,故“可提供的參數(shù)集合”加入B (40, W4)。此時,W5所需要的參數(shù)B與M都已滿足 (M在之前的步驟1-6)中被提供),W5被觸發(fā),將W5加入服務觸發(fā)堆中。步驟1-11)、將“觸發(fā)服務堆”中服務質(zhì)量最好的服務WW48)取出處理。W8的輸 出參數(shù)B,故“可提供的參數(shù)集合”加入W48,W8)。沒有新的服務從不可觸發(fā)狀態(tài)變?yōu)榭捎| 發(fā)狀態(tài)。步驟1-12)、將“觸發(fā)服務堆”中服務質(zhì)量最好的服務W5 (50)取出處理。W5的輸出參數(shù)C,故“可提供的參數(shù)集合”加入C (50,W5)。此時,Wll所需要的參數(shù)C、D都已滿足 (D在之前的步驟1-4)中被提供),Wll被觸發(fā),將Wll加入服務觸發(fā)堆中。步驟1-13)、將“觸發(fā)服務堆”中服務質(zhì)量最好的服務Wll(55)取出處理。Wll的 輸出參數(shù)K,故“可提供的參數(shù)集合”加入K(55,W11)。此時,Ok可以被觸發(fā)(0K無需放入觸 發(fā)堆中),對 可以被觸發(fā)進行標記。沒有其它的服務從不可觸發(fā)狀態(tài)變?yōu)榭捎|發(fā)狀態(tài)。步驟1-14)、將“觸發(fā)服務堆”中服務質(zhì)量最好的服務WlO (70)取出處理。WlO的 輸出參數(shù)D,故“可提供的參數(shù)集合”加入D (70,W10)。沒有新的服務從不可觸發(fā)狀態(tài)變?yōu)?可觸發(fā)狀態(tài)。此時“觸發(fā)服務堆”為空。前向搜索終止。步驟2、、在完成對服務依賴圖的前向搜索后,根據(jù)搜索結(jié)果知道Ok可以被觸發(fā),由 此找出服務依賴圖中的最優(yōu)關(guān)鍵路徑。該步驟包括步驟2-1)、鑒于Ok的輸入?yún)?shù)為K,從“可提供參數(shù)集合“中找出參數(shù)K(55,Wll), 由此得到Ok的關(guān)鍵前驅(qū)只能為W11。步驟2_2~)、Wll的輸入?yún)?shù)為C和D,從“可提供參數(shù)集合“中能夠找到的相關(guān)參 數(shù)信息為C (50,W5) ,D (20, W6)、D (70,W10)。為C、D選擇最優(yōu)提供者,故Wll的前驅(qū)為W5、 W60 由于 W5. allQoS > W6. allQoS,故 Wll 的關(guān)鍵前驅(qū)是 W5。步驟2-3)、W5的輸入?yún)?shù)是B和M,從“可提供參數(shù)集合“中能夠找到的相關(guān)參數(shù) 信息為B 00,W4), B(48, W8), M(20, W12)。為B、M選擇最優(yōu)提供者,故W5的前驅(qū)是W4和 W12。由于 W12. allQoS < W4. allQoS,故 W5 的關(guān)鍵前驅(qū)是 W4。步驟2-4)、W4的輸入?yún)?shù)為A,從“可提供參數(shù)集合“中能夠找到的相關(guān)參數(shù)信息 為A (30,W3)、A(35,W2)。為A選擇最優(yōu)提供者,故W4的關(guān)鍵前驅(qū)只能是W3。步驟2-5)、W3的輸入?yún)?shù)為I,可提供參數(shù)集合“中相關(guān)信息為1(0,Ik),故W3的 關(guān)鍵前驅(qū)是Ικ。步驟2-6)、最后將上述關(guān)鍵前驅(qū)連接起來即得到最優(yōu)DAG對應的關(guān)鍵路徑,即最 優(yōu)關(guān)鍵路徑ΙΚ — W3 — W4 — W5 — Wll — Oro其全局QoS為55ms,也即最優(yōu)DAG的allQoS。 保存該關(guān)鍵路徑,圖1中虛線雙箭頭標示出了通過上述步驟所找到的最優(yōu)關(guān)鍵路徑。步驟幻、由最優(yōu)關(guān)鍵路徑搜索出Top K個最優(yōu)服務結(jié)果。在本實施例中,假設K為 3,結(jié)合圖5,對本步驟的具體實現(xiàn)進行說明。步驟3-1)、取出之前保存在優(yōu)先隊列P(ikp中的當前的最優(yōu)關(guān)鍵路徑 Ik — W3 — W4 — W5 — Wll — 0E(55ms),由該最優(yōu)關(guān)鍵路徑生成對應的DAG。由關(guān)鍵 路徑生成DAG的方法是從后往前遍歷關(guān)鍵路徑,對于其中每一個結(jié)點,為它的非關(guān)鍵 參數(shù)選擇提供者,確保選擇的提供者不會改變關(guān)鍵路徑即可。圖6是由最優(yōu)關(guān)鍵路徑 Ik — W3 — W4 — W5 — Wll — Ok 所生成的 DAG。步驟3- 、對關(guān)鍵路徑Ik — W3 — W4 — W5 — Wll — 0E (55ms)從后往前對各個結(jié) 點0K、Wll、W5、W4、W3進行松弛操作,得到多條新的關(guān)鍵路徑Ik — W2 — W4 — W5 — Wll — 0K(60ms);Ik — W7 — W8 — W5 — Wll — 0K(63ms);Ik — W9 — WlO — Wll — 0K(75ms)。保存上述新得到的關(guān)鍵路徑。步驟3- 、從新得到的關(guān)鍵路徑中根據(jù)服務質(zhì)量,找出當前最優(yōu)的關(guān)鍵路徑Ik — W2 — W4 — W5 — Wll — 0E(60ms),并生成對應的DAG。圖7即為由關(guān)鍵路徑 Ik — W2 — W4 — W5 — Wll — Oe(60ms)所生成的 DAG。步驟3-4)、對之前得到的當前最優(yōu)的關(guān)鍵路徑 Ik — W2 — W4 — W5 — Wl 1 — Ok (60ms)從后往前對結(jié)點W2進行松弛操作,得到新的關(guān)鍵路徑 Ik — Wl — W2 — W4 — W5 — Wll — 0E (65ms),并對其加以保存。需要說明的是,由于關(guān)鍵路 徑 Ik — W2 — W4 — W5 — Wll — 0E (60ms)是通過對 Ik — W3 — W4 — W5 — Wll — 0E (55ms) 中W4進行松弛操作獲取的。根據(jù)從后往前和不重復松弛操作的要求,只需要對W2進行松 弛操作。步驟3- 、將步驟3-4)中所得到的關(guān)鍵路徑與之前步驟3- 中所得到的關(guān)鍵路 徑進行比較,取出當前最優(yōu)的關(guān)鍵路徑Ik — W7 — W8 — W5 — Wll — 0E(63ms),生成對應的 DAG0圖8即為當前最優(yōu)的關(guān)鍵路徑Ik — W7 — W8 — W5 — Wll — 0E(63ms)所生成的DAG。由上述步驟所得到的三個DAG(圖6-圖8)即可得到Top 3個最優(yōu)服務結(jié)果。本發(fā)明還提供了一種自動服務組合系統(tǒng),包括第一最優(yōu)關(guān)鍵路徑查找模塊、服務 組合結(jié)果生成模塊;其中,所述的第一最優(yōu)關(guān)鍵路徑查找模塊用于由用戶提交一用于請求前K個質(zhì)量最好 的服務組合結(jié)果的查詢請求,根據(jù)該查詢請求以及多個原子服務的輸入?yún)?shù)、輸出參數(shù)、原 子服務間的匹配關(guān)系建立服務依賴圖,由所述服務依賴圖找出滿足所述查詢請求第一最優(yōu) 關(guān)鍵路徑;所述的服務組合結(jié)果生成模塊用于將所述第一最優(yōu)關(guān)鍵路徑保存在一集合中;然 后從所述集合中選取總服務質(zhì)量值allQoS最優(yōu)的關(guān)鍵路徑作為當前的最優(yōu)關(guān)鍵路徑,并 生成對應的服務組合結(jié)果,接著對當前的最優(yōu)關(guān)鍵路徑進行松弛操作,生成新的關(guān)鍵路徑, 并放入所述集合中;最后重復上述操作,直到已經(jīng)找到的所有服務組合結(jié)果的數(shù)目達到用 戶所需要的K值。本發(fā)明的優(yōu)點在于1、本發(fā)明將自動服務組合和選取最優(yōu)質(zhì)量的組合結(jié)果結(jié)合起來,提高了求最優(yōu)服 務組合的結(jié)果的自動化程度。2、本發(fā)明通過挖掘出關(guān)鍵路徑與DAG之間的關(guān)系,將求取Top K組合結(jié)果簡化為 求取Top k關(guān)鍵路徑,大大提高了算法的效率。3、本發(fā)明采用過濾可觸發(fā)服務和堆排序算法,縮減了搜索空間,保證了搜索的速度。最后所應說明的是,以上實施例僅用以說明本發(fā)明的技術(shù)方案而非限制。盡管參 照實施例對本發(fā)明進行了詳細說明,本領域的普通技術(shù)人員應當理解,對本發(fā)明的技術(shù)方 案進行修改或者等同替換,都不脫離本發(fā)明技術(shù)方案的精神和范圍,其均應涵蓋在本發(fā)明 的權(quán)利要求范圍當中。
權(quán)利要求
1.一種支持Top K查詢的自動服務組合方法,包括步驟1)、用戶提交一用于請求前K個質(zhì)量最好的服務組合結(jié)果的查詢請求,根據(jù)該查 詢請求以及多個原子服務的輸入?yún)?shù)、輸出參數(shù)、原子服務間的匹配關(guān)系建立服務依賴圖, 由所述服務依賴圖找出滿足所述查詢請求第一最優(yōu)關(guān)鍵路徑;其中,所述最優(yōu)關(guān)鍵路徑為總服務質(zhì)量值allQoS最優(yōu)的至少一條關(guān)鍵路徑;所述關(guān)鍵路徑 為一條或多條只包括關(guān)鍵前驅(qū)的鏈狀順序路徑;所述關(guān)鍵前驅(qū)是指對于服務組合結(jié)果中的 任意一個服務節(jié)點,其所有輸入?yún)?shù)的最優(yōu)提供者中總服務質(zhì)量值allQoS最差的那個提 供者;所述總服務質(zhì)量值allQoS為從所述查詢請求的查詢輸入?yún)?shù)開始到所在原子服務 被調(diào)用后的服務質(zhì)量值;步驟i)、將所述第一最優(yōu)關(guān)鍵路徑保存在一集合中;步驟幻、從所述集合中選取總服務質(zhì)量值allQoS最優(yōu)的關(guān)鍵路徑作為當前的最優(yōu)關(guān) 鍵路徑,并生成對應的服務組合結(jié)果,然后對當前的最優(yōu)關(guān)鍵路徑進行松弛操作,生成新的 關(guān)鍵路徑,并放入所述集合中;其中,所述松弛操作包括改變關(guān)鍵路徑中的某一個節(jié)點的關(guān)鍵前驅(qū)來獲取一個新的 allQoS更差的關(guān)鍵路徑;步驟4)、重復步驟3)的操作,直到已經(jīng)找到的所有服務組合結(jié)果的數(shù)目達到用戶所需 要的K值。
2.根據(jù)權(quán)利要求1所述的支持TopK查詢的自動服務組合方法,其特征在于,在所述的 步驟幻中,在對當前的最優(yōu)關(guān)鍵路徑進行松弛操作時,不對當前的最優(yōu)關(guān)鍵路徑中之前已 經(jīng)做過松弛操作的結(jié)點做重復的松弛操作。
3.根據(jù)權(quán)利要求2所述的支持TopK查詢的自動服務組合方法,其特征在于,在所述的 步驟幻中,所述的松弛操作包括步驟3-1)、選擇當前的最優(yōu)關(guān)鍵路徑中的某一個結(jié)點作為待做松弛操作的松弛結(jié)點; 步驟3- 、從所述松弛結(jié)點的各個輸入?yún)?shù)的所有提供者中尋找具有最好allQoS的 提供者且該提供者的allQoS差于目前的關(guān)鍵前驅(qū)的allQoS,若能找到,將該提供者記為新 提供者,并執(zhí)行下一步,否則步驟3-3)、將所述松弛結(jié)點的前驅(qū)結(jié)點改為所述的新提供者,保持所述松弛結(jié)點到所 述終結(jié)結(jié)點的路徑不變;步驟3-4)、從所述新提供者開始,從后往前,為每個結(jié)點尋找其前驅(qū)結(jié)點,直到起始結(jié) 點,從而形成一條從起始結(jié)點開始,經(jīng)由所述新提供者,最終到達所述終結(jié)結(jié)點的新的關(guān)鍵 路徑。
4.根據(jù)權(quán)利要求1所述的支持TopK查詢的自動服務組合方法,其特征在于,在所述的 步驟幻中,所述的生成對應的服務組合結(jié)果包括由最優(yōu)關(guān)鍵路徑生成有向無環(huán)圖,由所 述有向無環(huán)圖得到服務組合結(jié)果。
5.根據(jù)權(quán)利要求4所述的支持TopK查詢的自動服務組合方法,其特征在于,所述的由 最優(yōu)關(guān)鍵路徑生成有向無環(huán)圖包括從后往前遍歷最優(yōu)關(guān)鍵路徑,對于其中每一個結(jié)點,為它的非關(guān)鍵參數(shù)選擇不能改變 關(guān)鍵路徑的提供者;所述非關(guān)鍵參數(shù)是指對于服務依賴圖中的一個結(jié)點,由該結(jié)點的非關(guān) 鍵前驅(qū)所提供的參數(shù)。
6.根據(jù)權(quán)利要求1所述的支持TopK查詢的自動服務組合方法,其特征在于,所述集合 按照關(guān)鍵路徑的allQoS值對所保持的關(guān)鍵路徑進行排序,allQoS值越優(yōu)者越優(yōu)先從所述 集合中取出。
7.一種支持Top K查詢的自動服務組合系統(tǒng),其特征在于,包括第一最優(yōu)關(guān)鍵路徑查 找模塊、服務組合結(jié)果生成模塊;其中,所述的第一最優(yōu)關(guān)鍵路徑查找模塊用于由用戶提交一用于請求前K個質(zhì)量最好的服 務組合結(jié)果的查詢請求,根據(jù)該查詢請求以及多個原子服務的輸入?yún)?shù)、輸出參數(shù)、原子服 務間的匹配關(guān)系建立服務依賴圖,由所述服務依賴圖找出滿足所述查詢請求第一最優(yōu)關(guān)鍵 路徑;其中,所述最優(yōu)關(guān)鍵路徑為總服務質(zhì)量值allQoS最優(yōu)的至少一條關(guān)鍵路徑;所述關(guān)鍵路徑 為一條或多條只包括關(guān)鍵前驅(qū)的鏈狀順序路徑;所述關(guān)鍵前驅(qū)是指對于服務組合結(jié)果中的 任意一個服務節(jié)點,其所有輸入?yún)?shù)的最優(yōu)提供者中總服務質(zhì)量值allQoS最差的那個提 供者;所述總服務質(zhì)量值allQoS為從所述查詢請求的查詢輸入?yún)?shù)開始到所在原子服務 被調(diào)用后的服務質(zhì)量值;所述的服務組合結(jié)果生成模塊用于將所述第一最優(yōu)關(guān)鍵路徑保存在一集合中;然后從 所述集合中選取總服務質(zhì)量值allQoS最優(yōu)的關(guān)鍵路徑作為當前的最優(yōu)關(guān)鍵路徑,并生成 對應的服務組合結(jié)果,接著對當前的最優(yōu)關(guān)鍵路徑進行松弛操作,生成新的關(guān)鍵路徑,并放 入所述集合中;最后重復上述操作,直到已經(jīng)找到的所有服務組合結(jié)果的數(shù)目達到用戶所 需要的K值;其中,所述松弛操作包括改變關(guān)鍵路徑中的某一個節(jié)點的關(guān)鍵前驅(qū)來獲取一個新的 alIQoS更差的關(guān)鍵路徑。
8.根據(jù)權(quán)利要求7所述的支持TopK查詢的自動服務組合系統(tǒng),其特征在于,所述的松 弛操作模塊在對當前的最優(yōu)關(guān)鍵路徑進行松弛操作時,不對當前的最優(yōu)關(guān)鍵路徑中之前已 經(jīng)做過松弛操作的結(jié)點做重復的松弛操作。
全文摘要
本發(fā)明提供一種支持Top K查詢的自動服務組合方法,包括用戶提交一用于請求前K個質(zhì)量最好的服務組合結(jié)果的查詢請求,根據(jù)該查詢請求以及多個原子服務的輸入?yún)?shù)、輸出參數(shù)、原子服務間的匹配關(guān)系建立服務依賴圖,由所述服務依賴圖找出滿足所述查詢請求第一最優(yōu)關(guān)鍵路徑;將所述第一最優(yōu)關(guān)鍵路徑保存在一集合中;從所述集合中選取總服務質(zhì)量值allQoS最優(yōu)的關(guān)鍵路徑作為當前的最優(yōu)關(guān)鍵路徑,并生成對應的服務組合結(jié)果,然后對當前的最優(yōu)關(guān)鍵路徑進行松弛操作,生成新的關(guān)鍵路徑,并放入所述集合中;重復上述操作,直到已經(jīng)找到的所有服務組合結(jié)果的數(shù)目達到用戶所需要的K值。本發(fā)明提高了求最優(yōu)服務組合的結(jié)果的自動化程度。
文檔編號G06F17/30GK102081675SQ20111003039
公開日2011年6月1日 申請日期2011年1月27日 優(yōu)先權(quán)日2011年1月27日
發(fā)明者姜偉, 虎嵩林, 馬環(huán)宇 申請人:中國科學院計算技術(shù)研究所