• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    依據(jù)對象反射信息生成業(yè)務規(guī)則的一種方法

    2015-03-07 00:30:45林家偉胡俊生賴順福
    電腦知識與技術 2015年35期
    關鍵詞:推理

    林家偉 胡俊生 賴順福

    摘要:在許多推理系統(tǒng)中,業(yè)務規(guī)則與代碼緊耦合制約的系統(tǒng)應對業(yè)務變更的能力。因此,業(yè)務規(guī)則需要獨立于系統(tǒng)。另一方面,系統(tǒng)在變更升級時,業(yè)務規(guī)則也要能快速地更改,需要有一定的依賴關系。獨立關系與依賴關系構成了矛盾,該研究提出了一種依據(jù)對象的反射信息生成業(yè)務規(guī)則的方法。

    關鍵詞:推理;業(yè)務規(guī)則;反射

    中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2015)35-0136-02

    Abstract: In many of the reasoning system, business rules and codes are closely coupled with the ability of the system to cope with the business changes. Therefore, business rules need to be independent of the system. On the other hand, when the system changes, the business rules can be quickly changed, the need to have a certain dependence. This paper presents a method for generating business rules based on the object's reflection information..

    Key words: reasoning; business rules; reflection

    業(yè)務規(guī)則是業(yè)務在運行過程中的控制策略與方式。業(yè)務規(guī)則可以使用產(chǎn)生式[1]:IF P THEN Q的方式進行表示。在業(yè)務穩(wěn)定的流程中,這種規(guī)則可直接寫在代碼中。但在實際環(huán)境中,業(yè)務的變更是頻繁的。例如視頻企業(yè)有:“在活動期所有觀眾可以任意點播本公司的免費視頻”。此時前提P有三方面的限制,即時間=“活動期”、觀眾=“任意”、視頻=“免費視頻”,而結論Q則為點播。此時的主體為觀眾、客體對象及行為分別為視頻、點播。然而這種業(yè)務規(guī)則是經(jīng)常變化的,活動期不是一成不變的,而且觀眾類型、視頻類型今后也有可能隨商業(yè)活動的進行而動態(tài)調(diào)整。因此業(yè)務邏輯需要與系統(tǒng)分離。但另一方面,業(yè)務規(guī)則最終需要被系統(tǒng)所解析,并能用于流程的控制、數(shù)據(jù)訪問等操作。因此業(yè)務規(guī)則又需要與系統(tǒng)存在一定的應對關系,存在一定的耦合。

    這種分離與耦合構成了一對矛盾。本研究使用反射技術來解決這一問題。通過對系統(tǒng)已有對象的反射,得到各種類與其成員的詳細信息,然后再根據(jù)這些信息生成業(yè)務規(guī)則。從而使得業(yè)務規(guī)則與系統(tǒng)存在緊密的應對關系。另一方面,這些業(yè)務規(guī)則又可以以XML格式存儲于外部,便于動態(tài)修改。

    1 假設前提

    首先,應用程序中數(shù)據(jù)類的設計以ORM[2]思想為指導,類與其屬性均與實際的實體一致。這種規(guī)范使得系統(tǒng)中類易于被規(guī)則的制訂者所理解。這種方式也使得能通過反射技術從系統(tǒng)的EXE或DLL文件中讀取系統(tǒng)所具有的類型,便于生成業(yè)務規(guī)則。

    其次業(yè)務規(guī)則的表示以產(chǎn)生式方式表示。其中后件Q具體表示為TargetType.Method。其中TargetType是客體對象,而Method則為客體對象的方法。產(chǎn)生式的前件由簡單條件或復合條件組成。簡單條件可寫為 <對象、運算符、比較值>的三元組。例如User.Age >= 18 。即User.Age表示對象,而>=為運算符,18為進行比較的值。而復雜條件,則由其他復雜條件、簡單條件與Not、And、Or等關系組成而成。

    在上述的復雜條件示例,是一個OR形式的條件,該條件又有兩子條件,一為And復雜條件,另一個則為簡單條件。代表的條件為“主體的年齡在18到30歲之間,或客體的類型為FREE”。

    另外,對于簡單條件又有一定的約束。簡單條件的Object部分需要預留一部分關鍵字,如分別用Subject、Object代表主體、客體。此外,該關鍵字還需要能進一步擴展,用于代表其他事實,如系統(tǒng)配置等。對于有多層級的事實,采用“.”分割各層級。如用戶類型下有角色Roles這一屬性,而角色下又有權限Permissons屬性,則可表示為Subject.Roles.Permissions。用RBAC形式表示“擁有管理員權限的用戶可以刪除視頻”,則該規(guī)則可表示為:

    考慮到實際情況,在生成業(yè)務規(guī)則時,還需要包含其他的信息,首先是DLL或EXE的版本信息,這些信息將用于驗證后續(xù)的應用程序版本與業(yè)務規(guī)則版本是否一致。如果業(yè)務規(guī)則所需的類型來源于多個DLL或EXE,則這些文件版本均需要被記錄。

    采用反射技術[3]得到類型、屬性等需要較大的性能開銷。為了在對業(yè)務規(guī)則進行解析時提升性能??梢栽谟涗洏I(yè)務規(guī)則的XML文件中保存這些類型的信息。

    2 規(guī)則生成方法

    2.1 類型的加載

    類型的加載使用反射機制,通過查詢程序集的元素據(jù)將程序集中的數(shù)據(jù)讀出。本研究中將其讀取后保存于XML文件上。其流程用以下的偽碼表示:

    1)獲得所有程序集

    2)對于每一個程序集,查找該程序集中所有的類型

    3)對于每一個類型,只要不是基本數(shù)據(jù)類型,分別查找其各屬性與行為,并生成XML節(jié)點

    4)對于屬性,如果不是基本數(shù)據(jù)類型,繼續(xù)查找其各屬性與行為,生成XML節(jié)點,并嵌入當前類型。

    上述的3,4步驟是遞歸進行的,但是,這一流程會遇到無限循環(huán)的情況,例如教師類有對應的授課班級,而班級類則有對應的指導教師。此時教師與班級就存在相互引用的情況。由于類的成員之間相互引用情況復雜,這種鏈式的引用關系是很普遍的。因此在類型加載時要對這種情況進行處理。

    因此可以結合動態(tài)規(guī)劃與遞歸算法。首先建立一個類型表。將所有的類型(除去基本數(shù)據(jù)類型)保存于類型表中。當對某類型進行解析時,如果發(fā)現(xiàn)屬性是一個未出現(xiàn)過的類型,則將當前屬性的類型記錄到類型表中。

    2.2 規(guī)則的內(nèi)存表示

    規(guī)則在內(nèi)存中以樹型結點的方式表示,每一個規(guī)則均對應一棵二叉樹。左子樹為前提,而右子樹為結論。而前提根據(jù)之前的假設,有Not、And、Or與Simple四種。

    其中前提C={c|c∈Complex or c=Simple},即前提由一個復雜條件或一個簡單條件構成。

    而復雜條件則由運算符與其他條件(簡單條件或復合條件)聚合而成。

    如圖1所示,業(yè)務規(guī)則Rule由兩個成員Condition與Result組成,用于表示二叉樹。而Condition則是一個抽象類,該類中有一個抽象方法,用于判斷當前的事實環(huán)境下該條件的真假情況。由Condition派生出簡單條件、And條件、Or條件、Not條件等子條件。Not條件中包含一個抽象的Condition,在運行時,可以用一個Not、And、Or及簡單條件代替。而And、Or條件中則包含了Condition抽象類型的集合。最后的簡單條件則由條件左部、操作符、比較值三個部分組成。

    2.3 業(yè)務規(guī)則的生成

    在圖1中,Rule與Condition均使用了IToXML接口,因此均需實現(xiàn)ToXML的方法,該方法的出現(xiàn)將使得業(yè)務規(guī)則的生成分散到各個部分分批實現(xiàn),減少了復雜度。

    例如,對于簡單條件,則需生成包含條件左部、操作符、比較值屬性的XML節(jié)點即可。

    在圖2中,可以通過菜單加載程序集,并顯示出所有的類型。這些類型與業(yè)務數(shù)據(jù)關聯(lián)。通過雙擊相關屬性以及生成器右側的控件,可分別生成規(guī)則、復合條件及簡單條件。最終可保存生成所需的業(yè)務規(guī)則。該規(guī)則獨立于判斷邏輯,也易于維護,也易于被系統(tǒng)解析。

    3 結束語

    在基于ORM的原則下,使用反射技術進行類及屬性的獲取,可獲得獨立于系統(tǒng)的業(yè)務規(guī)則。該規(guī)則易于生成與維護。由于規(guī)則中的類型與系統(tǒng)中的類名一致,也能易于被系統(tǒng)解析執(zhí)行。但該系統(tǒng)還存在一些不足,如系統(tǒng)的類名習慣用英文方式表示,而用戶習慣閱讀中文,此時類型名與顯示名還需要進行一定的轉(zhuǎn)換。對于一些屬性是集合類型是,可能需要執(zhí)行篩選操作。以上這些也是后續(xù)改進的重點。

    參考文獻:

    [1] 劉培奇, 李增智, 趙銀亮, 等.擴展產(chǎn)生式規(guī)則知識表示方法[J]. 西安交通大學學報, 2004,38(6): 587-590.

    [2] 吳衛(wèi)平, 王麗芳, 蔣澤軍, 等. 基于ORM的數(shù)據(jù)持久層框架研究[J]. 微電子學與計算機, 2008,25(7):188-190, 193.

    [3] 朱有產(chǎn), 李玉凱, 李自強, 等. 基于.NET反射技術的規(guī)約插件實現(xiàn)原理[J]. 繼電器, 2006,34(22):60-63, 83.

    猜你喜歡
    推理
    云南種子植物特有屬領域本體構建及其推理
    也談高中英語教學中的閱讀技巧
    考試周刊(2017年1期)2017-01-20 21:29:06
    提高農(nóng)村學生學習幾何的能力探索
    大學英語閱讀教學中思辨能力發(fā)展的實證研究
    科技視界(2016年22期)2016-10-18 15:10:39
    初中數(shù)學課堂反例的應用
    漢語歇后語的認知語用解讀
    中國市場(2016年22期)2016-07-07 06:12:49
    《唐人街探案》:異域奇觀下的喜劇推理實驗
    今傳媒(2016年6期)2016-07-02 00:26:02
    讓“邏輯思維”在數(shù)學教學中大顯身手
    邏輯聯(lián)系語在英語聽力教學中的應用
    “RPR教學模式”的實踐與探索
    肇源县| 四平市| 沅陵县| 新竹县| 沙河市| 长兴县| 明溪县| 兴业县| 远安县| 墨竹工卡县| 泸溪县| 莫力| 华安县| 拉萨市| 金溪县| 沽源县| 宾川县| 岑巩县| 永昌县| 清原| 龙岩市| 班戈县| 溆浦县| 东阳市| 吉安市| 松滋市| 宣武区| 偃师市| 昭苏县| 大邑县| 阜宁县| 阿鲁科尔沁旗| 深水埗区| 神农架林区| 麦盖提县| 乌兰察布市| 名山县| 镇沅| 淮滨县| 宾阳县| 阳高县|