欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于有向圖的ws-bpel控制環(huán)路檢測方法

文檔序號:6464695閱讀:207來源:國知局
專利名稱:基于有向圖的ws-bpel控制環(huán)路檢測方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種基于有向圖的WS-BPEL控制環(huán)路檢測方法,主要應(yīng)用于在計算機(jī)韻 工作流的建模系統(tǒng)中。
背景技術(shù)
WS—BPEL (Web Services Business Process Execution Language, Web月艮務(wù)業(yè)務(wù) 流程可執(zhí)行語言)是一種基于XML的業(yè)務(wù)流程描述語言。前身是由IBM、 Microsoft共 同推出的BPEL4WS (Business Process Execution Language for Web Services) , 2003 年4月提交給標(biāo)準(zhǔn)化組織0ASIS,經(jīng)過大量修改使之得到全面提高,于2007年7月正式 將WS-BPEL2. 0發(fā)布為OASIS標(biāo)準(zhǔn)。
WS-BPEL融合了 IBM和Microsoft各自開發(fā)的上一代業(yè)務(wù)流程描述語言WSFL和 XLANG。 WSFL和XLANG分別基于Petri網(wǎng)和Pi演算,因此WS-BPEL吸收和借鑒Petri網(wǎng) 和Pi演算的優(yōu)點,是一種高級的、抽象的、可執(zhí)行建模語言,它不僅實現(xiàn)Web服務(wù)間 的組合,也將流程自身暴露為Web服務(wù)。雖然除WS-BPEL之外還有其他業(yè)務(wù)流程規(guī)范, 但是到目前為止,WS-BPEL是最為成熟和被廣泛支持的技術(shù)。
作為一種描述業(yè)務(wù)流程的語言,WS-BPEL不但提供了業(yè)務(wù)伙伴、業(yè)務(wù)相關(guān)集、業(yè)務(wù) 數(shù)據(jù)、事件處理、錯誤處理和補(bǔ)償處理等的定義,還提供了豐富的流程控制結(jié)構(gòu)描述, 如表示順序執(zhí)行的sequence活動,表示選擇執(zhí)行的if-else活動,表示并發(fā)執(zhí)行的flow 活動,表示循環(huán)執(zhí)行的while和r印eatUntil活動等。
作為一種可執(zhí)行的語言,通過將WS-BPEL部署到相應(yīng)的運(yùn)行容器中,能夠把業(yè)務(wù)流 程描述迅速地轉(zhuǎn)換為實際的業(yè)務(wù)流程系統(tǒng),因此,在部署之前,保證WS-BPEL的正確性 成為關(guān)鍵性的工作之一。與其他可執(zhí)行語言Java和C語言不同的地方是,WS-BPEL流程 通過網(wǎng)絡(luò)交互的是位于不同業(yè)務(wù)伙伴中的分布式Web服務(wù),如果采用傳統(tǒng)運(yùn)行測試的方 式檢驗正確性,勢必會導(dǎo)致網(wǎng)絡(luò)資源以及服務(wù)資源的浪費(fèi),所以檢測WS-BPEL的正確性 一般采用靜態(tài)分析的方法,即在語法正確的基礎(chǔ)上,驗證WS-BPEL是否滿足一些事先約 定的語義屬性。其中,是否存在控制環(huán)路是關(guān)鍵語義屬性之一。
WS-BPEL中的控制環(huán)路是指流程描述中的某些活動在執(zhí)行序列上存在循環(huán)依賴關(guān) 系,導(dǎo)致整個業(yè)務(wù)流程邏輯在實際運(yùn)行過程中會產(chǎn)生死鎖。通常檢驗控制環(huán)路是采用形 式化驗證的方式,即將WS-BPEL轉(zhuǎn)換為已有形式化模型,比如Petri網(wǎng)或者進(jìn)程代數(shù),
然后用時序邏輯公式表達(dá)控制環(huán)路,在整個形式化模型的狀態(tài)空間中搜索是否存在時序 邏輯公式的反例狀態(tài),如果存在反例狀態(tài),則表示存在控制環(huán)路。
形式化驗證方式的優(yōu)點是比較通用,能夠利用已有的形式化模型和相應(yīng)理論,并且 存在大量優(yōu)秀的驗證工具。但這種方式的缺點有兩方面, 一方面當(dāng)被描述的對象比較復(fù) 雜時,形式化模型會產(chǎn)生狀態(tài)空間爆炸問題,在數(shù)量龐大的狀態(tài)空間中搜索反例狀態(tài)的 效率非常低,而控制環(huán)路往往傾向于出現(xiàn)在比較復(fù)雜的WS-BPEL;另一方面,形式化驗 證的結(jié)果很難映射到原有對象中,也就是說,形式化驗證的方式能夠監(jiān)測出WS-BPEL中 存在控制環(huán)路,但是不能告訴用戶是由哪些活動形成了循環(huán)依賴,這樣給用戶查找并修 改錯誤帶來困難。

發(fā)明內(nèi)容
鑒于上述原因,本發(fā)明的主要目的是提供一種基于有向圖的WS-BPEL控制環(huán)路檢測 方法,該方法將WS-BPEL的控制環(huán)路檢測問題轉(zhuǎn)換為有向圖的有向回路檢測問題,能夠 快速檢測出復(fù)雜WS-BPEL中的控制環(huán)路,并且可以將控制環(huán)路定位到原WS-BPEL中的相 應(yīng)位置。
為實現(xiàn)上述目的,本發(fā)明采取以下技術(shù)方案 一種基于有向圖的WS-BPEL控制環(huán)路 檢測方法,包括以下步驟
第一步,將WS-BPEL轉(zhuǎn)換為擴(kuò)展有向圖BPEL-Graph;
第二步,對BPEL-Graph中的非控制環(huán)路循環(huán),即while和r印eatUntil活動進(jìn)行解
環(huán);
第三步,去掉BPEL-Graph中入度或者出度為零的頂點,因為這些頂點肯定不在任何 有向回路上面;
第四步,重復(fù)執(zhí)行第三步,直到BPEL-Graph中所有頂點入度和出度都不為零; 第五步,采用深度優(yōu)先算法查找BPEL-Graph中所有有向回路; 第六步,將BPEL-Graph中的有向回路定位到原有WS-BPEL中相應(yīng)位置。 本發(fā)明與現(xiàn)有技術(shù)相比的優(yōu)點在于本發(fā)明將WS-BPEL的控制環(huán)路檢測問題轉(zhuǎn)換為 有向圖的有向回路檢測問題。因為將WS-BPEL轉(zhuǎn)換為BPEL-Graph的過程中,如果WS-BPEL 中包含有N個活動,那么生成的BPEL-Graph至多有2N個頂點,該極端情況出現(xiàn)在這N 個活動都是結(jié)構(gòu)化活動的時候。因此,與現(xiàn)有的模型檢測技術(shù)相比,本發(fā)明避免了狀態(tài) 空間爆炸的問題,能夠快速檢測出復(fù)雜WS-BPEL中的控制環(huán)路。同時,因為BPEL-Graph 中已經(jīng)包含了 WS-BPEL的相關(guān)活動信息(包括活動類型和條件),因此可以將控制環(huán)路 定位到原WS-BPEL中的相應(yīng)位置。


圖1為本發(fā)明方法的流程圖2為本發(fā)明將WS-BPEL中的基本活動轉(zhuǎn)換為BPEL-Graph中的頂點; 圖3A為本發(fā)明將WS-BPEL中的sequence活動轉(zhuǎn)換為BPEL-Graph子圖; 圖3B為本發(fā)明將WS-BPEL中的if活動轉(zhuǎn)換為BPEL-Graph子圖; 圖3C為本發(fā)明將WS-BPEL中的while活動轉(zhuǎn)換為BPEL-Graph子圖; 圖3D為本發(fā)明將WS-BPEL中的r印eatUntil活動轉(zhuǎn)換為BPEL-Graph子圖; 圖3E為本發(fā)明將WS-BPEL中的pick活動轉(zhuǎn)換為BPEL-Graph子圖; 圖3F為本發(fā)明將WS-BPEL中的flow活動轉(zhuǎn)換為BPEL-Graph子圖; 圖3G為本發(fā)明將WS-BPEL中的forEach活動轉(zhuǎn)換為BPEL-Graph子圖; 圖3H為本發(fā)明將WS-BPEL中的scope活動轉(zhuǎn)換為BPEL-Graph子圖; 圖4為本發(fā)明將WS-BPEL中的link轉(zhuǎn)換為BPEL-Graph中的邊; 圖5A為本發(fā)明將BPEL-Graph中的while活動解環(huán); 圖5B為本發(fā)明將BPEL-Graph中的r印eatUntil活動解環(huán); 圖6為本發(fā)明將BPEL-Graph中不在有向回路上的頂點迭代消除。
具體實施例方式
如圖1所示,本發(fā)明的實現(xiàn)步驟如下
1.將WS-BPEL轉(zhuǎn)換為擴(kuò)展有向圖BPEL-Graph
(1) 首先,定義擴(kuò)展有向圖BPEL-Graph。
定義稱G: (V, E, T, C)為BPEL-Graph,其中 V是一個非空有限集合, E是V中元素的有序?qū)λM成的有限集合,
T是V上的函數(shù),取值為枚舉型{Invoke, Receive, R印ly, Assign, Throw,Wait,Empty,ExtensionActivity,Exit,Rethrow, Sequence_Start, Sequence—End, If—Start, If_End, While—Start, While_End, RepeatUntil一Start, RepeatUntil一End, Pick—Start, Pick_End, Flow—Start, Flow—End, ForEach_Start, ForEach—End, Scope—Start, Scope—End}, C是E上的函數(shù),取值為表達(dá)式,
稱V的元素為頂點,E的元素為邊,T的取值為類型,C的取值為條件。
(2) 然后將WS-BPEL轉(zhuǎn)換為BPEL-Graph分為以下幾部分
a、 WS-BPEL中的基本活動轉(zhuǎn)換為BPEL-Graph中的頂點,WS-BPEL中的基本活動包
括Invoke, Receive, Reply, Assign, Throw, Wait, Empty, ExtensionAcfivi.ty, Ex'it, Rethrow活動。如圖2所示,頂點的類型為對應(yīng)的活動類型,頂點的條件為該活動targets 子元素的joinCondition屬性的值。
b、 WS-BPEL中的結(jié)構(gòu)化活動轉(zhuǎn)換為BPEL-Graph的子圖 其中結(jié)構(gòu)化活動包括
sequence活動,如圖3A所示,生成類型為Sequence—Start禾口 Sequence—End的兩 個頂點,然后將子活動轉(zhuǎn)換為相應(yīng)的BPEL-Graph子圖。
if活動,如圖3B所示,生成類型為If—Start和If—End的兩個頂點,然后將子活 動轉(zhuǎn)換為相應(yīng)的BPEL-Graph子圖。
while活動,如圖3C所示,生成類型為While—Start和While—End的兩個頂點, 然后將子活動轉(zhuǎn)換為相應(yīng)的BPEL-Graph子圖。
r印eatUntil活動,如圖3D所示,生成類型為R印eatUnti1—Start和 R印eatUnti1—End的兩個頂點,然后將子活動轉(zhuǎn)換為相應(yīng)的BPEL-Graph子圖。
pick活動,如圖3E所示,生成類型為Pick_Start和Pick一End的兩個頂點,然后 將子活動轉(zhuǎn)換為相應(yīng)的BPEL-Graph子圖。
flow活動,如圖3F所示,生成類型為Flow—Start和Flow—End的兩個頂點,然后 將子活動轉(zhuǎn)換為相應(yīng)的BPEL-Graph子圖。
forEach活動,如圖3G所示,生成類型為ForEach—Start和ForEach—End的兩個 頂點,然后將子活動轉(zhuǎn)換為相應(yīng)的BPEL-Graph子圖。
scope活動,如圖3H所示,生成類型為Scope_Start和Scope_End的兩個頂點, 然后將子活動轉(zhuǎn)換為相應(yīng)的BPEL-Graph子圖。
c、 WS-BPEL中的link轉(zhuǎn)換為BPEL-Graph中的邊,如圖4所示。
2、對BPEL-Graph中的非控制環(huán)路循環(huán),即while和r印eatUntil活動進(jìn)行解環(huán);
因為WS-BPEL中的while和r印eatUntil活動轉(zhuǎn)換成BPEL-Graph子圖后,也會形 成有向回路,因此需要對這三類BPEL-Graph子圖進(jìn)行解環(huán),解環(huán)方法為去掉while 和r印eatUntil活動生成的BPEL-Graph子圖中的循環(huán)邊。
a、 while活動的解環(huán),如圖4A所示,去掉對應(yīng)BPEL-Graph子圖的循環(huán)邊。
b、 r印eatUntil活動的解環(huán),如圖4B所示,去掉對應(yīng)BPEL-Graph子圖的循環(huán) 邊。
3.去掉BPEL-Graph中入度或者出度為零的頂點,因為這些頂點肯定不在任何有向 回路上面,直到BPEL-Graph中所有頂點入度和出度都不為零;
經(jīng)過解環(huán)之后的BPEL-Graph,其中存在的有向回路必定是由WS-BPEL中的控制環(huán) 路引起。為了減少查找有向回路的計算量,可以去掉BPEL-Graph中肯定不在任何有向 回路上的頂點,而這些頂點的入度或者出度為零,如圖5所示。經(jīng)過迭代消去,BPEL-Graph 中剩下的頂點肯定是在某一個或者某幾個有向回路上。
4、 采用深度優(yōu)先算法査找BPEL-Graph中所有有向回路; 其步驟如下
設(shè)G是連通(n, m) BPEL-Graph圖,V={1, 2, , n} , V是一個非空有限集合,n 為頂點數(shù),m為邊數(shù),H是BPEL-Graph圖中的鄰接矩陣,P是階n的一維數(shù)組,P=(pl , p2 ,…,pk , 0,, 0),表示在搜索過程中當(dāng)前有向路,其起點為pl ,終點為pk , 開始時,P=(0, 0,, 0), k=l, pi =1,設(shè)X為禁止矩陣,i為變量,
第1步 X = 0
第2步 i = pi + 1
第3步若i 〉 n,轉(zhuǎn)第8步
第4步若沒有邊(pk , i)即H[pk , i] = 0,轉(zhuǎn)第7步 第5步若頂點i在P上,轉(zhuǎn)第7步
第6步若禁止從頂點pk到i即X[pk , i] = 1,轉(zhuǎn)第7步。否則令k = k + 1, pk =i,轉(zhuǎn)第2步。
第7步令i = i + 1,轉(zhuǎn)第3步
第8步若有邊(pk , pl)即即H[pk , pl] = 1,則輸出有向環(huán)[pl , p2 ,…,pk ]。 第9步若k = 1,令pl = pl + 1, pk 二pl,轉(zhuǎn)第ll步。 第10步令X[pk, j] =0, j 二 1,…,n, X[pk-1, pk] = 1, pk = 0, k = k - 1, 轉(zhuǎn)第2步
第ll步若pl 〉 n,停。
若pl = n,轉(zhuǎn)第8步。
若pl 〈 n,轉(zhuǎn)第l步。
5. 最后,因為BPEL-Graph中己經(jīng)包含了 WS-BPEL的相關(guān)活動信息(包括活動類型 和條件),因此很容易將查找到的有向回路定位到原來WS-BPEL中的相應(yīng)位置。
權(quán)利要求
1、一種基于有向圖的WS-BPEL控制環(huán)路檢測方法,其特征在于步驟如下第一步,將WS-BPEL轉(zhuǎn)換為擴(kuò)展有向圖BPEL-Graph;第二步,對BPEL-Graph中的非控制環(huán)路循環(huán),即while和repeatUntil活動進(jìn)行解環(huán);第三步,去掉BPEL-Graph中入度或者出度為零的頂點,因為這些頂點肯定不在任何有向回路上面;第四步,重復(fù)執(zhí)行第三步,直到BPEL-Graph中所有頂點入度和出度都不為零;第五步,采用深度優(yōu)先算法查找BPEL-Graph中所有有向回路;第六步,將BPEL-Graph中的有向回路定位到原有WS-BPEL中相應(yīng)位置。
2、 根據(jù)權(quán)利要求l所述的基于有向圖的WS-BPEL控制環(huán)路檢測方法,其特征在于 所述的第一步將WS-BPEL轉(zhuǎn)換為有向圖BPEL-Graph的方法(1) 首先定義擴(kuò)展有向圖BPEL-Graph,即定義稱G: (V, E, T, C)為BPEL-Graph,其中V是一個非空有限集合;E是V中元素的有序?qū)λM成的有限集合;T是V上的函數(shù),取值為枚舉型{Invoke, Receive, R印ly, Assign, Throw, Wait, E即ty, ExtensionActivity, Exit, Rethrow, Sequence—Start, Sequence—End, If—Start, If_End, While—Start, While—End, R印eatUntil—Start, R印eatUnti1—End, Pick—Start, Pick—End, Flow—Start, Flow_End, ForEach—Start, ForEach—End, Scope—Start, Scope—End};C是E上的函數(shù),取值為表達(dá)式;稱V的元素為頂點,E的元素為邊,T的取值為類型,C的取值為條件;(2) 將WS-BPEL轉(zhuǎn)換為BPEL-Graph分為以下幾部分a. WS-BPEL中的基本活動轉(zhuǎn)換為BPEL-Graph中的頂點,基本活動包括Invoke, Receive, Reply, Assign, Throw, Wait, Empty, ExtensionActivity, Exit, Rethrow 活動,b. 將WS-BPEL中的結(jié)構(gòu)化活動轉(zhuǎn)換為BPEL-Graph的子圖c. 將WS-BPEL中的link轉(zhuǎn)換為BPEL-Graph中的邊。
3、 根據(jù)權(quán)利要求l所述的基于有向圖的WS-BPEL控制環(huán)路檢測方法,其特征在于所述的第二步對BPEL-Graph中的非控制環(huán)路循環(huán),即while和r印eatUntil活動進(jìn)行 解環(huán)方法為去掉while和r印eatUntil活動生成的BPEL-Graph子圖中的循環(huán)邊。
4、根據(jù)權(quán)利要求1所述的基于有向圖的WS-BPEL控制環(huán)路檢測方法,其特征在于 所述的第五步采用深度優(yōu)先算法查找BPEL-Graph中的有向回路的步驟如下設(shè)G是連通(n, m) BPEL-Graph圖,V={1, 2,…,n} , V是一個非空有限集合,n 為頂點數(shù),m為邊數(shù),H是BPEL-Graph圖中的鄰接矩陣,P是階n的一維數(shù)組,P=(pl , p2,, pk, 0,, 0),表示在搜索過程中當(dāng)前有向路,其起點為pl ,終點為pk , 開始時,P=(0, 0,, 0), k=l, pi =1,設(shè)X為禁止矩陣,i為變量,第1步 X = 0;第2步i = pi + 1;第3步若i 〉 n,轉(zhuǎn)第8步;第4步若沒有邊(pk , i),即H[pk , i] = 0,轉(zhuǎn)第7步; 第5步若頂點i在P上,轉(zhuǎn)第7步;第6步若禁止從頂點pk到i,即X[pk , i] = 1,轉(zhuǎn)第7步,否則令k = k + 1, pk = i,轉(zhuǎn)第2步;第7步令i = i + 1,轉(zhuǎn)第3步;第8步若有邊(pk , pl),即H[pk , pl] = 1,則輸出有向環(huán)[pl , p2 ,…,pk ]; 第9步若k = 1,令pl = pl + 1, pk =口1,轉(zhuǎn)第11步; 第10步令X[pk, j] 二 0, j = 1,…,n, X[pk-1, pk] = 1, pk = 0, k = k - 1, 轉(zhuǎn)第2步;第11步若pl > n,整個算法結(jié)束;若pl = n,轉(zhuǎn)第8步;若pl < n,轉(zhuǎn)第l步。
全文摘要
一種基于有向圖的WS-BPEL控制環(huán)路檢測方法,其步驟為首先將WS-BPEL轉(zhuǎn)換為擴(kuò)展有向圖BPEL-Graph,然后對BPEL-Graph中的非控制環(huán)路循環(huán),即while和repeatUntil活動進(jìn)行解環(huán),迭代去掉BPEL-Graph中入度或者出度為零的頂點,因為這些頂點肯定不在任何有向回路上面,接下來采用深度優(yōu)先算法查找BPEL-Graph中所有有向回路,最后將BPEL-Graph中的有向回路定位到原有WS-BPEL中相應(yīng)位置。本發(fā)明將WS-BPEL的控制環(huán)路檢測問題轉(zhuǎn)換為有向圖的有向回路檢測問題,能夠快速檢測出復(fù)雜WS-BPEL中的控制環(huán)路,并且可以將控制環(huán)路定位到原WS-BPEL中的相應(yīng)位置。
文檔編號G06F9/44GK101339501SQ20081011812
公開日2009年1月7日 申請日期2008年8月12日 優(yōu)先權(quán)日2008年8月12日
發(fā)明者建 劉, 敏 劉, 斗 孫, 馬殿富 申請人:北京航空航天大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
旅游| 宜良县| 襄樊市| 新安县| 河间市| 凉城县| 岳阳市| 灵武市| 郯城县| 锦屏县| 苏尼特左旗| 澎湖县| 罗源县| 吐鲁番市| 仁布县| 牙克石市| 乌拉特前旗| 武威市| 鲁山县| 宣恩县| 宜兰市| 玛沁县| 航空| 蒙山县| 朝阳区| 聂荣县| 蒙自县| 茂名市| 黎城县| 定远县| 黑水县| 民丰县| 台北市| 章丘市| 开阳县| 新津县| 隆尧县| 康马县| 闻喜县| 和静县| 长泰县|