專利名稱:一種約束校驗方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及約束校驗技術(shù),尤其是指一種約束校驗方法及裝置。
技術(shù)背景在通信領(lǐng)域,網(wǎng)元的配置管理是通過網(wǎng)管實現(xiàn)的,而在網(wǎng)管側(cè)進行各種配 置操作時,必須保證配置數(shù)據(jù)的合法性,因此需要對配置數(shù)據(jù)進行約束校驗以 保證其合法性。比如移動通信網(wǎng)絡(luò)中對于基站的配置管理,其中涉及的約束繁 多,目前比較普遍的做法是針對每條約束編寫單獨的沖交-瞼代碼,而這些代碼在程序流程上有;f艮大的相似性,其中主要涉及數(shù)據(jù)庫查詢和對查詢結(jié)果的約束校 驗,但因沒有進行統(tǒng)一的封裝處理導(dǎo)致代碼規(guī)模龐大,不宜維護和擴展,也不 具有復(fù)用性;而基于結(jié)構(gòu)化查詢語言(OCL, Object Constraint Language )的方 法,雖然將約束表達在OCL文件中,不需要重復(fù)編碼,但每次更改都要重新編 譯代碼,并且需要深入學(xué)習(xí)OCL語法,這也為這種方法的實施應(yīng)用帶來了障礙。發(fā)明內(nèi)容有鑒于此,本發(fā)明的主要目的在于提供一種約束校驗方法及裝置,利用本 發(fā)明,能夠?qū)崿F(xiàn)約束的配制化管理,且縮小了代碼規(guī)模,易于維護和擴展,具 有較強的復(fù)用性。為達到上述目的,本發(fā)明的技術(shù)方案是這樣實現(xiàn)的一種約束校驗方法,該方法包括A、 根據(jù)約束描述MJ'J將約束寫入約束描述文件,并保存約束描述文件;B、 加載約束描述文件;C、 調(diào)用方輸入當(dāng)前操作記錄相關(guān)參數(shù),根據(jù)當(dāng)前操作記錄相關(guān)參數(shù)提取 與當(dāng)前操作記錄對應(yīng)的約束集,對約束集中的約束進行校驗。其中,所述約束描述規(guī)則包括四個子表達式結(jié)構(gòu)化查詢語言SQL查詢語 句、SQL查詢語句要返回的字段、約束校驗的布爾表達式及約束校驗失敗時返 回的錯誤碼。進一步地,步驟B中加載約束描述文件時按照操作對象名、操作類型、校 驗類型組成的層次關(guān)系將所有約束集保存起來。進一步地,所述當(dāng)前操作記錄相關(guān)參數(shù)包括當(dāng)前操作記錄、操作對象名、 操作類型及校驗類型。較佳地,步驟C中所述對約束集中的約束進行校驗為Cl、根據(jù)約束的條件標識判斷約束類型是否為后置校驗,如果為后置校驗, 則執(zhí)行步驟C2;否則不進行任何操作;C2、根據(jù)調(diào)用方輸入的當(dāng)前操作記錄相關(guān)參數(shù)將約束中SQL查詢語句部分 及布爾表達式部分所有以this.開頭的字符串替換為字段值,得到一次替換結(jié)果;C3、執(zhí)行SQL查詢,得到查詢語句要返回的字段部分的變量值并保存;C4、用保存的變量值來替換一次替換結(jié)果中的布爾表達式部分的相應(yīng)變 量,得到二次替換結(jié)果,對二次替換結(jié)果進行布爾表達式分析,若分析結(jié)果為 正確,則返回成功消息給調(diào)用方,繼續(xù)用所保存的變量值進行替換和分析,直 到所有保存的變量值都返回成功消息,則該條約束校驗通過;否則,返回校驗 失敗錯誤碼給調(diào)用方,停止校驗。較佳地,根據(jù)約束的條件標識判斷約束類型不為后置校驗后,該方法進一 步包括進行SQL查詢,得到約束的SQL查詢語句要返回的字段部分的變量 值并保存,用所保存的變量值來替換約束的布爾表達式部分的相應(yīng)變量,得到 替換結(jié)果,對替換結(jié)果進行布爾表達式分析,若分析結(jié)果為正確,則返回成功 消息給調(diào)用方,繼續(xù)用所保存的變量值進行替換和分析,直到所有保存的變量 值都返回成功消息,則該條約束校驗通過;否則,返回校驗失敗錯誤碼給調(diào)用 方,停止校驗。一種約束校驗裝置,該裝置包括,約束書寫模塊、約束集管理模塊、接口 模塊及約束校驗?zāi)K,其中,約束書寫模塊,用于根據(jù)約束描述規(guī)則將約束寫入約束描述文件,并保存約束描述文件;約束集管理^f莫塊,用于加載約束書寫模塊所書寫的約束描迷文件;接口模塊,用于接收調(diào)用方輸入的當(dāng)前操作記錄相關(guān)參數(shù),并根據(jù)所輸入 的當(dāng)前操作記錄相關(guān)參數(shù)從約束集管理模塊中提取出與調(diào)用方輸入的當(dāng)前操作記錄對應(yīng)的約束集,并將所提取的約束集發(fā)給約束校驗?zāi)K;約束校驗?zāi)K,用于對約束集管理模塊發(fā)來的約束集中的約束進行校驗。 其中,所述約束描述規(guī)則包括四個子表達式SQL查詢語句,SQL查詢語句要返回的字段、約束校驗的布爾表達式及約束校驗失敗時返回的錯誤碼。 進一步地,所述約束集管理模塊加載約束描述文件時按照操作對象名、操作類型、校驗類型組成的層次關(guān)系將所有約束集保存起來。進一步地,所述當(dāng)前操作記錄相關(guān)參數(shù)包括當(dāng)前操作記錄、操作對象名、 操作類型及+之一險類型。較佳地,所述約束才交驗才莫塊進一步包括約束類型判定單元、約束校驗單 元、數(shù)據(jù)存儲單元及布爾表達式計算單元,其中,約束類型判定單元,用于才艮據(jù)約束的條件標識判斷約束類型;約束校驗單元,在約束類型判定單元確定約束類型為后置校驗后用于根據(jù) 調(diào)用方輸入的當(dāng)前操作記錄相關(guān)參數(shù)將約束中SQL查詢語句部分及布爾表達 式部分所有以this.開頭的字符串替換為字段值,得到一次替換結(jié)果;根據(jù)一次 替換結(jié)果進行SQL查詢,得到查詢語句要返回的字段部分的變量值并保存;用 所保存的變量值來替換一次替換結(jié)果中布爾表達式部分的相應(yīng)變量,得到二次 替換結(jié)果,并將二次替換結(jié)果發(fā)給布爾表達式計算單元進行分析;數(shù)據(jù)存儲單元,用于為約束校驗單元提供查詢語句要返回的字段部分的變量值;布爾表達式計算單元,用于對約束校驗單元發(fā)來的替換結(jié)果進行分析,若 分析結(jié)果為正確,則返回成功消息給調(diào)用方,并通知約束校驗單元繼續(xù)用所保 存的剩余變量值進行替換和分析;否則返回校驗失敗錯誤碼給調(diào)用方,并通知約束校驗單元停止工作。較佳地,所述約束^交驗單元進一步用于對約束類型判定單元所確定的校驗類型為前置校驗的約束在數(shù)據(jù)存儲單元中進行SQL查詢,得到約束的SQL查 詢語句要返回字段部分的變量值并保存,用所保存的變量值來替換約束的布爾 表達式部分的相應(yīng)變量,將替換結(jié)果發(fā)給布爾表達式計算單元進行分析。本發(fā)明的約束校驗方法及裝置,首先設(shè)計約束描述規(guī)則,按照約束描述規(guī) 則來書寫約束,并將約束以約束描述文件的形式保存起來,在調(diào)用方輸入當(dāng)前 操作記錄之前加載約束描述文件,輸入當(dāng)前操作記錄之后,根據(jù)輸入的操作對 象名、操作類型、校驗類型提取出與其對應(yīng)的約束集,對約束集中的所有約束 進行校驗,若所有約束都通過,則對當(dāng)前操作記錄的約束校驗通過,配置數(shù)據(jù) 給當(dāng)前操作記錄的調(diào)用方; 一旦有一條約束校l^失敗,則對當(dāng)前操作記錄的校 驗失敗。由此可見,本發(fā)明由于約束描述規(guī)則的設(shè)計,使得無論增加和修改約 束,或?qū)s束進行校驗都按照該約束描述規(guī)則來進行,約束校驗中的代碼一旦 完成就無需修改,增加和修改約束只需要修改約束描述文件即可,而且約束描 述簡單易用,而且前后臺可以重用同一套代碼,由此可以實現(xiàn)約束的配置化管 理,同傳統(tǒng)的約束校驗方法相比縮小了代碼規(guī)模,同時易于維護和擴展,具有 較強的復(fù)用性。
圖1為本發(fā)明約束校驗的方法流程示意圖;圖2為本發(fā)明對約束集中的任意一條約束進行校驗的方法流程示意圖; 圖3為對具體的約束進行校驗的方法流程示意圖; 圖4為本發(fā)明約束校驗裝置結(jié)構(gòu)示意圖。
具體實施方式
下面結(jié)合附圖來對本發(fā)明的具體實施作進一步詳細的說明。 本發(fā)明約束校驗方法如圖1所示,包括以下步驟步驟ll、設(shè)計約束描述規(guī)則。這里,約束描述規(guī)則一般由四個子表達式構(gòu)成,第一個表達式表示結(jié)構(gòu)化查詢語言(SQL, Structured Query Language )查詢語句,第二個表達式表示SQL 查詢語句要返回的字段,第三個表達式表示約束校驗的布爾表達式,第四個表 達式表示約束校驗失敗時返回的錯誤碼。例如,約束規(guī)則可以由check=,,,,、 result=,,,,、 expression=,,,,、 errcode—,,,四 個表達式組成,其中,Check表示SQL查詢語句,執(zhí)行查詢時在表達式前面加上"select *,,,如果 此項為空則直接計算expression,用于支持配置數(shù)據(jù)大小范圍的檢查;result表示SQL查詢語句要返回的字段,在該表達式中變量num表示查詢 得到的記錄數(shù),其它在該表達式中出現(xiàn)的變量名均為要查詢表的字段名稱;expression表示約束校驗的布爾表達式,該項要用到result項中的變量值;errcode表示約束校驗失敗時返回的錯誤碼;步驟12、按照約束描述規(guī)則將不同的約束按照操作對象名、操作類型、校 驗類型組成的層次關(guān)系寫入約束描述文件,并保存約束描述文件。在這里,在約束描述文件中書寫不同的約束時要嚴格遵守約束描述規(guī)則, 約束描述文件在約束才L瞼庫中的存儲格式可以為txt、 ini、 xml等文件形式,以 xml文件才各式為例來"i兌明約束例如,將"T!ROUTER表最多可配置8條記錄"這條約束按照由check=""、 result=,,,,、 expression-"", errcode-,,,,四個表達式組成約束描述規(guī)則以xml約束 描述文件的形式寫在約束校驗庫中為〈ManagedObject name=" T—ROUTER "> <Operate name=" Add "> <Precondition><Rule check="from T_ROUTER" result="num" expression="result<8" errcode=" 1007> </Precondition></ Operate > </ ManagedObject >根據(jù)該約束可知,在向T—ROUTER表中增加記錄時就要校驗這條約束, 如果此時已有8條記錄,則返回錯誤碼為100的提示信息。又如,將"當(dāng)連接類型為2時,T^ROUTER表中的abyIPAddress字段唯一" 這條約束按照由check=,,,,、 result=,,,,、 expression=,,,,、 errcode—,,,四個表達式組 成約束描述規(guī)則以xml約束描述文件的形式寫在約束才交驗庫中為 <ManagedObject name=" T—ROUTER "> <Opemte name=" Add "> <Postcondition><Rule check="from T—ROUTER where this.byLinkTpye=2 and byLinkTpye=2" result="abyIPAddress" expression-"result[O] !=this.abyIPAddress
|| result[l]!=this.abyIPAddress[l] || result[2]!=this.abyIPAddress[2] || result[3]!= this.abyIPAddress [3]" errcode="1017> </Postcondition> </Operate> </ ManagedObject >沖艮據(jù)該約束可知,在向T—ROUTER表中增加記錄時就要校驗這條約束, 如果連接類型為2且當(dāng)前要加入的記錄的IP地址與數(shù)據(jù)存儲單元中已有記錄的 該字段值相同,則返回錯誤碼為101的提示信息。由以上兩個約束可知,expression中的變量名都含有"result",如果約束描 述文件中result屬性中含有多個變量,如result-,,byLinkType,abyIPAddress",則 expreesion中以result. 1、 result. 2分另"表示byLinkType、 abyIPAddress。步驟13、約束集管理模塊加載約束描述文件。因為在執(zhí)行某個操作記錄時所涉及的約束由很多,執(zhí)行某個操作記錄時所 涉及的所有約束構(gòu)成約束集。加載約束描迷文件時由約束集管理模塊按照操作 對象名、操作類型、校驗類型組成的層次關(guān)系將所有約束集保存起來。步驟14、調(diào)用方向接口模塊中輸入當(dāng)前操作記錄、操作對象名、操作類型、校驗類型等當(dāng)前操作記錄相關(guān)參數(shù)。步驟15、接口模塊根據(jù)輸入的操作記錄相關(guān)參數(shù)從約束集管理模塊中提取 出與調(diào)用方輸入的當(dāng)前凈喿作記錄對應(yīng)的約束集,并將所提取的約束集發(fā)給約束 校驗?zāi)K。這里,接口模塊對外提供Check接口供開發(fā)者調(diào)用,Check接口的具體格 式如下Check ( ObjName, OpType, CondType, Buffer),其中ObjName為操作 的對象名;OpType為操作類型,包括增加,刪除,修改;CondType為校驗類 型,包括前置校驗和后置校驗;Buffer代表當(dāng)前操作記錄所在的緩沖區(qū)。步驟16、約束校驗?zāi)K對所得到的約束集中所有的約束進行校驗,若所有 的約束都通過,則返回成功消息給調(diào)用方,配置數(shù)據(jù)到網(wǎng)元;否則,返回約束 校驗失敗的錯誤碼及與該錯誤碼對應(yīng)的提示信息給調(diào)用方,并停止對約束集中 剩余約束的校驗。這里,具體對約束集中的任意一條約束進行校驗的方法流程如圖2所示, 包括以下步驟步驟161、約束類型判定單元根據(jù)約束的條件標識判斷約束類型是否為后 置校驗,如果為后置校驗,則執(zhí)行a分支;如果是前置校驗,則執(zhí)行b分支。前置沖交-驗的條件標識為precondition;后置沖交 -驗的條件標識為 postcondition,例如,前面提到的約束"T一ROUTER表最多可配置8條記錄,,根 據(jù)該約束的條件標識可以確定該約束為前置校驗。前置校驗用于與操作的記錄 內(nèi)容無關(guān)的約束校驗,比如一張表的最大記錄數(shù),在向表中增加記錄時先要校 -瞼這條約束;前面提到的約束"當(dāng)連接類型為2時,T—ROUTER表中的 abyIPAddress字段唯一"根據(jù)該約束的條件標識可以確定該約束為后置校驗。 后置校驗用于與操作的記錄內(nèi)容相關(guān)的約束校驗,比如一張記錄學(xué)生信息的表, 學(xué)號為主鍵約束,則在向表中增加記錄時就要校驗這條約束學(xué)號不能重復(fù)。步驟162a、約束校驗單元根據(jù)Buffer中調(diào)用方輸入的當(dāng)前操作記錄相關(guān)參 數(shù)將約束中SQL查詢語句部分及布爾表達式部分所有以this.開頭的字符串替換為字段值,得到一次替換結(jié)果。步驟163a、約束才交驗單元根據(jù)步驟162a中得到的一次替換結(jié)果在數(shù)據(jù)存 儲單元中進行SQL查詢,得到SQL查詢語句要返回的字段部分的變量值,并 將所得到的所有變量值保存起來。步驟164a、約束沖交驗單元用所保存的變量值來替換步驟162a中所得到的 一次替換結(jié)果中的布爾表達式部分的相應(yīng)變量,得到二次替換結(jié)果,將二次替 換結(jié)果發(fā)給布爾表達式計算單元進行分析,得到分析結(jié)果,然后執(zhí)行步驟165。步驟162b、約束校驗單元直接在數(shù)據(jù)存儲單元中進行SQL查詢,得到約 束的SQL查詢語句要返回的字段部分的變量值,并將所得到的所有變量值保存 起來,然后執(zhí)行步驟163b。步驟163b、約束校驗單元用所保存的變量值來替換約束的布爾表達式部分 的相應(yīng)變量,將替換結(jié)果發(fā)給布爾表達式計算單元進行分析,得到分析結(jié)果, 然后執(zhí)行步驟165。步驟165、布爾表達式計算單元判斷分析結(jié)果是否為正確,若分析結(jié)果為 正確,則執(zhí)行步驟166,否則執(zhí)行步驟166'。步驟166、布爾表達式計算單元返回成功消息給調(diào)用方,通知約束校驗單 元繼續(xù)用所保存的變量值進行替換,直到所有保存的所有變量值都返回成功消 息,則該條約束校驗通過,然后執(zhí)行步驟161。步驟166'、布爾表達式計算單元返回校驗失敗的錯誤碼給調(diào)用方,并通知 約束校驗單元停止工作,該約束校驗失敗,整個約束集校^r失敗。本發(fā)明具體對"當(dāng)連接類型為2時,LROUTER表中的abyIPAddress字段 唯一,,這條約束進行才交驗的方法流程如圖3所示,包括以下步驟步驟301、約束類型判定單元才艮據(jù)約束的條件標識Postcondition判斷上述 約束的約束類型為后置沖交驗。步驟302、約束校驗單元用Buffer中調(diào)用方輸入的當(dāng)前操作記錄的對應(yīng)字 段值替換check和expression中所有以this.開頭的字符串。假設(shè)當(dāng)前操作記錄的 byLinkType為2, abyIPAddress為192.118.0.9,則得到的一次替換結(jié)果為check:,,from R一ROUTER where 2 =2 and byLinkTpye=2" , expression="result
!=192 II result[l]!=118 ||腿響!=0 || resu,=9"。步驟303、約束校驗單元根據(jù)步驟310中得到的一次替換結(jié)果在數(shù)據(jù)存儲單元中進行SQL查詢,得到查詢語句要返回的字段部分,即得到abyIPAddress對應(yīng)的具體變量值,并將所得到的所有變量值保存起來。步驟304、約束校驗單元用步驟303中所保存的變量值替換步驟302中得到的一次替換結(jié)果中的expression部分的相應(yīng)變量,假設(shè)所保存的變量值為192.118.0.7,替換后為expression="192!=192|| 118!=118||0!=0||7!=9";約束校驗單元將替換后的expression傳遞給布爾表達式計算單元分析,得到分析結(jié)果。 步驟305、布爾表達式計算單元判斷分析結(jié)果為正確。 步驟306、布爾表達式計算單元返回成功消息給調(diào)用方。 本發(fā)明約束校驗庫的裝置如圖4所示,主要包括約束書寫模塊41、約束集管理模塊42、約束校驗?zāi)K43,其中,約束書寫模塊41,用于將約束寫入約束描述文件中,并保存約束描述文件; 約束集管理模塊42,用于加載約束書寫模塊41所書寫的約束描述文件; 加載約束描述文件時,約束集管理模塊按照操作對象名、操作類型、校驗類型組成的層次關(guān)系將所有約束集保存起來。接口模塊43,用于接收調(diào)用方輸入的當(dāng)前操作記錄、操作對象名、操作類型、校驗類型等操作記錄相關(guān)參數(shù),并根據(jù)所輸入的當(dāng)前操作記錄相關(guān)參數(shù)從約束集管理才莫塊中提取出與調(diào)用方輸入的當(dāng)前操作記錄對應(yīng)的約束集,并將所提取的約束集發(fā)給約束校驗?zāi)K;約束校驗?zāi)K44,用于對接口模塊43發(fā)來的約束集中的約束進行校驗。 其中,約束校驗?zāi)K44進一步包括約束類型判定單元441、約束校驗單元442、數(shù)據(jù)存儲單元443及布爾表達式計算單元444,其中,約束類型判定單元441,用于根據(jù)約束的條件標識判斷約束類型; 約束校-驗單元442,在約束類型判定單元441確定約束類型為后置校-驗后用于根據(jù)調(diào)用方輸入的當(dāng)前操作記錄相關(guān)參數(shù)將約束中SQL查詢語句部分及布爾表達式部分所有以this.開頭的字符串替換為字段值,得到一次替換結(jié)果; 根據(jù)一次替換結(jié)果執(zhí)行SQL查詢,得到查詢語句要返回的字段部分的變量值, 并將所得到的所有變量值保存起來;用所保存的變量值來替換所得到的一次替 換結(jié)果中的布爾表達式部分的相應(yīng)變量,得到二次替換結(jié)果,并將二次替換結(jié) 果發(fā)給布爾表達式計算單元444進行分析。在約束類型判定單元441確定約束類型不為后置校-瞼后,即確定約束類型 為前置校驗后還用于對所述前置校驗的約束直接進行SQL查詢,保存約束要返 回的字段部分的變量值;用所保存的變量值來替換約束的布爾表達式部分的相 應(yīng)變量,將替換結(jié)果發(fā)給布爾表達式計算單元444進行分析;數(shù)據(jù)存儲單元443,用于為約束校驗單元提供查詢語句要返回的字段部分 的變量4直;布爾表達式計算單元444,用于對約束校驗單元發(fā)來的替換結(jié)果進行分析, 若分析結(jié)果為正確,則返回成功消息給調(diào)用方,并通知約束校驗單元繼續(xù)用所 保存的剩余變量值進行替換;否則返回校驗失敗錯誤碼給調(diào)用方,并通知約束 校驗單元442停止工作。以上所述,僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。
權(quán)利要求
1. 一種約束校驗方法,其特征在于,該方法包括A、根據(jù)約束描述規(guī)則將約束寫入約束描述文件,并保存約束描述文件;B、加載約束描述文件;C、調(diào)用方輸入當(dāng)前操作記錄相關(guān)參數(shù),根據(jù)當(dāng)前操作記錄相關(guān)參數(shù)提取與當(dāng)前操作記錄對應(yīng)的約束集,對約束集中的約束進行校驗。
2、 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述約束描述規(guī)則包括四個 子表達式結(jié)構(gòu)化查詢語言SQL查詢語句、SQL查詢語句要返回的字段、約束 校驗的布爾表達式及約束校驗失敗時返回的錯誤碼。
3、 根據(jù)權(quán)利要求1所述的方法,其特征還在于,步驟B中加載約束描述 文件時按照操作對象名、操作類型、校驗類型組成的層次關(guān)系將所有約束集保 存起來。
4、 根據(jù)權(quán)利要求1所述的方法,其特征還在于,所述當(dāng)前操作記錄相關(guān)參 數(shù)包括當(dāng)前操作記錄、操作對象名、操作類型及校驗類型。
5、 根據(jù)權(quán)利要求4所述的方法,其特征在于,步驟C中所述對約束集中 的約束進行校驗為Cl、根據(jù)約束的條件標識判斷約束類型是否為后置校驗,如果為后置校驗, 則執(zhí)行步驟C2;否則不進行任何操作;C2、根據(jù)調(diào)用方輸入的當(dāng)前操作記錄相關(guān)參數(shù)將約束中SQL查詢語句部分 及布爾表達式部分所有以this.開頭的字符串替換為字段值,得到一次替換結(jié)果;C3、執(zhí)行SQL查詢,得到查詢語句要返回的字段部分的變量值并保存;C4、用保存的變量值來替換一次替換結(jié)果中的布爾表達式部分的相應(yīng)變 量,得到二次替換結(jié)果,對二次替換結(jié)果進行布爾表達式分析,若分析結(jié)果為 正確,則返回成功消息給調(diào)用方,繼續(xù)用所保存的變量值進行替換和分析,直 到所有保存的變量值都返回成功消息,則該條約束校驗通過;否則,返回校驗 失敗錯誤碼給調(diào)用方,停止校驗。
6、 根據(jù)權(quán)利要求5所述的方法,其特征在于,根據(jù)約束的條件標識判斷約 束類型不為后置校驗后,該方法進一步包括進行SQL查詢,得到約束的SQL 查詢語句要返回的字段部分的變量值并保存,用所保存的變量值來替換約束的 布爾表達式部分的相應(yīng)變量,得到替換結(jié)果,對替換結(jié)果進行布爾表達式分析, 若分析結(jié)果為正確,則返回成功消息給調(diào)用方,繼續(xù)用所保存的變量值進行替 換和分析,直到所有保存的變量值都返回成功消息,則該條約束校驗通過;否 則,返回校驗失敗錯誤碼給調(diào)用方,停止校驗。
7、 一種約束校驗裝置,其特征在于,該裝置包括,約束書寫^^莫塊、約束集 管理模塊、接口模塊及約束校驗?zāi)K,其中,約束書寫才莫塊,用于才艮據(jù)約束描述規(guī)則將約束寫入約束描述文件,并保存 約束描述文件;約束集管理模塊,用于加載約束書寫模塊所書寫的約束描述文件; 接口模塊,用于接收調(diào)用方輸入的當(dāng)前操作記錄相關(guān)參數(shù),并根據(jù)所輸入 的當(dāng)前操作記錄相關(guān)參數(shù)從約束集管理模塊中提取出與調(diào)用方輸入的當(dāng)前操作 記錄對應(yīng)的約束集,并將所提取的約束集發(fā)給約束校驗?zāi)K;約束校驗才莫塊,用于對約束集管理模塊發(fā)來的約束集中的約束進行校驗。
8、 根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述約束描述規(guī)則包括四個 子表達式SQL查詢語句,SQL查詢語句要返回的字段、約束校驗的布爾表 達式及約束校驗失敗時返回的錯誤碼。
9、 根據(jù)權(quán)利要求8所述的方法,其特征還在于,所述約束集管理模塊加載 約束描述文件時按照操作對象名、操作類型、校驗類型組成的層次關(guān)系將所有 約束集保存起來。
10、 根據(jù)權(quán)利要求9所述的方法,其特征還在于,所述當(dāng)前操作記錄相關(guān) 參數(shù)包括當(dāng)前操作記錄、操作對象名、操作類型及校-驗類型。
11、 根據(jù)權(quán)利要求IO所述的裝置,其特征在于,所述約束校驗?zāi)K進一步 包括約束類型判定單元、約束校驗單元、數(shù)據(jù)存儲單元及布爾表達式計算單 元,其中,約束類型判定單元,用于根據(jù)約束的條件標識判斷約束類型; 約束校驗單元,在約束類型判定單元確定約束類型為后置校驗后用于根據(jù) 調(diào)用方輸入的當(dāng)前操作記錄相關(guān)參數(shù)將約束中SQL查詢語句部分及布爾表達 式部分所有以this.開頭的字符串替換為字段值,得到一次替換結(jié)果;根據(jù)一次 替換結(jié)果進行SQL查詢,得到查詢語句要返回的字段部分的變量值并保存;用 所保存的變量值來替換一次替換結(jié)果中布爾表達式部分的相應(yīng)變量,得到二次 替換結(jié)果,并將二次替換結(jié)果發(fā)給布爾表達式計算單元進行分析;數(shù)據(jù)存儲單元,用于為約束校驗單元提供查詢語句要返回的字段部分的變 量值;布爾表達式計算單元,用于對約束校驗單元發(fā)來的替換結(jié)果進行分析,若 分析結(jié)果為正確,則返回成功消息給調(diào)用方,并通知約束校驗單元繼續(xù)用所保 存的剩余變量值進行替換和分析;否則返回校驗失敗^"誤碼給調(diào)用方,并通知 約束校驗單元停止工作。
12、根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述約束校驗單元進一步 用于對約束類型判定單元所確定的4交驗類型為前置沖L驗的約束在凄t據(jù)存儲單元 中進行SQL查詢,得到約束的SQL查詢語句要返回字段部分的變量值并保存, 用所保存的變量值來替換約束的布爾表達式部分的相應(yīng)變量,將替換結(jié)果發(fā)給 布爾表達式計算單元進行分析。
全文摘要
本發(fā)明公開了一種約束校驗的方法,該方法包括根據(jù)約束描述規(guī)則將約束寫入約束描述文件中,并將約束描述文件保存下來;加載約束描述文件;調(diào)用方輸入當(dāng)前操作記錄相關(guān)參數(shù),根據(jù)當(dāng)前操作記錄相關(guān)參數(shù)提取要校驗的約束集,對約束集中的所有約束進行校驗。本發(fā)明同時公開了一種約束校驗裝置,該裝置包括約束書寫模塊、約束集管理模塊、接口模塊及約束校驗?zāi)K。利用本發(fā)明,能夠?qū)崿F(xiàn)約束的配制化管理,且縮小了代碼規(guī)模,易于維護和擴展,具有較強的復(fù)用性。
文檔編號H04L12/24GK101272222SQ20081009613
公開日2008年9月24日 申請日期2008年5月6日 優(yōu)先權(quán)日2008年5月6日
發(fā)明者侯本博, 濤 田 申請人:中興通訊股份有限公司