POS進(jìn)行遍歷,對于任意兩個演化操作E0# EO y,進(jìn)行操作沖突檢 測;
[0038] 步驟2·3·2:若WSgWS j相同,OPx與OP^別為增性操作和減性操作,ixn Iy^ Φ 或 0χη 0# Φ,則兩者為互逆沖突,hasConflict = I ;I x= I x-Ixn I y,Iy= I y-Ixn I y, Ox= Ox-Ox門 〇y,Oy= Oy-Oxn〇y,CS = CSU {E0x,E0y},若 EOjIx, oxe Φ,則不并入集 合CS,EOy同理;
[0039] 步驟2· 3· 3 :若%與WS j相同,OP x為減性操作且I ,和0 A WS i中的輸入和輸出 集合相同,則兩者為覆蓋沖突,hasConflict = I ;CS = CS U {E0J ;
[0040] 步驟2·3· 4 :若WSgWS j相同,OP 時為增性操作或減性操作,4或 ft e 珥,則兩者為觸發(fā)沖突,hasConflict = I ;CS = CS U {EOy};
[0041] 步驟2. 3. 5 :若WS^ WS j相同,OP A OP ¥同時為增性操作或減性操作,I xn I y = Φ或OxnOy=φ,則兩者為相似沖突,haSC 0nfliCt = l;將WS1與WSj進(jìn)行合并,得到EOxy =IffS1, 0PX,Ix U I y,Ox U 0 y},CS = CS U {E0xy};
[0042] 步驟 2. 3. 6 :遍歷完成后,若 hasConflict = 1,則令 POS = CS,CS = Φ, hasConflict = 0,重新執(zhí)行步驟2. 3. I ;否則執(zhí)行步驟2. 3. 7 ;
[0043] 步驟2. 3. 7 :算法結(jié)束,CS為沖突消解后得到的演化操作集合;
[0044] (3)基于演化需求對演化點執(zhí)行演化操作。
[0045] (3· 1)對演化點執(zhí)行演化操作。
[0046] 首先,執(zhí)行減性操作。刪除指定的輸入輸出接口或Web服務(wù),即消除原子服務(wù)全局 依賴Petri網(wǎng)模型和Web服務(wù)組合控制結(jié)構(gòu)Petri網(wǎng)模型中的失效連接弧以及需刪除Web 服務(wù)對應(yīng)的庫所。失效的連接弧是指與由演化操作而產(chǎn)生變化的庫所輸入端或輸出端相鄰 的連接弧。
[0047] 其次,執(zhí)行增性操作。在原子服務(wù)全局依賴Petri網(wǎng)和Web服務(wù)組合控制結(jié)構(gòu) Petri網(wǎng)模型中加入新增的演化點。
[0048] 最后,演化操作執(zhí)行完畢。
[0049] (3. 2)更新原子服務(wù)全局依賴Petri網(wǎng)模型。
[0050] Web服務(wù)演化點執(zhí)行完演化操作之后,需要更新全局依賴Petri網(wǎng)模型,更新算法 如下。
[0051 ] 輸入:設(shè)W為演化點集合,集合#為原子服務(wù)庫中除演化點以外的原子服務(wù)集合。 Pre表示前驅(qū)服務(wù)集合,Next表示后繼服務(wù)集合。
[0052] 輸出:原子服務(wù)全局依賴Petri網(wǎng)模型的更新結(jié)果。
[0053] 算法步驟:
[0054] 步驟3. 2. 1 :開始遍歷W,對于服務(wù)WS1,W = W- {WSJ,fL示u {奶)}。
[0055] 步驟3. 2. 2 :執(zhí)行服務(wù)反向匹配方法,得到其前驅(qū)服務(wù)集合Pre1, W中去除Pre# 素中的Web服務(wù),而將這些服務(wù)則并入示,其含義如上所述。
[0056] 步驟3. 2. 3 :對于Pre1所有元組中的任意Web服務(wù)WS a,若存在G斤,且存在與 其輸入?yún)?shù)相匹配的Web服務(wù)ifS# W U矛,.則對WSjA行步驟3. 2. 2 ;若Pre i Ε Φ,Φ表 示空集(下同),執(zhí)行步驟3. 2. 4。
[0057] 步驟3.2. 4 :在r U示范圍內(nèi),搜索輸入?yún)?shù)與WS1中輸出參數(shù)匹配的Web服務(wù), 得到集合S。
[0058] 步驟3. 2. 5 :遍歷集合S,對于WSjG S,S = S-{WS J,對其執(zhí)行服務(wù)反向匹配
[0059] 方法。
[0060] 若吧;在 Pre j元素的元組中,Next ;= Next; U {WS J,W = W-{WSj},酔 , U 彳 FF5)}。 若心Φ,執(zhí)行步驟3. 2. 7。
[0061] 步驟3. 2. 6 :若存在與WSj輸出參數(shù)相匹配的Web服務(wù),對WS典行步驟3. 2. 4 ;否 貝1J,重新執(zhí)行步驟3. 2. 6。
[0062] 步驟3. 2. 7 :如咋為WS啲后繼服務(wù)集合。若,返回步驟3. 2. 1 ;否則,算法 結(jié)束。
[0063] 其中,服務(wù)反向匹配方法為原子服務(wù)全局依賴Petri網(wǎng)模型生成算法子步驟,其 作用為選定WS1的輸入?yún)?shù)與ir U 中元素進(jìn)行匹配,最終得到WS1的前驅(qū)結(jié)構(gòu)Petri網(wǎng) 及其前驅(qū)服務(wù)集合Pre1。
[0064] (4) Web服務(wù)組合演化推理。
[0065] 對演化點執(zhí)行演化操作完成了單個原子服務(wù)的演化,除此之外,由于增性操作與 減性操作可能會導(dǎo)致Web服務(wù)組合初始服務(wù)與終止服務(wù)之間并不相通,甚至產(chǎn)生一些無效 的支路。為此,需補(bǔ)全Web服務(wù)組合初始服務(wù)與終止服務(wù)之間斷開的通路和剔除無效的支 路,為此需要從演化電開始進(jìn)行演化推理,包括反向演化推理和正向演化推理兩個階段,反 向演化推理用于補(bǔ)全Web服務(wù)組合初始庫所到演化點之間斷開的通路并剔除無效的支路; 正向演化推理則用于補(bǔ)全演化點到Web服務(wù)組合終止庫所之間斷開的通路并剔除無效的 支路。
[0066] (4. 1)反向演化推理。
[0067] 執(zhí)行以下反向推理算法;
[0068] 輸入:設(shè)反向推理循環(huán)變量為i,其初始值為1,初始庫所向量A(O)為(ai,a2,~ ,an),其中演化點庫所的值為1,初始變迀向量B(O)為0),原子服務(wù)全局依賴 Petri網(wǎng)關(guān)系矩陣為D,對演化點進(jìn)行演化操作后Web服務(wù)組合庫所向量為W ;
[0069] 輸出:得到Web服務(wù)組合起始庫所到所有演化點之間的通路;
[0070] 算法步驟:
[0071] 步驟4. I. 1 :執(zhí)行反向推理通路補(bǔ)全過程:計算萬 冰|)=卯)01>#成1-1):,其中4(1)和8(1)分別為第1次通路補(bǔ)全過程后通路中的庫所向 量與變迀向量;
[0072] 步驟4. I. 2 :i = i+Ι,若Web服務(wù)組合起始庫所在A(i)中的值為1時, 處),執(zhí)行步驟4. 1. 3 ;否則,返回步驟1 ;
[0073] 步驟4. 1. 3 :將W映射到D上得到矩陣Dw,即只保留D中W元素所代表的行;
[0074] 步驟4. 1. 4 :執(zhí)行剔除無效支路過程:刪除Dw中全為0和除0以外全為1或者-1 的列;遍歷Dw中的行,若存在不為輸入輸出庫所的行,其中值除0以外全為1或者-1,則刪 除該值對應(yīng)的行,重新執(zhí)行步驟4. 1.4 ;若不存在以上條件的行,則算法結(jié)束;
[0075] (4. 2)正向演化推理。
[0076] 執(zhí)行以下正向推理算法;
[0077] 輸入:設(shè)正向推理循環(huán)變量為i,初始值為1,初始庫所向量A(O)為(ai,a 2,…,an), 其中演化點庫所的值為1,初始變迀向量B(O)為(0, 0,…,0),對演化點進(jìn)行演化操作后Web 服務(wù)組合庫所向量為W,反向演化推理得到的關(guān)系矩陣Dw,原子服務(wù)全局依賴Petri網(wǎng)關(guān)系 矩陣為D,輸出關(guān)聯(lián)矩陣為D +,輸入關(guān)聯(lián)矩陣為D ;其中,
[0078]
[0079] 輸出:得到所有演化點到Web服務(wù)組合終止庫所之間的通路;
[0080] 算法步驟:
[0081] 步驟4 2.1 :執(zhí)行正向推理通路補(bǔ)全過程:計算= 其中A(i)和B(i)分別為第i次通路補(bǔ)全過程后通路中的庫所向量與變迀向量;
[0082] 步驟4. 2. 2 :i = i+Ι,若Web服務(wù)組合終止庫所在A(i)中的值為1時, ,執(zhí)行步驟4. 2. 3 ;否則,返回步驟1 ;
[0083] 步驟4. 2. 3 :將W映射到D上得到矩陣Dw,即只保留D中W元素所代表的行;
[0084] 步驟4. 2. 4 :執(zhí)行剔除無效支路過程:刪除Dw中全為0和除0以外全為1或者-1 的列;遍歷Dw中的行,若存在不為輸入輸出庫所的行,其中值除0以外全為1或者-1,則刪 除該值對應(yīng)的行,重新執(zhí)行步驟4. 2. 4 ;若不存在以上條件的行,則算法結(jié)束;
[0085] 經(jīng)過以上Web服務(wù)組合演化算法,可以得到機(jī)器輔助處理得出的Web服務(wù)組合演 化結(jié)果關(guān)系矩陣D w。該結(jié)果經(jīng)開發(fā)人員進(jìn)行一定的分析處理后,就成為最終的Web服務(wù)演 化結(jié)果。
[0086] 本發(fā)明的優(yōu)點是:
[0087] 本發(fā)明能夠以Web服務(wù)組合演化的方式更加快速地構(gòu)建新的軟件系統(tǒng),降低服務(wù) 重新組合的成本,提高軟件開發(fā)效率,快速響應(yīng)用戶多變的需求。下面結(jié)合旅游信息系統(tǒng)應(yīng) 用實例,對具體的實施方式進(jìn)行詳細(xì)闡述。
【附圖說明】
[0088] 圖1原子服務(wù)全局依賴關(guān)系Petri網(wǎng)模型
[0089] 圖2 Web服務(wù)組合實例W。及其控制結(jié)構(gòu)Petri網(wǎng)模型
[0090] 圖3原子服務(wù)全局依賴Petri網(wǎng)和Web服務(wù)組合控制結(jié)構(gòu)Petri網(wǎng)的關(guān)系矩陣圖 4對W。執(zhí)行演化操作后的原子服務(wù)全局依賴Petri網(wǎng)模型
[0091] 圖5對W。執(zhí)行演化操作后的Web服務(wù)組合控制結(jié)構(gòu)Petri網(wǎng)模型
[0092] 圖6更新后的原子服務(wù)全局依賴Petri網(wǎng)模型
[0093] 圖7更新后的原子服務(wù)全局依賴Petri網(wǎng)模型的關(guān)系矩陣
[0094] 圖8反向演化推理后的Web服務(wù)組合控制結(jié)構(gòu)Petri網(wǎng)及其關(guān)系矩陣
[0095] 圖9輸入關(guān)聯(lián)矩陣D與輸出關(guān)聯(lián)矩陣D +
[0096] 圖10正向演化推理后的Web服務(wù)