專利名稱:一種網(wǎng)絡(luò)服務(wù)交互行為形式化建模和死鎖定位方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種形式化建模的方法,屬于數(shù)據(jù)挖掘和網(wǎng)絡(luò)服務(wù)分析領(lǐng)域,特別是涉及一種網(wǎng)絡(luò)服務(wù)交互過程中基于H演算的建模及死鎖定位方法,主要解決網(wǎng)絡(luò)服務(wù)交互行為的形式化表示問題。
背景技術(shù):
網(wǎng)絡(luò)服務(wù)是一個由URL標識的軟件系統(tǒng),其接口和綁定都可以通過XML來定義、描述,并且網(wǎng)絡(luò)服務(wù)是可以被發(fā)現(xiàn)的。單個網(wǎng)絡(luò)服務(wù)時通過支持基于網(wǎng)絡(luò)的協(xié)議和使用基于XML的消息來達到與其他網(wǎng)絡(luò)服務(wù)或其他軟件應(yīng)用直接交互的目的。從上個世紀七、八十年代起,研究人員就一直在研究如何對系統(tǒng)進行正確建模,從而獲得好的系統(tǒng)設(shè)計。本人對國內(nèi)外網(wǎng)絡(luò)服務(wù)交互行為建模方法進行了大量的研究,發(fā)現(xiàn)大多數(shù)研究集中于三個方面,分別是Petri網(wǎng)建模、自動機理論建模和進程代數(shù)建模[1]。Petri網(wǎng)是由物理學家卡爾.A.佩特里提出的,Petri網(wǎng)的一個重要的貢獻,就是Petri網(wǎng)里面不存在所謂的“全局時間”的概念,它能夠很容易地表達狹義相對論的觀點。Petri網(wǎng)用直觀的圖形和豐富的形式化語義來表示網(wǎng)絡(luò)服務(wù)的交互行為,可以自然的描述一些系統(tǒng)特性、網(wǎng)絡(luò)服務(wù)的交互行為,而且可以進行驗證。通過利用petri網(wǎng)可以對BPEL4WS進行建模,可以通過庫和變遷來表示服務(wù),可以采用著色petri網(wǎng)的方法進行映射,可以直接將網(wǎng)絡(luò)服務(wù)組合的各種操作符映射到petri網(wǎng)結(jié)構(gòu),然后采用合適的工具對建模后的模型進行驗證[2]。但是對于不同的網(wǎng)絡(luò)服務(wù)的提供者,語義的定義以及圖形的表述各不相同,很難統(tǒng)一,也就是說我們還要浪費人力物力去理解其他網(wǎng)絡(luò)服務(wù)提供者提供的服務(wù)的功能,從而進行整合。自動機理論是將離散數(shù)學系統(tǒng)的構(gòu)造、作用和關(guān)系作為研究對象的數(shù)學理論。自動機可分為有限自動機、后進先出自動機、線性有界自動機、圖靈機等幾種[3]。它們對語言的識別能力各不相同。把自動機理論應(yīng)用到網(wǎng)絡(luò)服務(wù)組合中,也就是把單個的網(wǎng)絡(luò)服務(wù)按照一定的規(guī)則表示出來,然后通過自動機進行篩選和判斷。通過利用自動機理論,我們可以快速而準確的對網(wǎng)絡(luò)服務(wù)組合的正確性進行判斷,比如:FuX.,BultanT.,SuJ提出的囊括guardedautomata、promela語義、SPIN模型檢測器的工具,F(xiàn)uX.提出的衛(wèi)式自動機,AalstW.,HofstedeA.,KiepuszewskiB.等人提出的基于擴展有限自動機的方法[4],然而,上述成果都沒有給出一整套利用自動機理論對網(wǎng)絡(luò)服務(wù)交互行為進行建模的規(guī)則,這樣建模后的模型通常存在狀態(tài)空間爆炸的問題。軟件的形式化方法就是在這個背景下產(chǎn)生的,C.A.R.Hoare的CSP和R.Milner的CCS等理論都是其中的重要代表[5]。研究人員嘗試將程序建模為代數(shù)結(jié)構(gòu),從而用代數(shù)的方法進行推理,進而證明它們的正確性。形式化的描述就是用形式化的語言(具有嚴格的語法語義定義的語言)作為描述工具,研究各種子系統(tǒng)的性質(zhì)。形式化的軟件開發(fā),就是用形式化的語言來描述軟件需求和特征,并且通過推理論證來保證最終的軟件產(chǎn)品滿足這些需求和具備這些特征。進程代數(shù)是一類使用代數(shù)方法來研究通信并發(fā)系統(tǒng)的理論的泛稱[6],進程間通過通信來實現(xiàn)彼此的聯(lián)系以及發(fā)生相互作用,進程代數(shù)包括通信系統(tǒng)演算(CCS)、通信順序進程(CSP)和π演算[7]。利用CCS和CSP對網(wǎng)絡(luò)服務(wù)的交互行為進行建模都是將網(wǎng)絡(luò)服務(wù)交互行為流程描述語言轉(zhuǎn)換成相應(yīng)的進程代數(shù)進行描述,然后利用已有的工具進行驗證,但是這兩種方式只能對網(wǎng)絡(luò)服務(wù)進行驗證,并不能對網(wǎng)絡(luò)交互行為的流程進行正確性的驗證。網(wǎng)絡(luò)服務(wù)不斷受到各界人士的關(guān)注,網(wǎng)絡(luò)服務(wù)交互在互聯(lián)網(wǎng)區(qū)域中占據(jù)主要地位將是大勢所趨。目前存在的主要問題是對網(wǎng)絡(luò)服務(wù)交互行為正確的自動建模,也就是說強調(diào)兩點:一是自動建模,從而減少手動建模的人力浪費,并且降低因人為判斷錯誤造成的錯誤的建模;二是正確的建 模,這一點也相當重要,錯誤的建模不僅浪費時間和資金,還有可能會造成嚴重的損失。[I]W.Kongdenfhaj R.Saint-Paulj B.Benatallahj F.Casat1.AnAspect-orientedFramework for Service Adaptation.1nternational Conference on Service-OrientedComputing, 2006:15-26.
[2]Milanovic Nj MalekM.Current solutions for Web Service composition.[J].1EEE Internet Computing(S1089-7801).IEEE,2004,8(6):51-59.
-[3] Chen Zj Wang J,Dong Wj Qi Z.An interface model for service-orientedsoftware architecture.Joural of Software, 2006,17(6):1459-1469.
[4] H.Yang,Zhao X,Qiu Zj PuG.A formal model for web service choreographydescription language (WS-CDL).1n:FeigEj ed.Proc.0f the IEEE Int’ IConf.0nWebServicesj2006.
[5] Mart enA.0n compatibility of Web services.Petri NetNewsletter, 2003,65(2):12-20.
[6]Hamadi R.,Benatallah B.APetri Net-based Model for Web ServiceComposition[A].Proceedings of the Fourteenth Austarlasian database conferenceon Database technologies[C].AdelaideAustraliaj 2003:191-200[7]Fu X.,Bultan T.,Su J..WSAT:A Tool for Formal Analysis of Webservice [A].Proceedings of the 16th International.Conference on Computer AidedVerification[C].1EEEComputer Society Press,2004:510-51
發(fā)明內(nèi)容
技術(shù)問題:本發(fā)明的目的是提供一種網(wǎng)絡(luò)服務(wù)交互行為形式化建模和死鎖定位方法。針對各種現(xiàn)有的形式化語言描述的網(wǎng)絡(luò)服務(wù)之間的交互,利用轉(zhuǎn)換規(guī)則,將形式化語言的描述轉(zhuǎn)換為進程代數(shù)的描述。設(shè)計基于η演算的其他形式化語言的轉(zhuǎn)換規(guī)則。并在此基礎(chǔ)上構(gòu)建HXML工具,用于對由進程代數(shù)描述的網(wǎng)絡(luò)服務(wù)交互行為進行自動建模,自動定位流程中異常發(fā)生的位置以達到自動發(fā)現(xiàn)服務(wù)流程中異常的目的。技術(shù)方案:隨著信息時代的不斷發(fā)展,單個的網(wǎng)絡(luò)服務(wù)已無法滿足用戶的需求,于是就需要若干個網(wǎng)絡(luò)服務(wù)之間進行交互組合,即把部署于互聯(lián)網(wǎng)上由不同網(wǎng)絡(luò)服務(wù)提供者提供的網(wǎng)絡(luò)服務(wù)根據(jù)特定的需要組合成一個新的網(wǎng)絡(luò)服務(wù),使得整合后的網(wǎng)絡(luò)服務(wù)具有更為強大的功能,從而滿足用戶的需要。然而網(wǎng)絡(luò)服務(wù)系統(tǒng)本身的并行性、分布性和高度動態(tài)性,僅僅依靠開發(fā)者的直觀認識,將越來越難以把握所開發(fā)系統(tǒng)的行為,也就是說在網(wǎng)絡(luò)服務(wù)進行交互的過程中可能會有死鎖現(xiàn)象的出現(xiàn),從而影響整個網(wǎng)絡(luò)服務(wù)的質(zhì)量,因此,在整合后的網(wǎng)絡(luò)服務(wù)實施前對網(wǎng)絡(luò)服務(wù)組合進行正確性驗證是十分必要的。本發(fā)明提出的基于π演算的網(wǎng)絡(luò)服務(wù)交互行為的建模和死鎖定位,是一種基于進程代數(shù)的建模方法,是在CCS的基礎(chǔ)上提出的傳名演算。傳統(tǒng)的進程代數(shù)描述的是一個靜態(tài)的拓撲結(jié)構(gòu),這個靜態(tài)的拓撲結(jié)構(gòu)里所有進程間的交互是在固定的通道上進行的。而H演算則把通道名看作是普通的變量和值,不加以區(qū)分,因此,通道名和普通變量一樣可以在進程間進行傳遞,而進程間可以在新傳遞的通道上進行交互。整個方法包括用戶輸入的網(wǎng)絡(luò)服務(wù)流程的顯示模塊、流程的解析模塊、流程的建模模塊、流程的驗證模塊和流程的死鎖定位模塊。文件的導入模塊主要負責導入文件,對現(xiàn)有的形式化建模語言進行分析后,發(fā)現(xiàn)現(xiàn)有語言語法的共同點是都是基于XML的,因此我們可以在導入文件的過程中忽略語言的語言特性,那么文件導入其實就是導入XML文檔。文件的解析模塊主要負責解析文件,對XML文檔進行解析有兩種方法比較常用:一個是使用基于事件的XML的簡單API,即SAX。另一個是基于樹和結(jié)點的文檔對象模型稱為D0M,本文采用DOM樹分析。在應(yīng)用程序中,基于DOM的XML分析器將一個XML文檔轉(zhuǎn)換成一個對象模型的集合,應(yīng)用程序正是通過對這個對象模型的操作,來實現(xiàn)對XML文檔數(shù)據(jù)的操作。DOM接口提供了一種 通過分層對象模型來訪問XML文檔信息的方式,這些分層對象模型依據(jù)XML的文檔結(jié)構(gòu)形成了一棵節(jié)點樹。無論XML文檔中所描述的是什么類型的信息,即便是制表數(shù)據(jù)、項目列表或一個文檔,利用DOM所生成的模型都是節(jié)點樹的形式。也就是說,DOM強制使用樹模型來訪問XML文檔中的信息。由于XML本質(zhì)上就是一種分層結(jié)構(gòu),所以這種描述方法是相當有效的。建模模塊主要負責對解析后的XML文檔進行形式化描述,其中建模規(guī)則要依據(jù)描述XML文檔的形式化建模語言到π演算的轉(zhuǎn)換規(guī)則。模型的驗證模塊主要負責自動驗證流程的正確與否,因為用來建模的業(yè)務(wù)流程不可能是完全正確的,根據(jù)現(xiàn)有的資料顯示,流程中可能存在的錯誤主要有死鎖、活鎖,或者不可達狀態(tài)。HXML主要研究的是對模型狀態(tài)死鎖的驗證,如果驗證通過,則說明模型不存在死鎖。死鎖定位模塊主要負責對存在死鎖的業(yè)務(wù)流程就行死鎖定位,現(xiàn)有的模型驗證工具只能驗證流程是存在死鎖的,但是不能定位死鎖發(fā)生的位置,如果交互的網(wǎng)絡(luò)服務(wù)行為過多,定位發(fā)生死鎖的位置對開發(fā)人員來說是相當巨大的工程,這也是開發(fā)本方法的原因。本發(fā)明的網(wǎng)絡(luò)服務(wù)交互行為形式化建模和死鎖定位方法中,用來建模和分析的文檔都是可擴展標記語言XML格式的,即必須保證構(gòu)建的用于對由進程代數(shù)描述的網(wǎng)絡(luò)服務(wù)交互行為進行自動建模的HXML工具打開的文件是可擴展標記語言XML格式的,實現(xiàn)所包含的步驟為:步驟I)導入所需驗證的文檔,這里的文檔必須是可擴展標記語言XML格式的,可以在導入文件的過程中忽略各種語言的語言特性,那么文件導入其實就是導入可擴展標記語言XML文檔;步驟2)對可擴展標記語言XML文檔進行解析,采用文檔對象模型DOM樹分析,文檔對象模型DOM接口提供了一種通過分層對象模型來訪問可擴展標記語言XML文檔信息的方式,這些分層對象模型依據(jù)可擴展標記語言XML的文檔結(jié)構(gòu)形成了一棵節(jié)點樹,無論可擴展標記語言XML文檔中所描述的是什么類型的信息,即便是制表數(shù)據(jù)、項目列表或一個文檔,利用文檔對象模型DOM所生成的模型都是節(jié)點樹的形式;也就是說,文檔對象模型DOM強制使用樹模型來訪問可擴展標記語言XML文檔中的信息,具體的實現(xiàn)過程如下:步驟2.1)建立一個解析器工廠,并通過這個工廠來獲得一個具體的解析器對象;步驟2.2)使用解析器工廠的靜態(tài)方法獲得一個具體的文檔對象模型DOM解析器;步驟2.3)利用這個解析器對可擴展標記語言XML文檔進行解析,步驟3)對可擴展標記語言XML文檔進行建模,根據(jù)各類語言的建模規(guī)則,并將建模結(jié)構(gòu)進行有機的結(jié)合,具體實現(xiàn)過程如下:步驟3.1)讀取整個流程的起始標志〈process〉,開始對文件建模,步驟3.2)讀取關(guān)鍵元素并進行判斷,如果是結(jié)束標志〈/process〉,則建模結(jié)束;步驟3.3)如果不是結(jié)束標志〈/process〉,與接收活動、響應(yīng)活動、調(diào)用活動、賦值活動、空活動、等待活動、終止活動、拋出異常、順序活動、分支活動、選擇活動、流活動進行匹配,按照匹配成功的活動建模規(guī)則進行建模,步驟3.4)繼續(xù)執(zhí)行步驟3.2)與步驟3.3),直到讀取到〈/process〉;步驟4)對步驟3)建立的模型進行驗證,具體實現(xiàn)過程如下:步驟4.1)從模型中讀取所有單一網(wǎng)絡(luò)服務(wù)的輸入和輸出;
步驟4.2)根據(jù)網(wǎng)絡(luò)服務(wù)的交互的先后順序,檢測上一步的輸出是否為下一步的輸A ;步驟4.3)如果判定為是,則依次入棧,直到最后一個元素入棧;步驟4.4)如果判定為否,發(fā)出報告“模型中存在死鎖”,并停止入棧,步驟5)死鎖定位,若步驟4)中報告不存在死鎖,則步驟5)可省略,否則,若存在死鎖,則根據(jù)最后入棧的情況進行定位,具體實現(xiàn)過程如下:步驟5.1)到數(shù)據(jù)庫查找與可擴展標記語言XML文檔相對應(yīng)的形式化描述語言的建模規(guī)則;步驟5.2)收集步驟4)中入棧的元素,并找到其對應(yīng)的轉(zhuǎn)換規(guī)則;步驟5.3)步驟4)中棧中的元素依次出棧,同時根據(jù)第二步找到的轉(zhuǎn)換規(guī)則進行逆轉(zhuǎn)換;步驟5.4)將逆轉(zhuǎn)換后得到的可擴展標記語言XML語句放到原可擴展標記語言XML文檔中進行定位,發(fā)出準確的位置信息給用戶。有益效果:本發(fā)明方法針對現(xiàn)有的建模工具對網(wǎng)絡(luò)服務(wù)的交互不能自動建模、不能自動定位異常發(fā)生的位置,采用進程代數(shù)中的η演算對網(wǎng)絡(luò)服務(wù)的交互行為進行建模,并對建模后的模型進行驗證和異常的定位。通過本方法的使用,能夠提高網(wǎng)絡(luò)服務(wù)交互的成功率,節(jié)省服務(wù)流程中發(fā)生異常重新挖掘相關(guān)網(wǎng)絡(luò)服務(wù)的時間,另外有助于開發(fā)人員準確方便的定位異常發(fā)生的位置。
下面結(jié)合附圖對本發(fā)明的具體實施方式
作進一步的描述
圖1是建模及驗證依據(jù)的π演算的圖形化表示,圖2是面向服務(wù)的體系架構(gòu)(SOA),SOA的關(guān)鍵是“服務(wù)”的概念,SOAP是簡單對象訪問協(xié)議,WSDL是網(wǎng)絡(luò)服務(wù)描述語言,UDDI是通用描述、發(fā)現(xiàn)與集成服務(wù),圖3是HXML工具的總體模塊圖,BPEL是指業(yè)務(wù)流程執(zhí)行語言,WS-⑶L是指服務(wù)編舞描述語言,圖4是HXML工具的總體包圖,圖5是XML文檔的解析過程, 圖6是BPEL業(yè)務(wù)流程到π演算自動建模的流程圖。
具體實施例方式HXML工具的實現(xiàn)方法所包含的步驟為:步驟I)以xml文件的格式讀取用戶輸入的文件,并按照原文的格式顯示出來。步驟2)建立一個解析器工廠,并通過這個工廠來獲得一個具體的解析器對象,實現(xiàn)方法如下:DocumentBuilderFactoryfactory=DocumentBuilderFactory.newlnstance ();步驟3)使用上一步獲得的工廠對象的靜態(tài)方法newDocumentBuilder獲得一個DocumentBuilder對象,即具體的DOM解析器,實現(xiàn)方法如下:DocumentBuilderbuilder=factory.newDocumentBuilder ();步驟4)利用這個解析器對XML文檔進行解析。步驟5)讀取整個流程的起始標志〈process〉,開始對BPEL文件建模。根據(jù)相應(yīng)的形式化建模語言到η演算的轉(zhuǎn)換規(guī)則進行建模,直至讀取到結(jié)束標志〈/process〉。步驟6)讀取單個網(wǎng)絡(luò)服務(wù)的輸入輸出,并根據(jù)單個網(wǎng)絡(luò)服務(wù)的發(fā)生順序依次入棧,同時比較前一網(wǎng)絡(luò)服務(wù)的輸出是否為后一網(wǎng)絡(luò)服務(wù)的輸入,若是則繼續(xù)入棧,直至所有網(wǎng)絡(luò)服務(wù)的輸入輸出讀取完畢;若不是,則停止動作。步驟7)判斷步驟6)動作停止時,所有單一 web服務(wù)的輸入輸出是否全部入棧,若是,則業(yè)務(wù)流程中不存在死鎖,驗證流程結(jié)束。步驟8)若不是,則輸出動作停止時入棧的單一網(wǎng)絡(luò)服務(wù)的輸出,并根據(jù)相應(yīng)形式化描述語言到η演算的建模規(guī)則進行逆轉(zhuǎn)換,從而得到死鎖發(fā)生時執(zhí)行的網(wǎng)絡(luò)服務(wù)行為。步驟9)將步驟8)還原得到的網(wǎng)絡(luò)服務(wù)行為放回原xml文檔,定位死鎖發(fā)生的位置,并顯示給用戶,驗證流程結(jié)束。利用基于π演算的網(wǎng)絡(luò)服務(wù)交互行為的形式化建模和死鎖定位方法需要以下條件:條件I) HXML工具內(nèi)部的轉(zhuǎn)換規(guī)則及時更新,從而適應(yīng)快速發(fā)展的形式化描述語言;條件2)需要進行驗證和死鎖定位的網(wǎng)絡(luò)服務(wù)必須是現(xiàn)有的形式化描述語言描述的;利用Ji演算作為建模的方式,采用Visual Studio為開發(fā)工具,應(yīng)用C#編程。其中詳細的步驟如下:一、轉(zhuǎn)換規(guī)則制 定階段:選擇當前較常用的用來描述網(wǎng)絡(luò)服務(wù)交互行為的形式化建模語言,為形式化建模語言與H演算之間的轉(zhuǎn)換制定合理的轉(zhuǎn)換規(guī)則。a)常用的形式化語言選擇階段:步驟I)搜集比較常用的網(wǎng)絡(luò)服務(wù)交互行為;步驟2)根據(jù)描述語言的不同對搜集到的網(wǎng)絡(luò)服務(wù)交互行為進行分類;步驟3)通過步驟2)得到了分類結(jié)果,選取其中的兩到三個進行轉(zhuǎn)換規(guī)則的制定;b)規(guī)則制定階段:步驟4)以現(xiàn)有的轉(zhuǎn)換規(guī)則為例,擴充形式化建模語言的轉(zhuǎn)換規(guī)則,從外部活動、內(nèi)部活動、結(jié)構(gòu)化活動等方面進行建模規(guī)則的制定。如BPEL到的轉(zhuǎn)換規(guī)則為:(1)接收活動〈receive〉的建模
〈receive
partnerLink= “plname ” portTvpe= “pname” operation= £< oname variable= “ncname,,
creatlnstance= “yes|no” stand-attributesslan dard-el e m en ts/>
</receive>由于我們只關(guān)心其中 partnerLink,portType,operation, variable 四個屬性的
取值,因此接收活動〈receive〉可以表示如下:
<receive
partnerLink= “plname” portType= “pname” operation= “onarne” variable= uncname" />
<...>
〈/receive〉即用〈…〉表示〈receive〉的其他屬性、子元素等定義,后面對其他活動的π演算建模同樣用這種形 式?!磖eceive〉活動將等待一個調(diào)用的請求,π演算建模中表示通過通道Channel接收消息,用O進程表示通過通道在發(fā)送完一個被請求的數(shù)據(jù)后進入的下一個進程。于是〈receive〉活動在π演算中建模為:<receive>pi=ChanneI (BPELNcname).0其中,BPELNcname為 partnerLink, portType, operation, variable 四個屬性的值。
(2)響應(yīng)活動〈reply〉的建模
權(quán)利要求
1.一種網(wǎng)絡(luò)服務(wù)交互行為形式化建模和死鎖定位方法,其特征在于該方法中用來建模和分析的文檔都是可擴展標記語言XML格式的,即必須保證構(gòu)建的用于對由進程代數(shù)描述的網(wǎng)絡(luò)服務(wù)交互行為進行自動建模的HXML工具打開的文件是可擴展標記語言XML格式的,實現(xiàn)所包含的步驟為: 步驟I)導入所需驗證的文檔,這里的文檔必須是可擴展標記語言XML格式的,可以在導入文件的過程中忽略各種語言的語言特性,那么文件導入其實就是導入可擴展標記語言XML文檔; 步驟2)對可擴展標記語言XML文檔進行解析,采用文檔對象模型DOM樹分析,文檔對象模型DOM接口提供了一種通過分層對象模型來訪問可擴展標記語言XML文檔信息的方式,這些分層對象模型依據(jù)可擴展標記語言XML的文檔結(jié)構(gòu)形成了一棵節(jié)點樹,無論可擴展標記語言XML文檔中所描述的是什么類型的信息,即便是制表數(shù)據(jù)、項目列表或一個文檔,利用文檔對象模型DOM所生成的模型都是節(jié)點樹的形式;也就是說,文檔對象模型DOM強制使用樹模型來訪問可擴展標記語言XML文檔中的信息,具體的實現(xiàn)過程如下: 步驟2.1)建立一個解析器工廠,并通過這個工廠來獲得一個具體的解析器對象; 步驟2.2)使用解析器工廠的靜態(tài)方法獲得一個具體的文檔對象模型DOM解析器; 步驟2.3)利用這個解析器對可擴展標記語言XML文檔進行解析, 步驟3)對可擴展標記語言XML文檔進行建模,根據(jù)各類語言的建模規(guī)則,并將建模結(jié)構(gòu)進行有機的結(jié)合,具體實現(xiàn)過程如下: 步驟3.1)讀取整個流程的起始標志〈process〉,開始對文件建模, 步驟3.2)讀取關(guān)鍵元素并進行判斷,如果是結(jié)束標志〈/process〉,則建模結(jié)束;步驟3.3)如果不是結(jié)束標志 〈/process〉,與接收活動、響應(yīng)活動、調(diào)用活動、賦值活動、空活動、等待活動、終止活動、拋出異常、順序活動、分支活動、選擇活動、流活動進行匹配,按照匹配成功的活動建模規(guī)則進行建模, 步驟3.4)繼續(xù)執(zhí)行步驟3.2)與步驟3.3),直到讀取到〈/process〉; 步驟4)對步驟3)建立的模型進行驗證,具體實現(xiàn)過程如下:步驟4.1)從模型中讀取所有單一網(wǎng)絡(luò)服務(wù)的輸入和輸出; 步驟4.2)根據(jù)網(wǎng)絡(luò)服務(wù)的交互的先后順序,檢測上一步的輸出是否為下一步的輸入; 步驟4.3)如果判定為是,則依次入棧,直到最后一個元素入棧; 步驟4.4)如果判定為否,發(fā)出報告“模型中存在死鎖”,并停止入棧, 步驟5)死鎖定位,若步驟4)中報告不存在死鎖,則步驟5)可省略,否則,若存在死鎖,則根據(jù)最后入棧的情況進行定位,具體實現(xiàn)過程如下:步驟5.1)到數(shù)據(jù)庫查找與可擴展標記語言XML文檔相對應(yīng)的形式化描述語言的建模規(guī)則;步驟5.2)收集步驟4)中入棧的元素,并找到其對應(yīng)的轉(zhuǎn)換規(guī)則;步驟5.3)步驟4)中棧中的元素依次出棧,同時根據(jù)第二步找到的轉(zhuǎn)換規(guī)則進行逆轉(zhuǎn)換;步驟5.4)將逆轉(zhuǎn)換后得到的可擴展標記語言XML語句放到原可擴展標記語言XML文檔中進行定位,發(fā)出準確的位置信息給用戶。
全文摘要
一種網(wǎng)絡(luò)服務(wù)交互行為形式化建模和死鎖定位方法,對現(xiàn)有的規(guī)則進行分類,并對各分類進行擴充;對尚不存在的規(guī)則進行建立,使轉(zhuǎn)換規(guī)則數(shù)據(jù)庫能夠適應(yīng)快速發(fā)展的形式化描述語言。介于現(xiàn)有的建模工具需要人工參與,不能實現(xiàn)自動建模,并且整個建模過程對用戶是不可見的,如果流程出現(xiàn)錯誤,用戶無法確定異常發(fā)生的位置。利用擴充或建立得到的轉(zhuǎn)換規(guī)則數(shù)據(jù)庫,對形式化建模語言描述的網(wǎng)絡(luò)服務(wù)交互行為進行自動建模,并選取具有代表性的案例對建立的模型進行驗證,證明模型的正確性以及轉(zhuǎn)換規(guī)則的正確性。采用前向查找方法對出現(xiàn)異常的環(huán)節(jié)進行重現(xiàn)和定位,實現(xiàn)建模、驗證、定位全自動。
文檔編號G06F17/30GK103218414SQ201310100798
公開日2013年7月24日 申請日期2013年3月26日 優(yōu)先權(quán)日2013年3月26日
發(fā)明者張衛(wèi)豐, 韓魯峰, 王慕妮, 張迎周, 周國強, 周國富, 許碧歡, 陸柳敏 申請人:南京郵電大學