專利名稱:基于程序依賴圖的bpel過程一致性度量方法
技術(shù)領(lǐng)域:
本發(fā)明屬于服務(wù)計(jì)算領(lǐng)域,具體是一種度量兩個(gè)BPEL過程行為一致性程度的方法。
背景技術(shù):
在面向服務(wù)架構(gòu)(SOA)中,BPEL(業(yè)務(wù)過程執(zhí)行語言)已經(jīng)成為描述基于服務(wù)的商業(yè)過程的業(yè)界標(biāo)準(zhǔn)。隨著BPEL過程的不斷豐富和擴(kuò)展,許多商業(yè)團(tuán)體和公司建立了 BPEL過程庫。為了更好地對(duì)庫中的眾多BPEL過程進(jìn)行檢索、維護(hù)、管理和重用,提出一種合適的標(biāo)準(zhǔn)來度量兩個(gè)BPEL過程的一致性程度變得越來越迫切。例如,當(dāng)管理人員向BPEL過程庫中增添一種新的過程時(shí),他們首先應(yīng)該確定該庫中是否存在此BPEL過程,然后需要考慮哪些BPEL過程與這種新添加的過程相類似,具有多少的一致性程度。在這種情況下,研究不同的BPEL過程之間一致性就具有重要意義。由于BPEL過程中的活動(dòng)包含很多信息,導(dǎo)致難以度量兩個(gè)BPEL過程之間的一致性程度,同時(shí)對(duì)于給出它們之間的一致性的定義也成為一個(gè)挑戰(zhàn)。一些學(xué)者將過程模型的一致性定義為“均勻度,標(biāo)準(zhǔn)化和無矛盾”。由于BPEL過程中的活動(dòng)之間的行為關(guān)系是評(píng)判兩個(gè)BPEL過程是否一致的基礎(chǔ),所以,定義BPEL過程一致性為“活動(dòng)關(guān)系不變性和無矛盾”。不同的標(biāo)準(zhǔn)能用于制定BPEL過程一致性。比如,從接口的角度,定義基于接口匹配程度的一致性標(biāo)準(zhǔn)。然而,由于即使兩個(gè)BPEL過程共享同一接口集合,它們的行為也可能千差萬別,所以這個(gè)標(biāo)準(zhǔn)是不合適的。因而,提出從行為的角度來研究BPEL過程之間的
一致性。在過程模型領(lǐng)域中,一些學(xué)者利用線性時(shí)間分支時(shí)譜中的等價(jià)標(biāo)準(zhǔn)定義過程模型之間的行為一致性,其中互模擬(bisimulation)和跡等價(jià)(trace equivalence)是最常用的方法。而它們?cè)诙攘窟^程模型一致性時(shí)只能給出“是/否”二元判斷,卻不能區(qū)分出模型之間具有多大的差別。還有一些學(xué)者利用圖形結(jié)構(gòu)(thegraphical structure)的方法評(píng)判過程模型一致性。然而,從圖形結(jié)構(gòu)上看起來非常相似的模型可能差別巨大,所以圖形結(jié)構(gòu)可以作為評(píng)判過程模型一致性的一個(gè)指標(biāo)。Alves de Medeiros等提出了典型行為(exemplary behavior)的方法比較過程模型一致性,典型行為能夠從實(shí)際模型執(zhí)行的事件日志中獲得。這種方法給出O到1.0的具體數(shù)值來量化過程模型之間一致性程度。這些方法都是一些形式化的方法,都未能描述過程模型中的本質(zhì)行為關(guān)系。于是,Weidlich等提出行為側(cè)畫(behavioral profile)的方法度量過程模型的一致性。行為側(cè)畫的方法描述了過程模型中活動(dòng)之間三種本質(zhì)的行為約束??梢院唵蔚卣J(rèn)為只要所有對(duì)應(yīng)的活動(dòng)對(duì)之間的行為約束是完全相同的,那么這兩個(gè)過程模型就是一致的。這種方法受到兩個(gè)過程模型之間活動(dòng)映射的影響很小,并且也能夠給出O到1.0的具體數(shù)值來量化一致性程度。所以,行為側(cè)畫的方法在度量過程模型一致性是非常合適的。由于在軟件工程領(lǐng)域相似性和一致性的概念是非常接近的,所以很多度量過程模型的相似性的方法也能用于度量過程模型一致性。在評(píng)判過程模型的相似性方面,有學(xué)者根據(jù)模型結(jié)構(gòu)、模型語義判斷過程模型的相似性,還有一些學(xué)者從活動(dòng)行為的角度過程模型的相似性問題,比如,基于活動(dòng)間因果關(guān)系(causal footprint)的方法,首要變遷序列(principal transition sequences)的方法、行為側(cè)畫和Jaccard系數(shù)(Jaccard coefficient)的方法。然而,上述的這些方法都只是應(yīng)用于過程模型層面,一些重要的信息(比如數(shù)據(jù)、伙伴鏈接等)都被抽象掉,因此,它們不適用于度量BPEL過程一致性。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種基于程序依賴圖的BPEL過程一致性度量方法,該方法實(shí)現(xiàn)了對(duì)BPEL過程庫中的過程進(jìn)行檢索、管理、維護(hù)和重用的功能。實(shí)現(xiàn)本發(fā)明目的的技術(shù)解決方案為:一種基于程序依賴圖的BPEL過程一致性度量方法,以兩個(gè)BPEL過程為輸入,以這兩個(gè)BPEL過程的一致性程度為輸出結(jié)果;該方法使用的BPEL過程必須符合WS-BPEL2.0規(guī)范,并且過程中不包含〈link〉活動(dòng);步驟如下:(I)輸入兩個(gè)BPEL過程,根據(jù)BPEL的特性將兩個(gè)BPEL過程分別轉(zhuǎn)化為控制流程圖;(2)根據(jù)每個(gè)BPEL過程的控制流程圖,分析活動(dòng)間的三種依賴關(guān)系,生成程序依賴圖PDG ;(3)通過對(duì)兩個(gè)BPEL過程的程序依賴圖的分析,計(jì)算出這兩個(gè)BPEL過程的一致性程度。本發(fā)明與現(xiàn)有技術(shù)相比,其顯著優(yōu)點(diǎn):本發(fā)明基于BPEL過程中活動(dòng)之間的依賴和互斥關(guān)系,提出了一種定量的BPEL過程一致性度量方法,該方法可以對(duì)兩個(gè)BPEL過程的一致性給出一個(gè)從O到I的數(shù)值,而不是像傳統(tǒng)方法那樣僅提供一致和不一致的定性結(jié)論,從而有效區(qū)分不同程度的一致性。
圖1為基于程序依賴圖度量BPEL過程一致性的整個(gè)流程。圖2為基于程序依賴圖度量BPEL過程一致性程度的具體步驟流程圖。圖3為兩個(gè)BPEL過程實(shí)例的控制流程圖,圖(a)為輸入的第一個(gè)BPEL過程,圖(b)為輸入的第二個(gè)BPEL過程。圖4為本發(fā)明兩個(gè)實(shí)例依賴分析得到的程序依賴圖,圖(a)為第一個(gè)BPEL過程所生成的程序依賴圖,圖(b)為第二個(gè)BPEL過程所生成的程序依賴圖。圖5為本發(fā)明兩個(gè)實(shí)例的依賴關(guān)系矩陣。圖6為本發(fā)明計(jì)算兩個(gè)實(shí)例的一致性程度。
具體實(shí)施例方式本發(fā)明提出基于程序依賴圖度量兩個(gè)BPEL過程的行為一致性程度的方法。在BPEL程序依賴圖(BTOG)中,BPEL過程中活動(dòng)間的關(guān)系分為互斥關(guān)系和依賴關(guān)系,而依賴關(guān)系包含控制依賴、數(shù)據(jù)依賴和異步調(diào)用依賴關(guān)系。當(dāng)BPEL過程中存在<if>、〈switch〉或〈pick〉選擇結(jié)構(gòu)活動(dòng)時(shí),由于選擇結(jié)構(gòu)活動(dòng)中僅一條分支上的活動(dòng)能夠被執(zhí)行,這樣不同分支上的活動(dòng)之間也存在著一種關(guān)系,這種關(guān)系被定義為互斥關(guān)系??刂埔蕾嚤欢x為一個(gè)活動(dòng)Xj控制依賴于另一個(gè)活動(dòng)Xi當(dāng)且僅當(dāng)Xi決定Xj能否執(zhí)行。數(shù)據(jù)依賴又分為真數(shù)據(jù)依賴,反數(shù)據(jù)依賴和輸出數(shù)據(jù)依賴。一個(gè)活動(dòng)Xj真數(shù)據(jù)依賴于它之前的另一個(gè)活動(dòng)Xi,當(dāng)且僅當(dāng)Xj使用了 Xi定義的某個(gè)變量;一個(gè)活動(dòng)Xj反數(shù)據(jù)依賴于它之前的另一個(gè)活動(dòng)Xi,當(dāng)且僅當(dāng)Xj定義了 Xi所使用的某個(gè)變量。一個(gè)活動(dòng)Xj輸出數(shù)據(jù)依賴于它之前的另一個(gè)活動(dòng)Xi,當(dāng)且僅當(dāng)Xj重新定義了 Xi定義的某個(gè)變量。實(shí)際上,反數(shù)據(jù)依賴和輸出數(shù)據(jù)依賴可通過變量重命名的方式予以避免。BPEL過程中的一個(gè)活動(dòng)Xj異步調(diào)用依賴于它之前的一個(gè)活動(dòng)Xi,當(dāng)且僅當(dāng)Xi是一個(gè)異步調(diào)用〈invoke〉活動(dòng),而Xj是用來接收相應(yīng)返回結(jié)果的〈receive〉活動(dòng)。其中,一個(gè)BPEL過程中的〈invoke〉活動(dòng)可能與另一個(gè)BPEL過程中具有異步調(diào)用依賴關(guān)系的〈invoke〉和〈receive〉活動(dòng)構(gòu)成1: 2的對(duì)應(yīng)關(guān)系。本發(fā)明就是對(duì)所提出的方法度量BPEL過程一致性的具體實(shí)現(xiàn)。要求輸入的BPEL過程滿足WS-BPEL2.0規(guī)范,尤其是是一些判定條件〈condition〉必須嚴(yán)格遵守所設(shè)定的形式,才能夠解析出條件中所包含的輸入輸出變量,并且這些過程中并發(fā)活動(dòng)之間不存在<link>。下面結(jié)合附圖對(duì)本發(fā)明做進(jìn)一步說明。本發(fā)明基于程序依賴圖的BPEL過程一致性度量方法,其整體流程如圖1所示。首先,根據(jù)BPEL的特性將兩個(gè)BPEL過程分別轉(zhuǎn)化為控制流程圖;然后,根據(jù)每個(gè)BPEL過程的控制流程圖,分析活動(dòng)間的三種依賴關(guān)系,生成程序依賴圖PDG ;最后,通過對(duì)兩個(gè)BPEL過程的程序依賴圖的分析,計(jì)算出這兩個(gè)BPEL過程的一致性程度。對(duì)于符合規(guī)范的BPEL過程,本發(fā)明能夠解析出其中所包含的所有信息,包括所有類型的活動(dòng)以及活動(dòng)的輸入輸出、伙伴鏈接、端口類型等。具體步驟如下(如圖2所示):1.對(duì)BPEL過程建模,主要是根據(jù)BPEL的特性將BPEL過程轉(zhuǎn)化為控制流程圖,具體可分為以下步驟:1.1按照深度優(yōu)先的方式遍歷給定的BPEL過程,獲取所有的活動(dòng)結(jié)點(diǎn),并且給BPEL過程的根活動(dòng)設(shè)定為域〈scope〉活動(dòng);1.2根據(jù)所獲取活動(dòng)的類型,選擇與此活動(dòng)類型相對(duì)應(yīng)的解析函數(shù)分析BPEL過程中的每個(gè)活動(dòng)結(jié)點(diǎn)的屬性,將所有活動(dòng)所共有的活動(dòng)屬性提取出來存入內(nèi)存中,然后根據(jù)活動(dòng)類型,另行存儲(chǔ)每種類型的活動(dòng)所特有的屬性;解析函數(shù)根據(jù)活動(dòng)類型可以化分為以下幾類:基本活動(dòng)的解析函數(shù)從BPEL過程中讀取的基本活動(dòng)的屬性,活動(dòng)的屬性主要包含名稱、類型、前驅(qū)后繼關(guān)系、輸入輸出變量、伙伴鏈接和端口類型,在塊結(jié)構(gòu)中,只有在順序〈sequence〉活動(dòng)下的活動(dòng)之間才存在前驅(qū)后繼關(guān)系,而塊結(jié)構(gòu)是由結(jié)構(gòu)化活動(dòng)與其子活動(dòng)組成,具有縱向的層次感;對(duì)于結(jié)構(gòu)化活動(dòng)<if>、〈switch〉、〈pick〉、〈while〉和〈repeatUtil〉,它們的輸入變量只能從條件語句〈condition〉中獲取出來,但這些條件語句必須滿足bpel: getVariableProperty ('','')或者 bpws IgetVariableDataC 1 , 1 1 )這兩種形式才能夠被解析,而輸出變量在結(jié)構(gòu)化活動(dòng)都為空null ;選擇和循環(huán)結(jié)構(gòu)活動(dòng)的解析函數(shù)從BPEL過程中讀取此類型活動(dòng)的屬性,其中輸入變量從條件〈condition〉中解析出來,并且,讀取對(duì)應(yīng)條件〈conditon〉下的分支活動(dòng);
并發(fā)結(jié)構(gòu)和順序結(jié)構(gòu)活動(dòng)的解析函數(shù)從BPEL過程中讀取此類型活動(dòng)的屬性,并且讀取其每條分支下的活動(dòng)。根據(jù)每個(gè)BPEL過程的控制流程圖,分析活動(dòng)間的三種依賴關(guān)系,生成程序依賴圖roG,其具體包括以下步驟:2.1遍歷每個(gè)BPEL過程的控制流程圖,將控制流程圖中除順序〈sequence〉、并發(fā)〈flow〉和域〈scope〉三種類型以外的基本活動(dòng)和結(jié)構(gòu)化活動(dòng)存入活動(dòng)結(jié)點(diǎn)集N中;2.2遍歷活動(dòng)結(jié)點(diǎn)集N,如果存在結(jié)構(gòu)化活動(dòng),將結(jié)構(gòu)化活動(dòng)與其所有子活動(dòng)所構(gòu)成的控制依賴關(guān)系添加到依賴關(guān)系集E ;2.3給所有無控制依賴的活動(dòng)增加一個(gè)共同開始活動(dòng)結(jié)點(diǎn)Entry,使這些活動(dòng)都控制依賴于Entry結(jié)點(diǎn),并將Entry結(jié)點(diǎn)和所有無控制依賴的活動(dòng)之間的控制依賴關(guān)系添加到依賴關(guān)系集E中,Entry結(jié)點(diǎn)添加到活動(dòng)結(jié)點(diǎn)集N中;2.4根據(jù)每個(gè)活動(dòng)的前驅(qū)后繼關(guān)系和輸入輸出變量,找到所有活動(dòng)間的數(shù)據(jù)依賴關(guān)系,并添加到依賴關(guān)系集E中;2.5判斷一個(gè)異步〈invoke〉活動(dòng)是否與另一個(gè)〈receive〉活動(dòng)的伙伴鏈接的名稱和端口類型的名稱相同,若相同,這兩個(gè)活動(dòng)之間存在異步調(diào)用依賴關(guān)系,將此依賴關(guān)系添加到依賴關(guān)系集E中,其中異步〈invoke〉活動(dòng)只有輸入變量,其執(zhí)行采用非阻塞方式:BPEL服務(wù)在執(zhí)行該異步〈invoke〉活動(dòng)后可繼續(xù)執(zhí)行其后續(xù)活動(dòng),該異步〈invoke〉活動(dòng)的調(diào)用結(jié)果會(huì)由之后的一個(gè)〈receive〉活動(dòng)負(fù)責(zé)接收;2.6根據(jù)活動(dòng)結(jié)點(diǎn)集N和依賴關(guān)系集E,從而得到BPEL過程的程序依賴圖,并且以矩陣的形式將所有活動(dòng)間的依賴關(guān)系展示出來,需要注意的是:在矩陣中活動(dòng)前后的位置很重要,比如兩個(gè)活動(dòng)Oi1, n2)之間存在控制依賴關(guān)系,但是活動(dòng)(n2,H1)之間就不存在控制依賴關(guān)系。其中,步驟2.4的方法如下:遍歷活動(dòng)結(jié)點(diǎn)集N,判定獲取的一個(gè)活動(dòng)的輸入變量名稱與該活動(dòng)的前驅(qū)活動(dòng)的輸出變量名稱是否相同,如果相同,將此數(shù)據(jù)依賴關(guān)系添加到依賴關(guān)系集E中,然后獲取另一個(gè)活動(dòng),尋找該活動(dòng)與它的前面的活動(dòng)的數(shù)據(jù)依賴關(guān)系;如果獲取的一個(gè)活動(dòng)的輸入變量名稱與該活動(dòng)的前驅(qū)活動(dòng)的輸出變量名稱不相同,首先需要判斷與該活動(dòng)的前驅(qū)活動(dòng)是否為結(jié)構(gòu)化活動(dòng),如果不是結(jié)構(gòu)化活動(dòng),根據(jù)活動(dòng)的前驅(qū)后繼關(guān)系,獲取該活動(dòng)的前驅(qū)活動(dòng)的前驅(qū)活動(dòng),判定該活動(dòng)與它前驅(qū)活動(dòng)的前驅(qū)活動(dòng)的輸出變量名稱是否相同;如果是結(jié)構(gòu)化活動(dòng),遍歷結(jié)構(gòu)化活動(dòng)的子活動(dòng),判定其所有子活動(dòng)的輸出變量名稱是否與該活動(dòng)的輸入變量名稱相同,如果相同,將這些數(shù)據(jù)依賴關(guān)系都添加到依賴關(guān)系集E中,如果該活動(dòng)與此結(jié)構(gòu)化活動(dòng)的所有子活動(dòng)沒有數(shù)據(jù)依賴關(guān)系,則重復(fù)上述的判定,直到找到該活動(dòng)的數(shù)據(jù)依賴關(guān)系或最頂層活動(dòng)為止;判斷活動(dòng)自身的輸入變量名稱是否等于輸出輸出變量名稱,如果相等,將此數(shù)據(jù)依賴關(guān)系添加到依賴關(guān)系集E中;如果BPEL過程中存在〈while〉或〈repeatUntil〉循環(huán)活動(dòng),判定此類活動(dòng)的輸入變量名稱是否與該活動(dòng)的子活動(dòng)的輸出變量名稱相同,如果相同,將此數(shù)據(jù)依賴關(guān)系添加到依賴關(guān)系集E中;還需要判定此類活動(dòng)的子活動(dòng)之間是否存在反數(shù)據(jù)依賴關(guān)系,如果存在,將此數(shù)據(jù)依賴關(guān)系也添加到依賴關(guān)系集E中。
分析得到這兩個(gè)BPEL過程之間不一致的對(duì)應(yīng)活動(dòng)對(duì),然后基于不一致的此對(duì)應(yīng)活動(dòng)對(duì)的數(shù)目計(jì)算出兩個(gè)BPEL過程的一致性程度;其具體包括以下步驟:3.1根據(jù)兩個(gè)BPEL過程的程序依賴圖的活動(dòng)結(jié)點(diǎn)集NI和N2,建立對(duì)應(yīng)的活動(dòng)結(jié)點(diǎn)集Nal和Na2,其中對(duì)應(yīng)關(guān)系是指兩個(gè)活動(dòng)結(jié)點(diǎn)集中的活動(dòng)相互映射,事實(shí)上,一個(gè)BPEL過程中異步調(diào)用依賴的〈invoke〉和〈receive〉活動(dòng)可能與另一個(gè)BPEL過程中的〈invoke〉活動(dòng)構(gòu)成2: I的映射關(guān)系;3.2如果程序依賴圖中包含選擇結(jié)構(gòu)活動(dòng)<if>、〈switch〉或〈pick〉,建立選擇結(jié)構(gòu)活動(dòng)的不同分支上的活動(dòng)之間互斥關(guān)系集R1和R2 ;3.3遍歷兩個(gè)BPEL過程的所有的活動(dòng)對(duì),判定對(duì)應(yīng)活動(dòng)對(duì)之間的互斥關(guān)系和依賴關(guān)系是否相同,只要有一種關(guān)系不相同,則認(rèn)為這兩個(gè)活動(dòng)對(duì)是不一致的,并將其分別添加到不一致的活動(dòng)對(duì)集Q1和Q2,而活動(dòng)對(duì)由活動(dòng)節(jié)點(diǎn)集中任意的兩個(gè)活動(dòng)組成的一對(duì)活動(dòng)以及一個(gè)活動(dòng)與自身組成的一對(duì)活動(dòng);3.4根據(jù)兩個(gè)BPEL過程的活動(dòng)結(jié)點(diǎn)集Nal和Na2的中活動(dòng)結(jié)點(diǎn)數(shù)目a和b,以及不一致的對(duì)應(yīng)活動(dòng)對(duì)集Q1和Q2中的活動(dòng)對(duì)數(shù)目c和d,采用公式I計(jì)算出這兩個(gè)BPEL過程的一致性程度P。
權(quán)利要求
1.一種基于程序依賴圖的BPEL過程一致性度量方法,其特征在于:以兩個(gè)BPEL過程為輸入,以這兩個(gè)BPEL過程的一致性程度為輸出結(jié)果;該方法使用的BPEL過程必須符合WS-BPEL2.0規(guī)范,并且過程中不包含〈link〉活動(dòng);步驟如下: (1)輸入兩個(gè)BPEL過程,根據(jù)BPEL的特性將兩個(gè)BPEL過程分別轉(zhuǎn)化為控制流程圖; (2)根據(jù)每個(gè)BPEL過程的控制流程圖,分析活動(dòng)間的三種依賴關(guān)系,生成程序依賴圖PDG ; (3)通過對(duì)兩個(gè)BPEL過程的程序依賴圖的分析,計(jì)算出這兩個(gè)BPEL過程的一致性程度。
2.根據(jù)權(quán)利要求1所述的基于程序依賴圖的BPEL過程一致性度量方法,其特征在于,步驟(I)具體步驟如下: 1.1按照深度優(yōu)先的方式遍歷給定的BPEL過程,獲取所有的活動(dòng)結(jié)點(diǎn),并且給BPEL過程的根活動(dòng)設(shè)定為域〈scope〉活動(dòng); 1.2根據(jù)所獲取活動(dòng)的類型,選擇與此活動(dòng)類型相對(duì)應(yīng)的解析函數(shù)分析BPEL過程中的每個(gè)活動(dòng)結(jié)點(diǎn)的屬性,將所有活動(dòng)所共有的活動(dòng)屬性提取出來存入內(nèi)存中,然后根據(jù)活動(dòng)類型,另行存儲(chǔ)每種類型的活動(dòng)所特有的屬性; 解析函數(shù)根據(jù)活動(dòng)類型化分為以下幾類: 基本活動(dòng)的解析函數(shù)從BPEL過程中讀取基本活動(dòng)的屬性,活動(dòng)的屬性包含名稱、類型、前驅(qū)后繼關(guān)系、輸入輸出變量、伙伴鏈接和端口類型,在塊結(jié)構(gòu)中,只有在順序〈sequence〉活動(dòng)下的活動(dòng)之間才存在如驅(qū)后繼關(guān)系; 選擇和循環(huán)結(jié)構(gòu)活動(dòng)的解析函數(shù)從BPEL過程中讀取此類型活動(dòng)的屬性,其中輸入變量從條件〈condition〉中解析出來,并且讀取對(duì)應(yīng)條件〈conditon〉下的分支活動(dòng); 并發(fā)結(jié)構(gòu)和順序結(jié)構(gòu)活動(dòng)的解析函數(shù)從BPEL過程中讀取此類型活動(dòng)的屬性,并且讀取其每條分支下的活動(dòng)。
3.根據(jù)權(quán)利要求1所述的基于程序依賴圖的BPEL過程一致性度量方法,其特征在于,步驟(2)具體步驟如下: . 2.1遍歷每個(gè)BPEL過程的控制流程圖,將控制流程圖中除順序〈sequence〉、并發(fā)〈flow〉和域〈scope〉三種類型以外的基本活動(dòng)和結(jié)構(gòu)化活動(dòng)存入活動(dòng)結(jié)點(diǎn)集N中; .2.2遍歷活動(dòng)結(jié)點(diǎn)集N,如果存在結(jié)構(gòu)化活動(dòng),將結(jié)構(gòu)化活動(dòng)與其所有子活動(dòng)所構(gòu)成的控制依賴關(guān)系添加到依賴關(guān)系集E中; .2.3給所有無控制依賴的活動(dòng)增加一個(gè)共同開始活動(dòng)結(jié)點(diǎn)Entry,使這些活動(dòng)都控制依賴于Entry結(jié)點(diǎn),并將Entry結(jié)點(diǎn)和所有無控制依賴的活動(dòng)之間的控制依賴關(guān)系添加到依賴關(guān)系集E中,Entry結(jié)點(diǎn)添加到活動(dòng)結(jié)點(diǎn)集N中; .2.4根據(jù)每個(gè)活動(dòng)的前驅(qū)后繼關(guān)系和輸入輸出變量,找到所有活動(dòng)間的數(shù)據(jù)依賴關(guān)系,并添加到依賴關(guān)系集E中; .2.5判斷一個(gè)異步〈invoke〉活動(dòng)是否與另一個(gè)〈receive〉活動(dòng)的伙伴鏈接的名稱和端口類型的名稱相同,若相同,這兩個(gè)活動(dòng)之間存在異步調(diào)用依賴關(guān)系,將此依賴關(guān)系添加到依賴關(guān)系集E中; .2.6根據(jù)活動(dòng)結(jié)點(diǎn)集N和依賴關(guān)系集E,得到BPEL過程的程序依賴圖,并且以矩陣的形式將所有活動(dòng)間的依賴關(guān)系展示出來。
4.根據(jù)權(quán)利要求1所述的基于程序依賴圖的BPEL過程一致性度量方法,其特征在于:步驟2.3的方法如下: 遍歷活動(dòng)結(jié)點(diǎn)集N,判定獲取的一個(gè)活動(dòng)的輸入變量名稱與該活動(dòng)前驅(qū)活動(dòng)的輸出變量名稱是否相同,如果相同,將此數(shù)據(jù)依賴關(guān)系添加到依賴關(guān)系集E中,然后獲取下一個(gè)活動(dòng),尋找該活動(dòng)與它前面的活動(dòng)的數(shù)據(jù)依賴關(guān)系;如果獲取的一個(gè)活動(dòng)的輸入變量名稱與該活動(dòng)的前驅(qū)活動(dòng)的輸出變量名稱不相同,首先判斷與該活動(dòng)的前驅(qū)活動(dòng)是否為結(jié)構(gòu)化活動(dòng),如果不是結(jié)構(gòu)化活動(dòng),根據(jù)活動(dòng)的前驅(qū)后繼關(guān)系,獲取該活動(dòng)的前驅(qū)活動(dòng)的前驅(qū)活動(dòng),判定該活動(dòng)與它前驅(qū)活動(dòng)的前驅(qū)活動(dòng)的輸出變量名稱是否相同;如果是結(jié)構(gòu)化活動(dòng),遍歷結(jié)構(gòu)化活動(dòng)的子活動(dòng),判定其所有子活動(dòng)的輸出變量名稱是否與該活動(dòng)的輸入變量名稱相同,如果相同,將這些數(shù)據(jù)依賴關(guān)系都添加到依賴關(guān)系集E中,如果該活動(dòng)與此結(jié)構(gòu)化活動(dòng)的所有子活動(dòng)沒有數(shù)據(jù)依賴關(guān)系,則重復(fù)上述的判定,直到找到該活動(dòng)的數(shù)據(jù)依賴關(guān)系或最頂層活動(dòng)為止; 判斷活動(dòng)自身的輸入變量名稱是否等于輸出輸出變量名稱,如果相等,將此數(shù)據(jù)依賴關(guān)系添加到依賴關(guān)系集E中; 如果BPEL過程中存在〈while〉或<r印eatUntil〉循環(huán)活動(dòng),判定此類活動(dòng)的輸入變量名稱是否與該活動(dòng)的子活動(dòng)的輸出變量名稱相同,如果相同,將此數(shù)據(jù)依賴關(guān)系添加到依賴關(guān)系集E中;還需要判定此類活動(dòng)的子活動(dòng)之間是否存在反數(shù)據(jù)依賴關(guān)系,如果存在,將此數(shù)據(jù)依賴關(guān)系也添加到依賴關(guān)系集E中。
5.根據(jù)權(quán)利要 求1所述的基于程序依賴圖的BPEL過程一致性度量方法,其特征在于,步驟(3)的方法如下: .3.1根據(jù)兩個(gè)BPEL過程的程序依賴圖的活動(dòng)結(jié)點(diǎn)集N1和N2,建立對(duì)應(yīng)的活動(dòng)結(jié)點(diǎn)集Nai和Na2,其中對(duì)應(yīng)關(guān)系是指兩個(gè)活動(dòng)結(jié)點(diǎn)集中的活動(dòng)相互映射; .3.2如果程序依賴圖中包含選擇結(jié)構(gòu)活動(dòng)<if>、〈switch〉或〈pick〉,建立選擇結(jié)構(gòu)活動(dòng)的不同分支上的活動(dòng)之間互斥關(guān)系集R1和R2 ; .3.3遍歷兩個(gè)BPEL過程的所有的活動(dòng)對(duì),判定對(duì)應(yīng)活動(dòng)對(duì)之間的互斥關(guān)系和依賴關(guān)系是否相同,只要有一種關(guān)系不相同,則認(rèn)為這兩個(gè)活動(dòng)對(duì)是不一致的,并將其分別添加到不一致的活動(dòng)對(duì)集Q1和Q2: .3.4根據(jù)兩個(gè)BPEL過程的活動(dòng)結(jié)點(diǎn)集Nal和Na2的中活動(dòng)結(jié)點(diǎn)數(shù)目a和b,以及不一致的對(duì)應(yīng)活動(dòng)對(duì)集Q1和Q2中的活動(dòng)對(duì)數(shù)目c和d,采用公式I計(jì)算出這兩個(gè)BPEL過程的一致性程度P。
全文摘要
本發(fā)明公開了一種基于程序依賴圖的BPEL過程一致性度量方法。以兩個(gè)BPEL過程為輸入,以這兩個(gè)BPEL過程的一致性程度為輸出結(jié)果;該方法使用的BPEL過程必須嚴(yán)格符合WS-BPEL2.0規(guī)范,并且過程中不包含<link>活動(dòng);根據(jù)BPEL的特性將兩個(gè)BPEL過程分別轉(zhuǎn)化為控制流程圖;根據(jù)每個(gè)BPEL過程的控制流程圖,分析活動(dòng)間的三種依賴關(guān)系,生成程序依賴圖PDG;基于兩個(gè)BPEL過程的程序依賴圖,計(jì)算出這兩個(gè)BPEL過程的一致性程度。本發(fā)明提出的方法,可以對(duì)兩個(gè)BPEL過程的一致性給出一個(gè)從0到1的數(shù)值,而不是像傳統(tǒng)方法那樣僅僅提供一致和不一致的定性結(jié)論,從而有效區(qū)分不同程度的BPEL過程一致性。
文檔編號(hào)G06Q10/06GK103150626SQ20131006455
公開日2013年6月12日 申請(qǐng)日期2013年3月1日 優(yōu)先權(quán)日2013年3月1日
發(fā)明者宋巍, 張學(xué)偉, 邢建春, 楊啟亮, 張文嘉 申請(qǐng)人:南京理工大學(xué)