一種基于Petri網(wǎng)的Web服務(wù)組合演化方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明專利涉及一種基于Petri網(wǎng)的Web服務(wù)組合演化方法。首先基于Web服務(wù) 接口間依賴關(guān)系建立原子服務(wù)全局依賴Petri網(wǎng)模型與Web服務(wù)組合控制結(jié)構(gòu)Petri網(wǎng)模 型;其次,給出了 Web服務(wù)演化需求的形式化描述方法,將演化需求轉(zhuǎn)換為對Web服務(wù)間接 口的演化操作;再次,在演化操作進行沖突分析和消解后,對演化點執(zhí)行演化操作,并更新 原子服務(wù)全局依賴Petri網(wǎng)模型;最后,從各演化點開始執(zhí)行正向與反向演化推理,生成最 終的Web服務(wù)組合演化結(jié)果。
【背景技術(shù)】
[0002] 在使用Web服務(wù)組合構(gòu)建應(yīng)用系統(tǒng)時,這些應(yīng)用系統(tǒng)難以對外部環(huán)境的變化作出 快速反應(yīng),僅依靠實例層面的自適應(yīng)并無法滿足要求。服務(wù)組合的演化旨在當外部環(huán)境和 用戶需求發(fā)生變化時,開發(fā)人員能夠?qū)Ψ?wù)組合進行適應(yīng)性變更、并保持服務(wù)與相關(guān)應(yīng)用 有效性的過程。
[0003] Web服務(wù)組合作為服務(wù)組合演化的基礎(chǔ),對于Web服務(wù)組合演化的研究有著非常 關(guān)鍵的作用。國內(nèi)外許多學者和研究機構(gòu)對Web服務(wù)組合的方法進行了研究。Schinz等 人(Proceedings of the 2nd International Conference on Software Engineering and Formal Methods,2004)采用Pi-演算對Web服務(wù)組合進行分析和驗證,并討論了 Pi-演算 與Web服務(wù)協(xié)議棧的對應(yīng)關(guān)系,建立了 Web服務(wù)組合的建模規(guī)則。倪悅(清華大學學報, 2010)提出一種語義Web服務(wù)組合模型到著色Petri網(wǎng)組合模型的轉(zhuǎn)換方法,不僅能清晰表 示服務(wù)組合中各子過程之間的邏輯關(guān)系,而且能用著色Petri網(wǎng)的形式化方法進行服務(wù)組 合正確性驗證。何豐(東華大學,2008)提出了一種基于接口匹配的Web服務(wù)組合方法,先 根據(jù)服務(wù)間的接口依賴得到Web服務(wù)關(guān)系依賴圖,然后使用兩階段推理算法得到Web服務(wù) 組合演化結(jié)果。而關(guān)于軟件演化以及Web服務(wù)組合演化的研究,Plessers等人(ISWC,2005) 使用多版本技術(shù)來進行變化偵測,提出了一個五階段的本體演化方法,將一些不必要的本 體變化回溯,從而能夠更好地反映開發(fā)人員的本體改進意圖。鮑愛華(清華大學,2009)以 機器輔助處理為目標,進一步提出了一種語義Web環(huán)境下組合服務(wù)演化方法EM4CS,將組合 服務(wù)演化分為6大步驟,從根據(jù)開發(fā)人員提供的演化需求生成基于演化本體的維護請求腳 本開始,經(jīng)過語法和語義一致性維護工作后生成演化結(jié)果,最后將其進行發(fā)布與傳播。陳洪 龍等人(小型微型計算機系統(tǒng),2010)使用擴展Bigraph這種基于圖形的形式化語言來描述 面向方面的體系結(jié)構(gòu)模型,使用Bigraph反應(yīng)系統(tǒng)來描述模型的動態(tài)演化,對軟件演化中 的特性進行研究。另外,還有一些學者通過面向服務(wù)編排(燕山大學,2014)和使用Pi-演 算建立相應(yīng)的服務(wù)組合演化技術(shù)框架或模型。
[0004] Web服務(wù)組合演化的目標是在已有Web服務(wù)組合的基礎(chǔ)上進行演化,以適應(yīng)用戶 多樣性需求以及適應(yīng)復(fù)雜多變的運行環(huán)境,希望以此降低Web服務(wù)組合成本。分析已有的 文獻可知,目前的服務(wù)組合演化方法在演化需求的形式化描述上過于復(fù)雜,并且使用的語 義本體單一,使得其對演化操作的預(yù)處理效率較低且讓之后的校驗工作十分繁瑣,對其運 行的環(huán)境要求比較高。因此,降低演化成本以及提高演化效率是Web服務(wù)組合演化的關(guān)鍵 技術(shù)。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明要克服現(xiàn)有技術(shù)的上述缺點,提供一種預(yù)處理效率高且之后的校驗工作簡 便、對運行環(huán)境要求低的Web服務(wù)組合演化方法。
[0006] 本發(fā)明專利在原子Web服務(wù)全局依賴Petri網(wǎng)模型與Web服務(wù)組合控制結(jié)構(gòu) Petri網(wǎng)模型的基礎(chǔ)上,根據(jù)演化需求對Web服務(wù)組合執(zhí)行演化操作,再從各演化點出發(fā)執(zhí) 行正向演化推理與反向演化推理,生成最終的Web服務(wù)組合演化結(jié)果。
[0007] -種基于Petri網(wǎng)的Web服務(wù)組合演化方法,包括以下步驟:
[0008] (1)構(gòu)建Web服務(wù)Petri網(wǎng)模型及其關(guān)系矩陣。
[0009] (I. 1)建立原子Web服務(wù)庫。
[0010] 建立不可再分的Web服務(wù),簡稱原子服務(wù),將原子服務(wù)的集合稱為原子服務(wù)庫,它 是本發(fā)明專利中Web服務(wù)組合演化的基本構(gòu)成單元。
[0011] (1. 2)建立原子服務(wù)全局依賴Petri網(wǎng)模型。
[0012] Web服務(wù)間接口依賴關(guān)系是指若存在兩個原子服務(wù)WSg WS j,若WS1的輸出包含 了吧郝輸入,則稱WS為WS、的前驅(qū)服務(wù),WS $ WS、的后繼服務(wù)。根據(jù)Web服務(wù)間的接口 依賴關(guān)系,針對所有的原子服務(wù)建立Petri網(wǎng)模型,稱為原子服務(wù)全局依賴Petri網(wǎng)模型。
[0013] (1. 3)建立Web服務(wù)組合控制結(jié)構(gòu)Petri網(wǎng)模型。
[0014] Web服務(wù)組合中的過程控制結(jié)構(gòu)主要包括順序結(jié)構(gòu)、并發(fā)結(jié)構(gòu)、同步結(jié)構(gòu)、選擇結(jié) 構(gòu)和循環(huán)結(jié)構(gòu)。依據(jù)這五種控制結(jié)構(gòu),對于任意一個Web服務(wù)組合,建立與其相對應(yīng)的Web 服務(wù)組合控制結(jié)構(gòu)Petri網(wǎng)模型。
[0015] (1. 4)分別將全局依賴Petri網(wǎng)模型和控制結(jié)構(gòu)Petri網(wǎng)模型轉(zhuǎn)換為關(guān)系矩陣。
[0016] 根據(jù)以下轉(zhuǎn)換方法,將全局依賴Petri網(wǎng)模型和控制結(jié)構(gòu)Petri網(wǎng)模型分別轉(zhuǎn)換 為關(guān)系矩陣。
[0017] 關(guān)系矩陣轉(zhuǎn)換方法:設(shè)ai j為關(guān)系矩陣中第i行第j列的元素,分別將Petri網(wǎng)模 型中的庫所與變迀設(shè)為P與T,以P1-P "為行,T1-Tn為列;a yi彡i Sm, 1彡j彡η)值 由以下規(guī)則確定:若P1S T i的輸入庫所,a ^為1 ;若P T i的輸出庫所,a ^為-1 ;其他則 為〇 ;
[0018] 對于控制結(jié)構(gòu)Petri網(wǎng)模型,需要將其表示在全局環(huán)境中,因此將其關(guān)系矩陣中 的P與T與全局依賴Petri網(wǎng)關(guān)系矩陣中的P與T作相同設(shè)置。
[0019] (2) Web服務(wù)組合演化需求的形式化表示與預(yù)處理。
[0020] (2. 1)將Web服務(wù)組合中的復(fù)合服務(wù)分解為原子服務(wù)。
[0021] -個Web服務(wù)組合結(jié)果即可能包含原子服務(wù),也可能包含復(fù)合服務(wù)。在演化之前, 需要將組合結(jié)果中的復(fù)合服務(wù)分解為原子服務(wù),使Web服務(wù)組合完全由原子服務(wù)構(gòu)成。將 復(fù)合服務(wù)分解為原子服務(wù)的算法如下:
[0022] 輸入:設(shè)Web服務(wù)組合關(guān)系矩陣為A = La1^nixn,其中m和η分別為矩陣A的行數(shù) 與列數(shù),%i (1彡i彡m,1彡j彡η)是矩陣A中的元素,復(fù)合服務(wù)P的關(guān)系矩陣為B = [bxy] sXt,其中s和t分別為矩陣B的行數(shù)與列數(shù),bxy (1彡X彡s,1彡y彡t)是矩陣B中的元 素。若Web服務(wù)組合中存在復(fù)合服務(wù)P,其輸入庫所為P1,輸出庫所為P。;
[0023] 輸出:完全由原子服務(wù)構(gòu)成的Web服務(wù)組合關(guān)系矩陣。
[0024] 算法步驟:
[0025] 步驟2. I. 1 :對于矩陣A,先移除P所在行{&11,al2,…,ai J。
[0026] 步驟2. I. 2 :將矩陣B插入到A中。A中新增B中相應(yīng)的行列數(shù)量,其中 i^m+ln+lJ ^m+ln+2J J ^ m+ln+t }中的值與{bn,b12,…,blt}對應(yīng),依此類推,
[0027] {am + s n + 1,am+s n+2,…,a …n + t}中的值與{bsl,bs2,…,bst}, a^i e [l,m],j e [n+l,n+t]) =OdijQ e [m+l,m+s], j e [l,n])除了組合服務(wù)的輸入 庫所與輸出變迀的值為-1和輸出庫所與輸入變迀的值為1,其余值都為〇。
[0028] 步驟2. 1. 3 :若Web服務(wù)組合中仍舊含有復(fù)合服務(wù),返回步驟1 ;否則,算法結(jié)束。
[0029] (2. 2)服務(wù)組合演化需求的形式化表示。
[0030] 服務(wù)組合演化需求可表示為一個二元組ER = <P0S,N0S>,其中,POS表示正向操作 集合(Positive Operation Set),代表演化需求希望對相應(yīng)原子服務(wù)做出變化的演化操作 集合;N0S(Negative Operation Set)表示反向操作集合,代表演化過程中需要避免實現(xiàn)的 演化操作集合;POS與NOS都由一系列演化操作集合{〇Pl, 〇p2,…,opn}組成。
[0031] 根據(jù)演化操作對原子服務(wù)接口的影響,可以將演化的基本操作分為三大類:增性 操作、減性操作、內(nèi)部操作;其基本操作可以表示為一個四元組OPT = <WS,0P,I,0>;其中, WS是指演化點;OP是指基本操作類型;I是指演化點需要變化的輸入集合;0是指演化點需 要變化的輸出集合;
[0032] (2. 3)演化操作的沖突檢測處理。
[0033] 在定義了服務(wù)組合演化需求并得到其相應(yīng)的演化操作集合之后,需要對其進行沖 突檢測處理,包括互逆、相似、覆蓋、觸發(fā)四種沖突關(guān)系,一旦檢測到?jīng)_突,需要進一步執(zhí)行 消解操作;以正向操作集合POS為例,給出以下演化操作沖突檢測與消解算法:
[0034] 輸入:設(shè)存在于POS中的任意兩個演化操作EOx= <WS u 0PX, Ix,0X>與EOy = 〈WSj,0Py,Iy,0y>,其中演化操作EOx中各參數(shù)的含義為:WS 1表示需要執(zhí)行操作的演化點, OPx表示基本操作類型,I ,與(^表示執(zhí)行EOx操作中需要變化的輸入與輸出的集合;演化 操作EOy中的參數(shù)與EO x中的參數(shù)含義相同。設(shè)消解集合CS的初始值為Φ,沖突判定參數(shù) hasConflict 為 0〇
[0035] 輸出:消解后的演化操作;
[0036] 算法步驟:
[0037] 步驟2. 3. 1 :對