專利名稱:一種基于NuSMV的服務(wù)組合規(guī)則路由的正確性驗證方法
技術(shù)領(lǐng)域:
本發(fā)明屬于Web服務(wù)組合規(guī)則的形式化驗證領(lǐng)域,具體涉及到一種基于模型檢測的服務(wù)規(guī)則路由的正確性驗證方法。
背景技術(shù):
隨著企業(yè)信息化的發(fā)展,傳統(tǒng)的軟件架構(gòu)已經(jīng)不能滿足多個應(yīng)用集成的需求。面向服務(wù)架構(gòu)(Service Oriented Architecture, SOA)思想的提出在一定程度上解決了這個問題。企業(yè)服務(wù)總線(Enterprise Service Bus, ESB)作為SOA架構(gòu)主要的基礎(chǔ)設(shè)施,已經(jīng)成功應(yīng)用在電信、金融等多個領(lǐng)域。當使用ESB集成應(yīng)用系統(tǒng)時,各個應(yīng)用將自己的業(yè)務(wù)功能封裝為服務(wù)部署在總線上,不同應(yīng)用之間的交互通過服務(wù)的組合和交互完成,具體的傳 輸協(xié)議和消息格式的轉(zhuǎn)換則由總線實現(xiàn)。ESB減少了應(yīng)用集成代價,但消息的路由規(guī)則分散在代碼中,當業(yè)務(wù)規(guī)則改變時,需要修改源代碼以應(yīng)對由此引起的消息路由規(guī)則的改變,從而使得系統(tǒng)的維護成本增加。將業(yè)務(wù)規(guī)則從業(yè)務(wù)流程中提取出來,即在傳統(tǒng)的ESB中引入規(guī)則引擎,使得不同服務(wù)之間的消息基于獨立的規(guī)則進行路由,當規(guī)則變更時,直接修改相應(yīng)的規(guī)則配置信息即可,可大大降低系統(tǒng)的維護成本。實現(xiàn)基于規(guī)則的消息路由,一個核心問題是如何檢測消息路由的正確性,例如組合服務(wù)的實際運行結(jié)果是否與用戶期望的目標結(jié)果相一致,是否出現(xiàn)引起死鎖的循環(huán)調(diào)用,等等。
發(fā)明內(nèi)容
本發(fā)明針對現(xiàn)有技術(shù)的不足,提供了一種基于NuSMV的服務(wù)組合規(guī)則路由的正確性驗證方法。本發(fā)明方法的具體步驟是
步驟(I)對于每一個原子服務(wù),建立表示其規(guī)則路由的六元組模型
遂=(兄S*。,/,見忒4,其中5 表示一個原子服務(wù)所有狀態(tài)的集合, 表示原子服務(wù)的初始狀態(tài),F(xiàn)表示原子服務(wù)的終結(jié)狀態(tài)集合,M表示消息集合,A = Ix 表示消息標識集合,+表示當前狀態(tài)接收消息后達到下一狀態(tài),-表示發(fā)送消息后到下一狀態(tài),T表示服務(wù)所有狀態(tài)之間的轉(zhuǎn)移關(guān)系的集合。步驟(2)將通過步驟(I)得到的所有六元組模型合并為表示整個業(yè)務(wù)流程的組合服務(wù)模型六元組。步驟(3)為組合服務(wù)模型服務(wù)六元組定義一個NuSMV驗證程序的狀態(tài)變量,取值范圍為組合服務(wù)模型六元組Ib的狀態(tài)集合的所有狀態(tài)元素,初始值為狀態(tài)變量的初始賦值4。
步驟(4)根據(jù)組合服務(wù)模型六元組^B的消息集合創(chuàng)建NuSMV驗證程序的消息變量,初始值設(shè)置為具有實際意義的取值范圍之外的任意一個值。步驟(5)由組合服務(wù)模型六元組# _的狀態(tài)轉(zhuǎn)移關(guān)系集合中的初始狀態(tài)所在的轉(zhuǎn)移關(guān)系得到轉(zhuǎn)移后的狀態(tài),由此定義對應(yīng)該狀態(tài)變量的NuSMV驗證程序的next語句(next語句定義狀態(tài)變量的轉(zhuǎn)換關(guān)系)的一個條件及賦值;從該狀態(tài)及其所在的轉(zhuǎn)移關(guān)系得到狀態(tài)變量的next語句的下一個條件及賦值;依次交替進行,得到狀態(tài)變量的所有條件分支及賦值,其中狀態(tài)變量轉(zhuǎn)換關(guān)系的next語句的條件包括狀態(tài)變量的當前值和消息標識對應(yīng)的消息變量的取值,最終生成NuSMV驗證程序。步驟¢)輸入使用分支時序邏輯CTL或者線性時序邏輯LTL描述的待驗證的性質(zhì),運行通過步驟(5)生成的NuSMV驗證程序,對性質(zhì)進行驗證,對于不滿足的性質(zhì)給出反例。本發(fā)明中NuSMV是一種經(jīng)典的模型檢測工具,本發(fā)明所提供的基于NuSMV的服務(wù)組合規(guī)則路由的正確性驗證方法由一組功能模塊組成,它們包括原子服務(wù)六元組模型生成模塊、組合服務(wù)六元組模型生成模塊、NuSMV驗證程序生成模塊和正確性驗證模塊。原子服務(wù)六元組模型生成模塊根據(jù)表示服務(wù)信息和路由規(guī)則信息的服務(wù)模型生成每個原子服務(wù)的六元組模型。組合服務(wù)六元組模型生成模塊合并每個原子服務(wù)的六元組模型,生成表示整個業(yè)務(wù)流程的組合服務(wù)六元組模型。NuSMV驗證程序生成模塊根據(jù)組合服務(wù)六元組模型,生成完整的NuSMV驗證程序,包括定義狀態(tài)變量和消息變量以及它們的初始值,使用next語句定義狀態(tài)變量的轉(zhuǎn)換關(guān)系。正確性驗證模塊輸入使用分支時序邏輯CTL或者線性時序邏輯LTL描述的待驗證的性質(zhì),運行NuSMV驗證程序,對性質(zhì)進行驗證,對于不滿足的性質(zhì)給出反例。目前,國內(nèi)外學者在Web服務(wù)的形式化驗證上已經(jīng)進行了深入研究,證明了模型檢測技術(shù)驗證流程正確性的有效性。與傳統(tǒng)的驗證服務(wù)流程不同的是,本方明所提供的方法適用于集成了規(guī)則引擎的企業(yè)服務(wù)總線中的消息規(guī)則路由的正確性驗證,在分析服務(wù)狀態(tài)的變換情況時必須同時考慮服務(wù)與規(guī)則的交互,并最終基于NuSMV實現(xiàn)。另一方面,為解決企業(yè)服務(wù)總線中的服務(wù)與規(guī)則的形式化建模問題,本方明所提供的方法在傳統(tǒng)的有限狀態(tài)機的五元組基礎(chǔ)上,擴充了對消息接收和發(fā)送的表示,提出了定義企業(yè)服務(wù)總線上的服務(wù)模型六元組,有效地表達了服務(wù)和規(guī)則的交互情況。
圖I Mule與Drools的集成框架示意 圖2示例貸款審批服務(wù)流程 圖3示例貸款審批服務(wù)的服務(wù)和規(guī)則定義 圖4示例六元組Wcu狀態(tài)遷移 圖5示例六元組Was狀態(tài)遷移 圖6示例六元組Wap狀態(tài)遷移圖;、圖7示例貸款審批服務(wù)流程狀態(tài)遷移 圖8示例貸款審批服務(wù)驗證結(jié)果圖。
具體實施例方式基于表示有限狀態(tài)機的五元組,定義企業(yè)服務(wù)總線上的服務(wù)模型JT為六元組,謬=其中
S=“外 為),表示一個服務(wù)(指原子服務(wù),下同)所有狀態(tài)的集合。在任一確定時亥IJ,一個服務(wù)只能對應(yīng)一個確定的狀杏S0表示服務(wù)的初始狀態(tài)。每個服務(wù)都有一個初始狀態(tài),代表服務(wù)的入口,由此狀態(tài)開始接收或者發(fā)送消息。 = 表示終結(jié)狀態(tài)集合,且i [ S。每個服務(wù)都至少包括一個終止狀態(tài),達到此狀態(tài)后不能再接收或發(fā)送消息。M表示消息集合。服務(wù)的每個狀態(tài)可以發(fā)送或者接收消息然后到達下一狀態(tài),M表示這些消息的集合。A = Ix [h-1表示消息標識集合。消息標識《 e 2表示狀態(tài)處理的消息和類型+表示當前狀態(tài)接收消息后達到下一狀態(tài),-表示發(fā)送消息后到下一狀態(tài)。了表示服務(wù)所有狀態(tài)之間的轉(zhuǎn)移關(guān)系I的集合表示為滿足
即在任一確定時刻,如果服務(wù)當前狀態(tài)se L處理消息類型ae』,則下一時刻,服務(wù)將達到狀態(tài)S1, s'=t(s,a)e S。同時,也可使用服務(wù)狀態(tài)轉(zhuǎn)移圖表示服務(wù)模型六元組。轉(zhuǎn)移圖由圓、同心圓、箭頭三種基本形狀組成,其中圓表示初始狀態(tài)或者中間狀態(tài),圓中的字母表示狀態(tài)名稱;同心圓表示結(jié)束狀態(tài),同心圓中的字母表示結(jié)束狀態(tài)的名稱;箭頭表示狀態(tài)的轉(zhuǎn)移,即從一個狀態(tài)轉(zhuǎn)向下一個狀態(tài)。箭頭上的文字使用字母和符號(+或-)組合的方式,其中字母為消息的名稱,+和”分別表示由箭頭前的狀態(tài)接收消息或者發(fā)送消息后到達箭頭后的狀態(tài)。本發(fā)明所提供的基于NuSMV的服務(wù)組合規(guī)則路由的正確性驗證方法的具體實施方式
如下
I)對于每一個原子服務(wù),建立表示其規(guī)則路由的六元組模型
不失一般性,假設(shè)在ESB中,每個服務(wù)由三部分組成Inbound (入站)、Component (業(yè)務(wù)組件)、0utbound (出站)。其中Inbound接收外部或者其他服務(wù)發(fā)送的消息,是服務(wù)的入口 !Component組件處理具體業(yè)務(wù)邏輯;0utbound負責把消息發(fā)送到其他服務(wù)。在規(guī)則路由轉(zhuǎn)換為六元組時,首先需要對每個服務(wù)進行建模,分別轉(zhuǎn)換為對應(yīng)的服務(wù)模型六元組。(I)初始狀態(tài)定義
入站是每個服務(wù)開始執(zhí)行的地方,對應(yīng)服務(wù)模型六元組的初始狀態(tài)。該狀態(tài)可以接受其他服務(wù)或者外部應(yīng)用發(fā)送的消息,接收消息后,可以將消息傳輸?shù)紺omponent組件,也可以使用路由器直接發(fā)送消息到其他服務(wù),或者使用規(guī)則引擎對消息進行斷言后再路由。(2)中間狀態(tài)定義使用六元組對服務(wù)進行建模,每個服務(wù)只有發(fā)送消息到其他服務(wù)或者從其他服務(wù)接收消息后狀態(tài)才改變。Component組件只是業(yè)務(wù)功能的實現(xiàn),并沒有對消息進行路由,也沒有發(fā)生服務(wù)間消息的接收和發(fā)送,所以消息經(jīng)過Component組件并沒有改變服務(wù)的狀態(tài)。如果使用了出站Outbound,并且Outbound配置了鏈式路由器(chaining-router),那么,狀態(tài)隨著消息達到的出站端點而發(fā)生改變,直到鏈式路由器配置的最后一個出站端點。如果使用規(guī)則進行路由,消息由Inbound接收后進入規(guī)則引擎的工作內(nèi)存進行斷言,匹配不同的條件,觸發(fā)相應(yīng)的動作。這里,如果觸發(fā)的動作是直接發(fā)送消息到其他服務(wù),則進入終結(jié)狀態(tài)。不同規(guī)則中可以使用相同類型的消息,如果規(guī)則的條件不同,那么觸發(fā)消息后服務(wù)會進入不同的狀態(tài)。(3)終結(jié)狀態(tài)定義
如果服務(wù)配置了 Outbound,并且Outbound使用通過路由器(pass-through-router),則當前狀態(tài)發(fā)送消息后達到終結(jié)狀態(tài);如果使用多播路由器(multicasting-router)或者消息分解路由器(message-splitter-router),則將消息發(fā)送到多個服務(wù),對應(yīng)多個終結(jié)狀態(tài),合并后即為終結(jié)狀態(tài)集;如果使用鏈式路由器(chaining-router),則消息發(fā)送給最后一個服務(wù)后服務(wù)到達終結(jié)狀態(tài)。如果消息觸發(fā)的規(guī)則的動作中只是發(fā)送消息到下一個服務(wù),則服務(wù)進入終結(jié)狀態(tài);如果對消息繼續(xù)斷言,則斷言后服務(wù)進入終結(jié)狀態(tài)。服務(wù)狀態(tài)集即為上述初始狀態(tài)、中間狀態(tài)、終結(jié)狀態(tài)的集合。(4)消息集合定義
每個服務(wù)與其他服務(wù)之間的消息交互,包括發(fā)送到其他服務(wù)的消息和從其他服務(wù)接收的消息,這些消息構(gòu)成了服務(wù)的消息集合。(5)消息標識集合定義
服務(wù)發(fā)送消息msg到其他服務(wù),則消息標識為msg-;如果從其他服務(wù)接收消息,則標識為msg+。所有的消息標識構(gòu)成了服務(wù)的消息標識集合。( 6 )狀態(tài)轉(zhuǎn)移關(guān)系集合生成
狀態(tài)轉(zhuǎn)移與消息的發(fā)送和接收直接關(guān)聯(lián)。當服務(wù)由一個狀態(tài)接收消息或者發(fā)送消息后進入下一狀態(tài),即存在一個狀態(tài)轉(zhuǎn)移關(guān)系。所有的狀態(tài)轉(zhuǎn)移關(guān)系構(gòu)成了服務(wù)模型六元組的狀態(tài)轉(zhuǎn)移關(guān)系集合。2)將所有六元組模型合并為表示整個業(yè)務(wù)流程的組合服務(wù)模型六元組
(I)從接收外部請求的服務(wù)(流程開始時的服務(wù))對應(yīng)的六元組^丨開始,搜索A的服務(wù)
狀態(tài)轉(zhuǎn)移關(guān)系集,如果存在一個轉(zhuǎn)移關(guān)系f = Cs 3,/)包含終結(jié)狀態(tài),且3標識為-(發(fā)送的消息),即3 =頂-,那么接著搜索其他六元組中消息與3類型相同但標V口力+的轉(zhuǎn)移關(guān)系f-, I' = (S, +, Y),將消息置入的消息集合,狀態(tài)S、/和S-置入^L的狀態(tài)集合, 轉(zhuǎn)移關(guān)系(s, Sj f)和、s, true, s')置入,M的轉(zhuǎn)移關(guān)系集合。這里,is, true, s')表不狀態(tài)j
到的轉(zhuǎn)移不經(jīng)過消息處理。將#;中的狀態(tài)集合中初始狀態(tài)和終結(jié)狀態(tài)之外的其他狀態(tài)及
其對應(yīng)的消息、轉(zhuǎn)移關(guān)系置入到I相應(yīng)的集合中。
(2)去掉^對應(yīng)六元組馬,中的初始狀態(tài)和包含初始狀態(tài)的轉(zhuǎn)移關(guān)系r = Cs03 m+s S-),將中剩余的狀態(tài)置入ZTm的狀態(tài)集合,剩余的狀態(tài)關(guān)系置入的狀態(tài)轉(zhuǎn)移關(guān)系集合。將乂替換成K,,重復(fù)步驟(I)。(3)如果當前六元組紇B中存在狀態(tài)s , s沒有到其他狀態(tài)的轉(zhuǎn)移關(guān)系,則創(chuàng)建終
結(jié)狀態(tài) W、轉(zhuǎn)移關(guān)系(s, true, ern/)并置入到愁B的相應(yīng)集合中。3 )生成NuSMV驗證程序
NuSMV工具使用NuSMV程序進行驗證,因此只有將業(yè)務(wù)流程對應(yīng)的組合服務(wù)模型六元組轉(zhuǎn)換為完整的NuSMV程序才能進行驗證。
(I)變量的定義
每個模塊包括兩種變量狀態(tài)變量和消息變量。為組合服務(wù)模型服務(wù)六元組定義一
個狀態(tài)變量,取值范圍為六元組Ib的狀態(tài)集合的所有狀態(tài)元素;根據(jù)六元組In的消息集
合創(chuàng)建相應(yīng)的消息變量。(2)變量的初始化
狀態(tài)變量的初始值即為狀態(tài)變量的初始賦值消息變量初始值可設(shè)置為在實際取
值范圍之外任意一個值。(3)變量的轉(zhuǎn)換
狀態(tài)變量的轉(zhuǎn)換關(guān)系由NuSMV輸入語言的next語句定義。從六元組Ib的狀態(tài)轉(zhuǎn)移關(guān)
系集合可以推出每一個狀態(tài)變量的轉(zhuǎn)移關(guān)系由初始狀態(tài)所在的轉(zhuǎn)移關(guān)系得到轉(zhuǎn)移后的狀態(tài),由此定義狀態(tài)變量的next語句的一個條件及賦值;從該狀態(tài)及其所在的轉(zhuǎn)移關(guān)系可以得到狀態(tài)變量的next語句的下一個條件及賦值;依次交替進行,得到狀態(tài)變量的所有條件分支及賦值。狀態(tài)變量轉(zhuǎn)換關(guān)系的next語句的條件包括狀態(tài)變量的當前值和消息標識對應(yīng)的消息變量的取值。消息變量的next語句生成過程如下遍歷六元組,M的消息集合,對于每一個消
息,取出六元組Ib狀態(tài)轉(zhuǎn)移關(guān)系集合中該消息對應(yīng)的標識為-(即發(fā)送的消息)的所有轉(zhuǎn)移關(guān)系,得到轉(zhuǎn)移前的狀態(tài),將該狀態(tài)和消息變量的當前值作為next語句的條件,然后對消息變量賦值。4)驗證待驗證的性質(zhì)
輸入使用分支時序邏輯CTL或者線性時序邏輯LTL描述的待驗證的性質(zhì),運行NuSMV驗證程序,對性質(zhì)進行驗證,對于不滿足的性質(zhì)給出反例。以下使用貸款審批服務(wù)說明如何使用本發(fā)明所提供的方法。其中,ESB選用Mule(http://www. mulesoft. org),規(guī)則弓I擎選用 Drools (http://www. jboss. org/drools)。
圖I是Mule與Drools的集成框架不意圖,其中DroolsProxy是Mule中的Drools代理。圖2為一個貸款審批服務(wù)的示例流程,表述如下首先,使用Mule和Drools實現(xiàn)貸款審批業(yè)務(wù)流程建模,服務(wù)之間基于規(guī)則進行消息路由;然后,使用本發(fā)明所提供的方法將消息路由轉(zhuǎn)換為模型檢測工具NuSMV輸入程序,即將Mule的流程配置信息(mule-config. xml)和Drools的規(guī)則配置信息(rules, xml)轉(zhuǎn)換為smv驗證程序;最后,使用NuSMV進行正確性驗證。I)貸款審批服 務(wù)定義
圖2對應(yīng)的服務(wù)和規(guī)則見圖3,其中包括3個原子服務(wù)和4個規(guī)則。CustomerService服務(wù)用于接收貸款請求;ASSesSServiCe服務(wù)用于對貸款的風險進行評估,即根據(jù)用戶的個人信息給出風險是高還是低;ApprovalService服務(wù)用于對高風險的貸款或者大額貸款申請進行審批。服務(wù)之間通過規(guī)則進行連接,根據(jù)貸款審批服務(wù)語義定義4個規(guī)則規(guī)則ApplyLow,貸款金額小于10000時觸發(fā);規(guī)則ApplyHigh,貸款金額大于等于10000時觸發(fā);規(guī)則RiskLow,風險評估為低時觸發(fā);規(guī)則RiskHigh,風險評估為高時觸發(fā)。下面敘述實現(xiàn)整個貸款流程的具體配置,包括服務(wù)的配置、消息實體類的定義和規(guī)則的定義。(I)服務(wù)的配置
在 mule-config. xml 中定義 CustomerService、AssessService、ApprovalService3 個Flow對應(yīng)圖3中的3個服務(wù)。下面定義了 CustomerService流的配置
〈flow name=〃CustomerService〃>
〈inbound-endpoint
ref=〃IoanReceiver〃 exchange-pattern=〃request_response〃/>
〈component〉
〈singleton-object class=〃org. mule, integration. IntegrationComponent^ />
</component)
〈/flow〉
這里,入站IoanReceiver用于接收外部應(yīng)用發(fā)送的貸款請求。IntegrationComponent類是Mule與Drools集成的實現(xiàn)類,用于發(fā)送消息到規(guī)則引擎進行斷言。類似地,定義流AssessService,其組件類為 AssessServiceComponent。當貸款金額小于10000時,請求被發(fā)送到AssessService流的AssessServiceComponent類。AssessServiceComponent類實現(xiàn)對貸款申請進行風險評估的業(yè)務(wù)功能,評估的結(jié)果可能是高風險或者低風險。類似地,定義流ApprovalService,其組件類為 ApprovalServiceComponent。當貸款請求風險評估為高風險或者貸款金額大于等于10000時,請求被發(fā)送到ApprovalService流的ApprovalServiceComponent組件類。該類實現(xiàn)對貸款申請進行審批的業(yè)務(wù)功能,審批的結(jié)果可能是貸款請求被接收或者拒絕。(2)消息實體類的定義
定義消息實體類IoanMessage類表示用戶的貸款申請信息,包含姓名、貸款金額等屬性;LoanRisk為貸款風險類,包含姓名、貸款金額、貸款風險等屬性;LoanApproval表示貸款審批類,包含姓名、貸款金額等屬性。(3)規(guī)則的定義
在rules, dr I文件中配置圖3中的4個規(guī)則。以下定義了規(guī)則ApplyLow的配置 rule 〃ApplyLow〃when
$loanMessage : LoanMessage( amount < 10000)then
LoanRisk IoanRisk = new LoanRisk();riskMessage. setName(loanMessage. getName());
Il發(fā)送到AssessService服務(wù),進行個人風險評估。IoanRisk = mule. generateMessage("AssessService", riskMessage,null, MessageExchangePattern. 0NE_WAY);
insert (IoanRisk) ;//根據(jù)風險級別判斷 end
這里,貸款金額由消息類LoanMessage的屬性amount表示,當amount〈10000時,匹配規(guī)則ApplyLow,將LoanRisk類型的消息發(fā)送到AssessService流,即對貸款風險進行評估。獲取評估結(jié)果IoanRisk,使用Drools關(guān)鍵字insert對風險類消息IoanRisk進行斷言。類似地,定義規(guī)則ApplyHigh。當amount>=10000時,匹配規(guī)則ApplyHigh,將LoanApproval類型的消息發(fā)送到ApprovalService流,即對貸款申請進行審批。類似地,定義規(guī)則RiskLow。當風險為低時,匹配規(guī)則RiskLow,風險為低時貸款被批準,這里直接在控制臺打印出貸款被批準的字符串。類似地,定義規(guī)則RiskHigh。當風險為高時,匹配規(guī)則RiskHigh,將LoanApproval類型的消息發(fā)送到ApprovalService流進行審批。2)貸款審批服務(wù)驗證
使用NuSMV進行驗證貸款審批服務(wù)的消息路由,需要首先進行形式化建模先將服務(wù)模型轉(zhuǎn)換為六元組,再將六元組轉(zhuǎn)換為NuSMV輸入語言。( I)服務(wù)模型到六元組的轉(zhuǎn)換實現(xiàn)
CustomerService服務(wù)發(fā)送貸款請求,對應(yīng)的服務(wù)模型為表示為
5^忽 _CtJ g J ;
S0 = cuO ;
= Cc-LIij CU^ ;
Mcn = [amount];
Acs = {ammnt < 10000-, amount >= 10000—j ;
Tca = Kcu0, amount < 10000-, CU1), (cu0, amount >= 10000-, C1U2M。圖4是對應(yīng)的狀態(tài)轉(zhuǎn)移圖。AssessService為風險評估服務(wù),對應(yīng)的服務(wù)模型為捧HS — ■ 為 Ss MS ^ ,其中
^ =SSjj asv 3^};
權(quán)利要求
1.一種基于NuSMV的服務(wù)組合規(guī)則路由的正確性驗證方法,其特征在于該方法的具體步驟是 步驟(I)對于每ー個原子服務(wù),建立表示其規(guī)則路由的六元組模型淨=(5;5^ア,見忒ア),其中表示ー個原子服務(wù)所有狀態(tài)的集合,Sti表示原子服務(wù)的初始狀態(tài),J7表示原子服務(wù)的終結(jié)狀態(tài)集合,'M表示消息集合,』=麗表示消息標識集合,+表示當前狀態(tài)接收消息后達到下一狀態(tài),-表示發(fā)送消息后到下一狀態(tài),Γ表示服務(wù)所有狀態(tài)之間的轉(zhuǎn)移關(guān)系的集合;步驟(2)將通過步驟(I)得到的所有六元組模型合并為表示整個業(yè)務(wù)流程的組合服務(wù)模型六元組; 步驟(3)為組合服務(wù)模型服務(wù)六元組/匕定義ー個NuSMV驗證程序的狀態(tài)變量,取值范圍為組合服務(wù)模型六元組がM的狀態(tài)集合的所有狀態(tài)元素,初始值為狀態(tài)變量的初始賦值;O ; 步驟(4)根據(jù)組合服務(wù)模型六元組/iし的消息集合創(chuàng)建NuSMV驗證程序的消息變量,初始值設(shè)置為具有實際意義的取值范圍之外的任意ー個值; 步驟(5)由組合服務(wù)模型六元組的狀態(tài)轉(zhuǎn)移關(guān)系集合中的初始狀態(tài)所在的轉(zhuǎn)移關(guān)系得到轉(zhuǎn)移后的狀態(tài),由此定義對應(yīng)該狀態(tài)變量的NuSMV驗證程序的next語句的ー個條件及賦值;從該狀態(tài)及其所在的轉(zhuǎn)移關(guān)系得到狀態(tài)變量的next語句的下ー個條件及賦值;依次交替進行,得到狀態(tài)變量的所有條件分支及賦值,其中狀態(tài)變量轉(zhuǎn)換關(guān)系的next語句的條件包括狀態(tài)變量的當前值和消息標識對應(yīng)的消息變量的取值,最終生成NuSMV驗證程序; 步驟出)輸入使用分支時序邏輯CTL或者線性時序邏輯LTL描述的待驗證的性質(zhì),運行通過步驟(5)生成的NuSMV驗證程序,對性質(zhì)進行驗證,對于不滿足的性質(zhì)給出反例。
全文摘要
本發(fā)明公開了一種基于NuSMV的服務(wù)組合規(guī)則路由的正確性驗證方法。本發(fā)明首先對于每一個原子服務(wù),建立表示整個業(yè)務(wù)流程的組合服務(wù)模型六元組。其次為組合服務(wù)模型服務(wù)六元組定義一個NuSMV驗證程序的狀態(tài)變量,根據(jù)組合服務(wù)模型六元組的消息集合創(chuàng)建NuSMV驗證程序的消息變量。然后得到狀態(tài)變量的所有條件分支及賦值。最后輸入待驗證的性質(zhì),運行生成的NuSMV驗證程序,對性質(zhì)進行驗證,對于不滿足的性質(zhì)給出反例。本發(fā)明所提供的方法在傳統(tǒng)的有限狀態(tài)機的五元組基礎(chǔ)上,擴充了對消息接收和發(fā)送的表示,提出了定義企業(yè)服務(wù)總線上的服務(wù)模型六元組,有效地表達了服務(wù)和規(guī)則的交互情況。
文檔編號H04L12/24GK102710434SQ20121013496
公開日2012年10月3日 申請日期2012年5月4日 優(yōu)先權(quán)日2012年5月4日
發(fā)明者俞東進, 劉志清, 殷昱煜, 閆大強 申請人:杭州電子科技大學