国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種約束校驗(yàn)方法及裝置的制作方法

      文檔序號(hào):7692010閱讀:107來源:國(guó)知局
      專利名稱:一種約束校驗(yàn)方法及裝置的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及約束校驗(yàn)技術(shù),尤其是指一種約束校驗(yàn)方法及裝置。
      技術(shù)背景在通信領(lǐng)域,網(wǎng)元的配置管理是通過網(wǎng)管實(shí)現(xiàn)的,而在網(wǎng)管側(cè)進(jìn)行各種配 置操作時(shí),必須保證配置數(shù)據(jù)的合法性,因此需要對(duì)配置數(shù)據(jù)進(jìn)行約束校驗(yàn)以 保證其合法性。比如移動(dòng)通信網(wǎng)絡(luò)中對(duì)于基站的配置管理,其中涉及的約束繁 多,目前比較普遍的做法是針對(duì)每條約束編寫單獨(dú)的沖交-瞼代碼,而這些代碼在程序流程上有;f艮大的相似性,其中主要涉及數(shù)據(jù)庫(kù)查詢和對(duì)查詢結(jié)果的約束校 驗(yàn),但因沒有進(jìn)行統(tǒng)一的封裝處理導(dǎo)致代碼規(guī)模龐大,不宜維護(hù)和擴(kuò)展,也不 具有復(fù)用性;而基于結(jié)構(gòu)化查詢語言(OCL, Object Constraint Language )的方 法,雖然將約束表達(dá)在OCL文件中,不需要重復(fù)編碼,但每次更改都要重新編 譯代碼,并且需要深入學(xué)習(xí)OCL語法,這也為這種方法的實(shí)施應(yīng)用帶來了障礙。發(fā)明內(nèi)容有鑒于此,本發(fā)明的主要目的在于提供一種約束校驗(yàn)方法及裝置,利用本 發(fā)明,能夠?qū)崿F(xiàn)約束的配制化管理,且縮小了代碼規(guī)模,易于維護(hù)和擴(kuò)展,具 有較強(qiáng)的復(fù)用性。為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的一種約束校驗(yàn)方法,該方法包括A、 根據(jù)約束描述MJ'J將約束寫入約束描述文件,并保存約束描述文件;B、 加載約束描述文件;C、 調(diào)用方輸入當(dāng)前操作記錄相關(guān)參數(shù),根據(jù)當(dāng)前操作記錄相關(guān)參數(shù)提取 與當(dāng)前操作記錄對(duì)應(yīng)的約束集,對(duì)約束集中的約束進(jìn)行校驗(yàn)。其中,所述約束描述規(guī)則包括四個(gè)子表達(dá)式結(jié)構(gòu)化查詢語言SQL查詢語 句、SQL查詢語句要返回的字段、約束校驗(yàn)的布爾表達(dá)式及約束校驗(yàn)失敗時(shí)返 回的錯(cuò)誤碼。進(jìn)一步地,步驟B中加載約束描述文件時(shí)按照操作對(duì)象名、操作類型、校 驗(yàn)類型組成的層次關(guān)系將所有約束集保存起來。進(jìn)一步地,所述當(dāng)前操作記錄相關(guān)參數(shù)包括當(dāng)前操作記錄、操作對(duì)象名、 操作類型及校驗(yàn)類型。較佳地,步驟C中所述對(duì)約束集中的約束進(jìn)行校驗(yàn)為Cl、根據(jù)約束的條件標(biāo)識(shí)判斷約束類型是否為后置校驗(yàn),如果為后置校驗(yàn), 則執(zhí)行步驟C2;否則不進(jìn)行任何操作;C2、根據(jù)調(diào)用方輸入的當(dāng)前操作記錄相關(guān)參數(shù)將約束中SQL查詢語句部分 及布爾表達(dá)式部分所有以this.開頭的字符串替換為字段值,得到一次替換結(jié)果;C3、執(zhí)行SQL查詢,得到查詢語句要返回的字段部分的變量值并保存;C4、用保存的變量值來替換一次替換結(jié)果中的布爾表達(dá)式部分的相應(yīng)變 量,得到二次替換結(jié)果,對(duì)二次替換結(jié)果進(jìn)行布爾表達(dá)式分析,若分析結(jié)果為 正確,則返回成功消息給調(diào)用方,繼續(xù)用所保存的變量值進(jìn)行替換和分析,直 到所有保存的變量值都返回成功消息,則該條約束校驗(yàn)通過;否則,返回校驗(yàn) 失敗錯(cuò)誤碼給調(diào)用方,停止校驗(yàn)。較佳地,根據(jù)約束的條件標(biāo)識(shí)判斷約束類型不為后置校驗(yàn)后,該方法進(jìn)一 步包括進(jìn)行SQL查詢,得到約束的SQL查詢語句要返回的字段部分的變量 值并保存,用所保存的變量值來替換約束的布爾表達(dá)式部分的相應(yīng)變量,得到 替換結(jié)果,對(duì)替換結(jié)果進(jìn)行布爾表達(dá)式分析,若分析結(jié)果為正確,則返回成功 消息給調(diào)用方,繼續(xù)用所保存的變量值進(jìn)行替換和分析,直到所有保存的變量 值都返回成功消息,則該條約束校驗(yàn)通過;否則,返回校驗(yàn)失敗錯(cuò)誤碼給調(diào)用 方,停止校驗(yàn)。一種約束校驗(yàn)裝置,該裝置包括,約束書寫模塊、約束集管理模塊、接口 模塊及約束校驗(yàn)?zāi)K,其中,約束書寫模塊,用于根據(jù)約束描述規(guī)則將約束寫入約束描述文件,并保存約束描述文件;約束集管理^f莫塊,用于加載約束書寫模塊所書寫的約束描迷文件;接口模塊,用于接收調(diào)用方輸入的當(dāng)前操作記錄相關(guān)參數(shù),并根據(jù)所輸入 的當(dāng)前操作記錄相關(guān)參數(shù)從約束集管理模塊中提取出與調(diào)用方輸入的當(dāng)前操作記錄對(duì)應(yīng)的約束集,并將所提取的約束集發(fā)給約束校驗(yàn)?zāi)K;約束校驗(yàn)?zāi)K,用于對(duì)約束集管理模塊發(fā)來的約束集中的約束進(jìn)行校驗(yàn)。 其中,所述約束描述規(guī)則包括四個(gè)子表達(dá)式SQL查詢語句,SQL查詢語句要返回的字段、約束校驗(yàn)的布爾表達(dá)式及約束校驗(yàn)失敗時(shí)返回的錯(cuò)誤碼。 進(jìn)一步地,所述約束集管理模塊加載約束描述文件時(shí)按照操作對(duì)象名、操作類型、校驗(yàn)類型組成的層次關(guān)系將所有約束集保存起來。進(jìn)一步地,所述當(dāng)前操作記錄相關(guān)參數(shù)包括當(dāng)前操作記錄、操作對(duì)象名、 操作類型及+之一險(xiǎn)類型。較佳地,所述約束才交驗(yàn)才莫塊進(jìn)一步包括約束類型判定單元、約束校驗(yàn)單 元、數(shù)據(jù)存儲(chǔ)單元及布爾表達(dá)式計(jì)算單元,其中,約束類型判定單元,用于才艮據(jù)約束的條件標(biāo)識(shí)判斷約束類型;約束校驗(yàn)單元,在約束類型判定單元確定約束類型為后置校驗(yàn)后用于根據(jù) 調(diào)用方輸入的當(dāng)前操作記錄相關(guān)參數(shù)將約束中SQL查詢語句部分及布爾表達(dá) 式部分所有以this.開頭的字符串替換為字段值,得到一次替換結(jié)果;根據(jù)一次 替換結(jié)果進(jìn)行SQL查詢,得到查詢語句要返回的字段部分的變量值并保存;用 所保存的變量值來替換一次替換結(jié)果中布爾表達(dá)式部分的相應(yīng)變量,得到二次 替換結(jié)果,并將二次替換結(jié)果發(fā)給布爾表達(dá)式計(jì)算單元進(jìn)行分析;數(shù)據(jù)存儲(chǔ)單元,用于為約束校驗(yàn)單元提供查詢語句要返回的字段部分的變量值;布爾表達(dá)式計(jì)算單元,用于對(duì)約束校驗(yàn)單元發(fā)來的替換結(jié)果進(jìn)行分析,若 分析結(jié)果為正確,則返回成功消息給調(diào)用方,并通知約束校驗(yàn)單元繼續(xù)用所保 存的剩余變量值進(jìn)行替換和分析;否則返回校驗(yàn)失敗錯(cuò)誤碼給調(diào)用方,并通知約束校驗(yàn)單元停止工作。較佳地,所述約束^交驗(yàn)單元進(jìn)一步用于對(duì)約束類型判定單元所確定的校驗(yàn)類型為前置校驗(yàn)的約束在數(shù)據(jù)存儲(chǔ)單元中進(jìn)行SQL查詢,得到約束的SQL查 詢語句要返回字段部分的變量值并保存,用所保存的變量值來替換約束的布爾 表達(dá)式部分的相應(yīng)變量,將替換結(jié)果發(fā)給布爾表達(dá)式計(jì)算單元進(jìn)行分析。本發(fā)明的約束校驗(yàn)方法及裝置,首先設(shè)計(jì)約束描述規(guī)則,按照約束描述規(guī) 則來書寫約束,并將約束以約束描述文件的形式保存起來,在調(diào)用方輸入當(dāng)前 操作記錄之前加載約束描述文件,輸入當(dāng)前操作記錄之后,根據(jù)輸入的操作對(duì) 象名、操作類型、校驗(yàn)類型提取出與其對(duì)應(yīng)的約束集,對(duì)約束集中的所有約束 進(jìn)行校驗(yàn),若所有約束都通過,則對(duì)當(dāng)前操作記錄的約束校驗(yàn)通過,配置數(shù)據(jù) 給當(dāng)前操作記錄的調(diào)用方; 一旦有一條約束校l^失敗,則對(duì)當(dāng)前操作記錄的校 驗(yàn)失敗。由此可見,本發(fā)明由于約束描述規(guī)則的設(shè)計(jì),使得無論增加和修改約 束,或?qū)s束進(jìn)行校驗(yàn)都按照該約束描述規(guī)則來進(jìn)行,約束校驗(yàn)中的代碼一旦 完成就無需修改,增加和修改約束只需要修改約束描述文件即可,而且約束描 述簡(jiǎn)單易用,而且前后臺(tái)可以重用同一套代碼,由此可以實(shí)現(xiàn)約束的配置化管 理,同傳統(tǒng)的約束校驗(yàn)方法相比縮小了代碼規(guī)模,同時(shí)易于維護(hù)和擴(kuò)展,具有 較強(qiáng)的復(fù)用性。


      圖1為本發(fā)明約束校驗(yàn)的方法流程示意圖;圖2為本發(fā)明對(duì)約束集中的任意一條約束進(jìn)行校驗(yàn)的方法流程示意圖; 圖3為對(duì)具體的約束進(jìn)行校驗(yàn)的方法流程示意圖; 圖4為本發(fā)明約束校驗(yàn)裝置結(jié)構(gòu)示意圖。
      具體實(shí)施方式
      下面結(jié)合附圖來對(duì)本發(fā)明的具體實(shí)施作進(jìn)一步詳細(xì)的說明。 本發(fā)明約束校驗(yàn)方法如圖1所示,包括以下步驟步驟ll、設(shè)計(jì)約束描述規(guī)則。這里,約束描述規(guī)則一般由四個(gè)子表達(dá)式構(gòu)成,第一個(gè)表達(dá)式表示結(jié)構(gòu)化查詢語言(SQL, Structured Query Language )查詢語句,第二個(gè)表達(dá)式表示SQL 查詢語句要返回的字段,第三個(gè)表達(dá)式表示約束校驗(yàn)的布爾表達(dá)式,第四個(gè)表 達(dá)式表示約束校驗(yàn)失敗時(shí)返回的錯(cuò)誤碼。例如,約束規(guī)則可以由check=,,,,、 result=,,,,、 expression=,,,,、 errcode—,,,四 個(gè)表達(dá)式組成,其中,Check表示SQL查詢語句,執(zhí)行查詢時(shí)在表達(dá)式前面加上"select *,,,如果 此項(xiàng)為空則直接計(jì)算expression,用于支持配置數(shù)據(jù)大小范圍的檢查;result表示SQL查詢語句要返回的字段,在該表達(dá)式中變量num表示查詢 得到的記錄數(shù),其它在該表達(dá)式中出現(xiàn)的變量名均為要查詢表的字段名稱;expression表示約束校驗(yàn)的布爾表達(dá)式,該項(xiàng)要用到result項(xiàng)中的變量值;errcode表示約束校驗(yàn)失敗時(shí)返回的錯(cuò)誤碼;步驟12、按照約束描述規(guī)則將不同的約束按照操作對(duì)象名、操作類型、校 驗(yàn)類型組成的層次關(guān)系寫入約束描述文件,并保存約束描述文件。在這里,在約束描述文件中書寫不同的約束時(shí)要嚴(yán)格遵守約束描述規(guī)則, 約束描述文件在約束才L瞼庫(kù)中的存儲(chǔ)格式可以為txt、 ini、 xml等文件形式,以 xml文件才各式為例來"i兌明約束例如,將"T!ROUTER表最多可配置8條記錄"這條約束按照由check=""、 result=,,,,、 expression-"", errcode-,,,,四個(gè)表達(dá)式組成約束描述規(guī)則以xml約束 描述文件的形式寫在約束校驗(yàn)庫(kù)中為〈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表中增加記錄時(shí)就要校驗(yàn)這條約束, 如果此時(shí)已有8條記錄,則返回錯(cuò)誤碼為100的提示信息。又如,將"當(dāng)連接類型為2時(shí),T^ROUTER表中的abyIPAddress字段唯一" 這條約束按照由check=,,,,、 result=,,,,、 expression=,,,,、 errcode—,,,四個(gè)表達(dá)式組 成約束描述規(guī)則以xml約束描述文件的形式寫在約束才交驗(yàn)庫(kù)中為 <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表中增加記錄時(shí)就要校驗(yàn)這條約束, 如果連接類型為2且當(dāng)前要加入的記錄的IP地址與數(shù)據(jù)存儲(chǔ)單元中已有記錄的 該字段值相同,則返回錯(cuò)誤碼為101的提示信息。由以上兩個(gè)約束可知,expression中的變量名都含有"result",如果約束描 述文件中result屬性中含有多個(gè)變量,如result-,,byLinkType,abyIPAddress",則 expreesion中以result. 1、 result. 2分另"表示byLinkType、 abyIPAddress。步驟13、約束集管理模塊加載約束描述文件。因?yàn)樵趫?zhí)行某個(gè)操作記錄時(shí)所涉及的約束由很多,執(zhí)行某個(gè)操作記錄時(shí)所 涉及的所有約束構(gòu)成約束集。加載約束描迷文件時(shí)由約束集管理模塊按照操作 對(duì)象名、操作類型、校驗(yàn)類型組成的層次關(guān)系將所有約束集保存起來。步驟14、調(diào)用方向接口模塊中輸入當(dāng)前操作記錄、操作對(duì)象名、操作類型、校驗(yàn)類型等當(dāng)前操作記錄相關(guān)參數(shù)。步驟15、接口模塊根據(jù)輸入的操作記錄相關(guān)參數(shù)從約束集管理模塊中提取 出與調(diào)用方輸入的當(dāng)前凈喿作記錄對(duì)應(yīng)的約束集,并將所提取的約束集發(fā)給約束 校驗(yàn)?zāi)K。這里,接口模塊對(duì)外提供Check接口供開發(fā)者調(diào)用,Check接口的具體格 式如下Check ( ObjName, OpType, CondType, Buffer),其中ObjName為操作 的對(duì)象名;OpType為操作類型,包括增加,刪除,修改;CondType為校驗(yàn)類 型,包括前置校驗(yàn)和后置校驗(yàn);Buffer代表當(dāng)前操作記錄所在的緩沖區(qū)。步驟16、約束校驗(yàn)?zāi)K對(duì)所得到的約束集中所有的約束進(jìn)行校驗(yàn),若所有 的約束都通過,則返回成功消息給調(diào)用方,配置數(shù)據(jù)到網(wǎng)元;否則,返回約束 校驗(yàn)失敗的錯(cuò)誤碼及與該錯(cuò)誤碼對(duì)應(yīng)的提示信息給調(diào)用方,并停止對(duì)約束集中 剩余約束的校驗(yàn)。這里,具體對(duì)約束集中的任意一條約束進(jìn)行校驗(yàn)的方法流程如圖2所示, 包括以下步驟步驟161、約束類型判定單元根據(jù)約束的條件標(biāo)識(shí)判斷約束類型是否為后 置校驗(yàn),如果為后置校驗(yàn),則執(zhí)行a分支;如果是前置校驗(yàn),則執(zhí)行b分支。前置沖交-驗(yàn)的條件標(biāo)識(shí)為precondition;后置沖交 -驗(yàn)的條件標(biāo)識(shí)為 postcondition,例如,前面提到的約束"T一ROUTER表最多可配置8條記錄,,根 據(jù)該約束的條件標(biāo)識(shí)可以確定該約束為前置校驗(yàn)。前置校驗(yàn)用于與操作的記錄 內(nèi)容無關(guān)的約束校驗(yàn),比如一張表的最大記錄數(shù),在向表中增加記錄時(shí)先要校 -瞼這條約束;前面提到的約束"當(dāng)連接類型為2時(shí),T—ROUTER表中的 abyIPAddress字段唯一"根據(jù)該約束的條件標(biāo)識(shí)可以確定該約束為后置校驗(yàn)。 后置校驗(yàn)用于與操作的記錄內(nèi)容相關(guān)的約束校驗(yàn),比如一張記錄學(xué)生信息的表, 學(xué)號(hào)為主鍵約束,則在向表中增加記錄時(shí)就要校驗(yàn)這條約束學(xué)號(hào)不能重復(fù)。步驟162a、約束校驗(yàn)單元根據(jù)Buffer中調(diào)用方輸入的當(dāng)前操作記錄相關(guān)參 數(shù)將約束中SQL查詢語句部分及布爾表達(dá)式部分所有以this.開頭的字符串替換為字段值,得到一次替換結(jié)果。步驟163a、約束才交驗(yàn)單元根據(jù)步驟162a中得到的一次替換結(jié)果在數(shù)據(jù)存 儲(chǔ)單元中進(jìn)行SQL查詢,得到SQL查詢語句要返回的字段部分的變量值,并 將所得到的所有變量值保存起來。步驟164a、約束沖交驗(yàn)單元用所保存的變量值來替換步驟162a中所得到的 一次替換結(jié)果中的布爾表達(dá)式部分的相應(yīng)變量,得到二次替換結(jié)果,將二次替 換結(jié)果發(fā)給布爾表達(dá)式計(jì)算單元進(jìn)行分析,得到分析結(jié)果,然后執(zhí)行步驟165。步驟162b、約束校驗(yàn)單元直接在數(shù)據(jù)存儲(chǔ)單元中進(jìn)行SQL查詢,得到約 束的SQL查詢語句要返回的字段部分的變量值,并將所得到的所有變量值保存 起來,然后執(zhí)行步驟163b。步驟163b、約束校驗(yàn)單元用所保存的變量值來替換約束的布爾表達(dá)式部分 的相應(yīng)變量,將替換結(jié)果發(fā)給布爾表達(dá)式計(jì)算單元進(jìn)行分析,得到分析結(jié)果, 然后執(zhí)行步驟165。步驟165、布爾表達(dá)式計(jì)算單元判斷分析結(jié)果是否為正確,若分析結(jié)果為 正確,則執(zhí)行步驟166,否則執(zhí)行步驟166'。步驟166、布爾表達(dá)式計(jì)算單元返回成功消息給調(diào)用方,通知約束校驗(yàn)單 元繼續(xù)用所保存的變量值進(jìn)行替換,直到所有保存的所有變量值都返回成功消 息,則該條約束校驗(yàn)通過,然后執(zhí)行步驟161。步驟166'、布爾表達(dá)式計(jì)算單元返回校驗(yàn)失敗的錯(cuò)誤碼給調(diào)用方,并通知 約束校驗(yàn)單元停止工作,該約束校驗(yàn)失敗,整個(gè)約束集校^r失敗。本發(fā)明具體對(duì)"當(dāng)連接類型為2時(shí),LROUTER表中的abyIPAddress字段 唯一,,這條約束進(jìn)行才交驗(yàn)的方法流程如圖3所示,包括以下步驟步驟301、約束類型判定單元才艮據(jù)約束的條件標(biāo)識(shí)Postcondition判斷上述 約束的約束類型為后置沖交驗(yàn)。步驟302、約束校驗(yàn)單元用Buffer中調(diào)用方輸入的當(dāng)前操作記錄的對(duì)應(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、約束校驗(yàn)單元根據(jù)步驟310中得到的一次替換結(jié)果在數(shù)據(jù)存儲(chǔ)單元中進(jìn)行SQL查詢,得到查詢語句要返回的字段部分,即得到abyIPAddress對(duì)應(yīng)的具體變量值,并將所得到的所有變量值保存起來。步驟304、約束校驗(yàn)單元用步驟303中所保存的變量值替換步驟302中得到的一次替換結(jié)果中的expression部分的相應(yīng)變量,假設(shè)所保存的變量值為192.118.0.7,替換后為expression="192!=192|| 118!=118||0!=0||7!=9";約束校驗(yàn)單元將替換后的expression傳遞給布爾表達(dá)式計(jì)算單元分析,得到分析結(jié)果。 步驟305、布爾表達(dá)式計(jì)算單元判斷分析結(jié)果為正確。 步驟306、布爾表達(dá)式計(jì)算單元返回成功消息給調(diào)用方。 本發(fā)明約束校驗(yàn)庫(kù)的裝置如圖4所示,主要包括約束書寫模塊41、約束集管理模塊42、約束校驗(yàn)?zāi)K43,其中,約束書寫模塊41,用于將約束寫入約束描述文件中,并保存約束描述文件; 約束集管理模塊42,用于加載約束書寫模塊41所書寫的約束描述文件; 加載約束描述文件時(shí),約束集管理模塊按照操作對(duì)象名、操作類型、校驗(yàn)類型組成的層次關(guān)系將所有約束集保存起來。接口模塊43,用于接收調(diào)用方輸入的當(dāng)前操作記錄、操作對(duì)象名、操作類型、校驗(yàn)類型等操作記錄相關(guān)參數(shù),并根據(jù)所輸入的當(dāng)前操作記錄相關(guān)參數(shù)從約束集管理才莫塊中提取出與調(diào)用方輸入的當(dāng)前操作記錄對(duì)應(yīng)的約束集,并將所提取的約束集發(fā)給約束校驗(yàn)?zāi)K;約束校驗(yàn)?zāi)K44,用于對(duì)接口模塊43發(fā)來的約束集中的約束進(jìn)行校驗(yàn)。 其中,約束校驗(yàn)?zāi)K44進(jìn)一步包括約束類型判定單元441、約束校驗(yàn)單元442、數(shù)據(jù)存儲(chǔ)單元443及布爾表達(dá)式計(jì)算單元444,其中,約束類型判定單元441,用于根據(jù)約束的條件標(biāo)識(shí)判斷約束類型; 約束校-驗(yàn)單元442,在約束類型判定單元441確定約束類型為后置校-驗(yàn)后用于根據(jù)調(diào)用方輸入的當(dāng)前操作記錄相關(guān)參數(shù)將約束中SQL查詢語句部分及布爾表達(dá)式部分所有以this.開頭的字符串替換為字段值,得到一次替換結(jié)果; 根據(jù)一次替換結(jié)果執(zhí)行SQL查詢,得到查詢語句要返回的字段部分的變量值, 并將所得到的所有變量值保存起來;用所保存的變量值來替換所得到的一次替 換結(jié)果中的布爾表達(dá)式部分的相應(yīng)變量,得到二次替換結(jié)果,并將二次替換結(jié) 果發(fā)給布爾表達(dá)式計(jì)算單元444進(jìn)行分析。在約束類型判定單元441確定約束類型不為后置校-瞼后,即確定約束類型 為前置校驗(yàn)后還用于對(duì)所述前置校驗(yàn)的約束直接進(jìn)行SQL查詢,保存約束要返 回的字段部分的變量值;用所保存的變量值來替換約束的布爾表達(dá)式部分的相 應(yīng)變量,將替換結(jié)果發(fā)給布爾表達(dá)式計(jì)算單元444進(jìn)行分析;數(shù)據(jù)存儲(chǔ)單元443,用于為約束校驗(yàn)單元提供查詢語句要返回的字段部分 的變量4直;布爾表達(dá)式計(jì)算單元444,用于對(duì)約束校驗(yàn)單元發(fā)來的替換結(jié)果進(jìn)行分析, 若分析結(jié)果為正確,則返回成功消息給調(diào)用方,并通知約束校驗(yàn)單元繼續(xù)用所 保存的剩余變量值進(jìn)行替換;否則返回校驗(yàn)失敗錯(cuò)誤碼給調(diào)用方,并通知約束 校驗(yàn)單元442停止工作。以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。
      權(quán)利要求
      1. 一種約束校驗(yàn)方法,其特征在于,該方法包括A、根據(jù)約束描述規(guī)則將約束寫入約束描述文件,并保存約束描述文件;B、加載約束描述文件;C、調(diào)用方輸入當(dāng)前操作記錄相關(guān)參數(shù),根據(jù)當(dāng)前操作記錄相關(guān)參數(shù)提取與當(dāng)前操作記錄對(duì)應(yīng)的約束集,對(duì)約束集中的約束進(jìn)行校驗(yàn)。
      2、 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述約束描述規(guī)則包括四個(gè) 子表達(dá)式結(jié)構(gòu)化查詢語言SQL查詢語句、SQL查詢語句要返回的字段、約束 校驗(yàn)的布爾表達(dá)式及約束校驗(yàn)失敗時(shí)返回的錯(cuò)誤碼。
      3、 根據(jù)權(quán)利要求1所述的方法,其特征還在于,步驟B中加載約束描述 文件時(shí)按照操作對(duì)象名、操作類型、校驗(yàn)類型組成的層次關(guān)系將所有約束集保 存起來。
      4、 根據(jù)權(quán)利要求1所述的方法,其特征還在于,所述當(dāng)前操作記錄相關(guān)參 數(shù)包括當(dāng)前操作記錄、操作對(duì)象名、操作類型及校驗(yàn)類型。
      5、 根據(jù)權(quán)利要求4所述的方法,其特征在于,步驟C中所述對(duì)約束集中 的約束進(jìn)行校驗(yàn)為Cl、根據(jù)約束的條件標(biāo)識(shí)判斷約束類型是否為后置校驗(yàn),如果為后置校驗(yàn), 則執(zhí)行步驟C2;否則不進(jìn)行任何操作;C2、根據(jù)調(diào)用方輸入的當(dāng)前操作記錄相關(guān)參數(shù)將約束中SQL查詢語句部分 及布爾表達(dá)式部分所有以this.開頭的字符串替換為字段值,得到一次替換結(jié)果;C3、執(zhí)行SQL查詢,得到查詢語句要返回的字段部分的變量值并保存;C4、用保存的變量值來替換一次替換結(jié)果中的布爾表達(dá)式部分的相應(yīng)變 量,得到二次替換結(jié)果,對(duì)二次替換結(jié)果進(jìn)行布爾表達(dá)式分析,若分析結(jié)果為 正確,則返回成功消息給調(diào)用方,繼續(xù)用所保存的變量值進(jìn)行替換和分析,直 到所有保存的變量值都返回成功消息,則該條約束校驗(yàn)通過;否則,返回校驗(yàn) 失敗錯(cuò)誤碼給調(diào)用方,停止校驗(yàn)。
      6、 根據(jù)權(quán)利要求5所述的方法,其特征在于,根據(jù)約束的條件標(biāo)識(shí)判斷約 束類型不為后置校驗(yàn)后,該方法進(jìn)一步包括進(jìn)行SQL查詢,得到約束的SQL 查詢語句要返回的字段部分的變量值并保存,用所保存的變量值來替換約束的 布爾表達(dá)式部分的相應(yīng)變量,得到替換結(jié)果,對(duì)替換結(jié)果進(jìn)行布爾表達(dá)式分析, 若分析結(jié)果為正確,則返回成功消息給調(diào)用方,繼續(xù)用所保存的變量值進(jìn)行替 換和分析,直到所有保存的變量值都返回成功消息,則該條約束校驗(yàn)通過;否 則,返回校驗(yàn)失敗錯(cuò)誤碼給調(diào)用方,停止校驗(yàn)。
      7、 一種約束校驗(yàn)裝置,其特征在于,該裝置包括,約束書寫^^莫塊、約束集 管理模塊、接口模塊及約束校驗(yàn)?zāi)K,其中,約束書寫才莫塊,用于才艮據(jù)約束描述規(guī)則將約束寫入約束描述文件,并保存 約束描述文件;約束集管理模塊,用于加載約束書寫模塊所書寫的約束描述文件; 接口模塊,用于接收調(diào)用方輸入的當(dāng)前操作記錄相關(guān)參數(shù),并根據(jù)所輸入 的當(dāng)前操作記錄相關(guān)參數(shù)從約束集管理模塊中提取出與調(diào)用方輸入的當(dāng)前操作 記錄對(duì)應(yīng)的約束集,并將所提取的約束集發(fā)給約束校驗(yàn)?zāi)K;約束校驗(yàn)才莫塊,用于對(duì)約束集管理模塊發(fā)來的約束集中的約束進(jìn)行校驗(yàn)。
      8、 根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述約束描述規(guī)則包括四個(gè) 子表達(dá)式SQL查詢語句,SQL查詢語句要返回的字段、約束校驗(yàn)的布爾表 達(dá)式及約束校驗(yàn)失敗時(shí)返回的錯(cuò)誤碼。
      9、 根據(jù)權(quán)利要求8所述的方法,其特征還在于,所述約束集管理模塊加載 約束描述文件時(shí)按照操作對(duì)象名、操作類型、校驗(yàn)類型組成的層次關(guān)系將所有 約束集保存起來。
      10、 根據(jù)權(quán)利要求9所述的方法,其特征還在于,所述當(dāng)前操作記錄相關(guān) 參數(shù)包括當(dāng)前操作記錄、操作對(duì)象名、操作類型及校-驗(yàn)類型。
      11、 根據(jù)權(quán)利要求IO所述的裝置,其特征在于,所述約束校驗(yàn)?zāi)K進(jìn)一步 包括約束類型判定單元、約束校驗(yàn)單元、數(shù)據(jù)存儲(chǔ)單元及布爾表達(dá)式計(jì)算單 元,其中,約束類型判定單元,用于根據(jù)約束的條件標(biāo)識(shí)判斷約束類型; 約束校驗(yàn)單元,在約束類型判定單元確定約束類型為后置校驗(yàn)后用于根據(jù) 調(diào)用方輸入的當(dāng)前操作記錄相關(guān)參數(shù)將約束中SQL查詢語句部分及布爾表達(dá) 式部分所有以this.開頭的字符串替換為字段值,得到一次替換結(jié)果;根據(jù)一次 替換結(jié)果進(jìn)行SQL查詢,得到查詢語句要返回的字段部分的變量值并保存;用 所保存的變量值來替換一次替換結(jié)果中布爾表達(dá)式部分的相應(yīng)變量,得到二次 替換結(jié)果,并將二次替換結(jié)果發(fā)給布爾表達(dá)式計(jì)算單元進(jìn)行分析;數(shù)據(jù)存儲(chǔ)單元,用于為約束校驗(yàn)單元提供查詢語句要返回的字段部分的變 量值;布爾表達(dá)式計(jì)算單元,用于對(duì)約束校驗(yàn)單元發(fā)來的替換結(jié)果進(jìn)行分析,若 分析結(jié)果為正確,則返回成功消息給調(diào)用方,并通知約束校驗(yàn)單元繼續(xù)用所保 存的剩余變量值進(jìn)行替換和分析;否則返回校驗(yàn)失敗^"誤碼給調(diào)用方,并通知 約束校驗(yàn)單元停止工作。
      12、根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述約束校驗(yàn)單元進(jìn)一步 用于對(duì)約束類型判定單元所確定的4交驗(yàn)類型為前置沖L驗(yàn)的約束在凄t據(jù)存儲(chǔ)單元 中進(jìn)行SQL查詢,得到約束的SQL查詢語句要返回字段部分的變量值并保存, 用所保存的變量值來替換約束的布爾表達(dá)式部分的相應(yīng)變量,將替換結(jié)果發(fā)給 布爾表達(dá)式計(jì)算單元進(jìn)行分析。
      全文摘要
      本發(fā)明公開了一種約束校驗(yàn)的方法,該方法包括根據(jù)約束描述規(guī)則將約束寫入約束描述文件中,并將約束描述文件保存下來;加載約束描述文件;調(diào)用方輸入當(dāng)前操作記錄相關(guān)參數(shù),根據(jù)當(dāng)前操作記錄相關(guān)參數(shù)提取要校驗(yàn)的約束集,對(duì)約束集中的所有約束進(jìn)行校驗(yàn)。本發(fā)明同時(shí)公開了一種約束校驗(yàn)裝置,該裝置包括約束書寫模塊、約束集管理模塊、接口模塊及約束校驗(yàn)?zāi)K。利用本發(fā)明,能夠?qū)崿F(xiàn)約束的配制化管理,且縮小了代碼規(guī)模,易于維護(hù)和擴(kuò)展,具有較強(qiáng)的復(fù)用性。
      文檔編號(hào)H04L12/24GK101272222SQ20081009613
      公開日2008年9月24日 申請(qǐng)日期2008年5月6日 優(yōu)先權(quán)日2008年5月6日
      發(fā)明者侯本博, 濤 田 申請(qǐng)人:中興通訊股份有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1