<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    guangnian0412's BLOG

    Java in my life

    常用鏈接

    統計

    積分與排名

    我關注的Blog

    最新評論

    JBoss Rules 學習(一): 什么是Rule

    ??????? 學習JBoss Rules有幾天了,因為這方面的中文資料較少,所以這幾天都在看官網上的manual。這是一份不錯的教程,我把我看的一些重要的東西翻譯整理了一下,希望可以對想學習JBoss Rules的同學們提供一點幫助。
    ?????? 在開始這份教程之前,我先簡要介紹一下JBoss Rules:
    ?????? JBoss Rules 的前身是Codehaus的一個開源項目叫Drools。最近被納入JBoss門下,更名為JBoss Rules,成為了JBoss應用服務器的規則引擎。
    ?????? Drools是為Java量身定制的基于Charles? Forgy的RETE算法的規則引擎的實現。具有了OO接口的RETE,使得商業規則有了更自然的表達。
    ?
    ?????? 既然JBoss Rules是一個商業規則引擎,那我們就要先知道到底什么是Rules,即規則。在JBoss Rules中,規則是如何被表示的

    Rules

    一條規則是對商業知識的編碼。一條規則有 attributes ,一個 Left Hand Side LHS )和一個 Right Hand Side RHS )。 Drools 允許下列幾種 attributes salience agenda-group no-loop auto-focus duration activation-group

    rule?“ < name > ”????
    ????
    < attribute > ? < value > ????
    ????when????????
    ????????
    < LHS > ????
    ????then????????
    ????????
    < RHS >
    end

    規則的
    LHS 由一個或多個條件( Conditions )組成。當所有的條件( Conditions )都滿足并為真時, RHS 將被執行。 RHS 被稱為結果( Consequence )。 LHS RHS 類似于:
    if ?(? < LHS > ?)?{
    ????
    < RHS >
    }

    規則可以通過 package 關鍵字同一個命名空間( namespace )相關聯;其他的規則引擎可能稱此為規則集( Rule Set )。一個 package 聲明了 imports global 變量, functions rules


    package ?com.sample

    import ?java.util.List
    import ?com.sample.Cheese

    global?List?cheeses

    function?
    void ?exampleFunction(Cheese?cheese)?{
    ????System.out.println(?cheese?);
    }

    rule?“A?Cheesy?Rule”
    ????when
    ????????cheese?:?Cheese(?type?
    == ? " stilton " ?)
    ????then
    ????????exampleFunction(?cheese?);
    ????????cheeses.add(?cheese?);
    end

    對新的數據和被修改的數據進行規則的匹配稱為模式匹配( Pattern Matching )。進行匹配的引擎稱為推理機( Inference Engine )。被訪問的規則稱為 ProductionMemory ,被推理機進行匹配的數據稱為 WorkingMemory Agenda 管理被匹配規則的執行。推理機所采用的模式匹配算法有下列幾種: Linear RETE Treat Leaps

    Drools 采用了 RETE Leaps 的實現。 Drools RETE 實現被稱為 ReteOO ,表示 Drools Rete 算法進行了加強和優化的實現。



    一條規則的 LHS Conditional Element 和域約束( Field Constraints )。下面的例子顯示了對一個 Cheese Fact 使用了字面域約束( Literal Field Constraint

    rule? " Cheddar?Cheese "
    ????when
    ????????Cheese(?type?
    == ? " cheddar " ?)
    ????then
    ????????System.out.println(?
    " cheddar " ?);
    end

    上面的這個例子類似于:

    public ? void ?cheddarCheese(Cheese?cheese)?{
    ????
    if ?(?cheese.getType().equals( " cheddar " )?{
    ????????System.out.println(?
    " cheddar " ?);
    ????}
    }

    規則引擎實現了數據同邏輯的完全解耦。規則并不能被直接調用,因為它們不是方法或函數,規則的激發是對 WorkingMemory 中數據變化的響應。結果( Consequence ,即 RHS )作為 LHS events 完全匹配的 Listener

    rules 被加入 Productioin Memory 后, rules 被規則引擎用 RETE 算法分解成一個圖:



    Facts assert 進入 WorkingMemory 中后,規則引擎找到匹配的 ObjectTypeNode ,然后將此 Fact 傳播到下一個節點。 ObjectTypeNode 擁有一塊內存來保存所有匹配的 facts 。在我們的例子中,下一個節點是一個域約束( Field Constraint ), type = = “cheddar” 。如果某個 Cheese 對象的類型不是“ cheddar ”,這個 fact 將不會被傳播到網絡的下一個節點。如果是“ cheddar ”類型,它將被記錄到 AlphaNode 的內存中,并傳播到網絡的下一個節點。 AlphaNode 是古典 RETE 術語,它是一個單輸入 / 單輸出的節點。最后通過 AlphaNode fact 被傳播到 Terminal Node Terminal Node 是最終節點,到此我們說這條規則被完全匹配,并準備激發。

    當一條規則被完全匹配,它并沒有立刻被激發(在 RETE 中是這樣,但在 Leaps 中它會立刻被激發)。這條規則和與其匹配的 facts 將激活被放入 Agenda ,由 Agenda 來負責安排激發 Activations (指的是 rule + the matched facts )。

    下面的圖很清楚的說明了 Drools 規則引擎的執行過程:


    數據被 assert WorkingMemory 后,和 RuleBase 中的 rule 進行匹配(確切的說應該是 rule LHS ),如果匹配成功這條 rule 連同和它匹配的數據(此時就叫做 Activation )一起被放入 Agenda ,等待 Agenda 來負責安排激發 Activation (其實就是執行 rule RHS ),上圖中的菱形部分就是在 Agenda 中來執行的, Agenda 就會根據沖突解決策略來安排 Activation 的執行順序。

    posted on 2006-06-01 16:52 guangnian 閱讀(22661) 評論(23)  編輯  收藏 所屬分類: JBoss Rules(Drools)

    評論

    # re: JBoss Rules 學習(一): 什么是Rule 2006-06-01 18:06 江南白衣

    好啊,又有人開始學習和中文化總結Drools了,密切關注中。  回復  更多評論   

    # re: JBoss Rules 學習(一): 什么是Rule 2006-06-02 10:19 C[ETI]O@quaffsoft

    cheeses不需要new出來?  回復  更多評論   

    # re: JBoss Rules 學習(一): 什么是Rule 2006-06-02 10:49 guangnian

    @C[ETI]O@quaffsoft
    你指的是global List cheeses 嗎?對于Drools rules中global屬性的用法我還不太清楚,但是有一點就是,上面的Drools rules例子是寫在.drl文件中的,而不是寫在.java中,所有不要太用java的觀點來看那段例子。上面的package也是跟java不太一樣的概念,用package關鍵字并不會創建相應的目錄層次。  回復  更多評論   

    # re: JBoss Rules 學習(一): 什么是Rule 2006-06-02 11:22 Water Ye

    關于Globals的用法

    java.util.Vector globalVector = new java.util.Vector( );
    java.util.Map map = new java.util.HashMap( );
    map.put( "vector", globalVector );
    //Open a stateless Session StatelessRuleSession srs = (StatelessRuleSession) runtime.createRuleSession( "SistersRules", map, RuleRuntime.STATELESS_SESSION_TYPE );
    ...
    // Persons added to List
    // call executeRules( ) giving a List of Objects as parameter
    // There are rules which will put Objects in the Vector
    // fetch the vector from the map
    v = (java.util.Vector)map.get("vector");  回復  更多評論   

    # re: JBoss Rules 學習(一): 什么是Rule 2006-06-08 10:49 chb

    寫的相當好,不知和ILOG JRULES有什么區別!  回復  更多評論   

    # re: JBoss Rules 學習(一): 什么是Rule 2006-06-08 14:52 guangnian

    @chb
    ILOG JRULES是商用的吧。
    JBoss Rules是開源免費的哦  回復  更多評論   

    # re: JBoss Rules 學習(一): 什么是Rule 2006-10-20 10:01 A3

    牛,  回復  更多評論   

    # re: JBoss Rules 學習(一): 什么是Rule 2006-12-05 15:24 beike QQ:63955261

    準備研究 關注一下  回復  更多評論   

    # re: JBoss Rules 學習(一): 什么是Rule 2007-07-04 11:34 liujg

    好啊!終于找到中文的資料!嚴重感謝你!  回復  更多評論   

    # re: JBoss Rules 學習(一): 什么是Rule 2007-07-24 16:05 喬君

    太感謝你了,這方面的資料非常少啊,雖然我也能翻譯,但是基礎概念不清楚,翻譯起來非常的吃力,不管怎么說,謝謝!  回復  更多評論   

    # re: JBoss Rules 學習(一): 什么是Rule 2007-07-27 17:15 darkhe

    感謝,學習中  回復  更多評論   

    # re: JBoss Rules 學習(一): 什么是Rule 2007-07-30 09:04 小白之家

    學習,謝謝!   回復  更多評論   

    # re: JBoss Rules 學習(一): 什么是Rule[未登錄] 2008-01-23 09:20 yang

    謝謝你   回復  更多評論   

    # re: JBoss Rules 學習(一): 什么是Rule[未登錄] 2008-05-28 15:06 fish

    簡單地說,DROOLS的內部運行機制是數據驅動的  回復  更多評論   

    # re: JBoss Rules 學習(一): 什么是Rule 2008-11-16 12:47 混凝土

    太感謝了,正在一籌莫展的時候, g到了樓主的筆記.嚴重受用  回復  更多評論   

    # re: JBoss Rules 學習(一): 什么是Rule[未登錄] 2009-01-07 10:24 龍龍

    感謝!  回復  更多評論   

    # re: JBoss Rules 學習(一): 什么是Rule 2009-05-26 10:43 jsjxy

    很好,連載,很強大!佩服!  回復  更多評論   

    # re: JBoss Rules 學習(一): 什么是Rule 2009-07-04 15:03 快樂一休

    寫的真的很棒
    看完幫助文檔一頭霧水
    現在清楚了些  回復  更多評論   

    # re: JBoss Rules 學習(一): 什么是Rule 2010-11-18 09:58 luxy26

    太感謝了,分析的很清晰!比manual強多了  回復  更多評論   

    # re: JBoss Rules 學習(一): 什么是Rule 2011-05-09 13:39 yangyangcwu

    謝謝啊,太好了  回復  更多評論   

    # re: JBoss Rules 學習(一): 什么是Rule 2013-01-30 13:17 駕轅馬夫

    太好了,我剛開始學習JBoss Rules正沒有思路呢,謝謝啊。  回復  更多評論   

    # re: JBoss Rules 學習(一): 什么是Rule 2013-04-24 18:01 dx

    支持 支持  回復  更多評論   

    主站蜘蛛池模板: 中文字幕免费人成乱码中国| 免费的黄色的网站| 免费无遮挡无码永久视频| 亚洲老妈激情一区二区三区| 精品久久久久久国产免费了| 亚洲日本一区二区一本一道| 国产国产人免费人成成免视频 | 亚洲黄色在线播放| 亚洲黄色免费观看| 国产成人精品日本亚洲专一区| 中国在线观看免费国语版| 亚洲中文字幕无码中文字| 国产成人高清精品免费鸭子 | 国产精品亚洲精品日韩已方| 亚洲免费视频一区二区三区| 亚洲毛片αv无线播放一区| 久久国产精品成人免费| 亚洲国产美女视频| 大陆一级毛片免费视频观看i| 亚洲a∨无码精品色午夜| 亚洲国产黄在线观看| 一个人看的www免费视频在线观看 一个人免费视频观看在线www | 中文字幕亚洲天堂| 日韩视频免费在线观看| 亚洲国产品综合人成综合网站 | 又粗又硬免费毛片| 成人自慰女黄网站免费大全| 亚洲色图在线观看| 日本黄页网站免费| 97国免费在线视频| 亚洲 欧洲 日韩 综合在线| 免费人成网站在线高清| 日韩免费的视频在线观看香蕉| 亚洲国产中文在线二区三区免| 国产小视频免费观看| 国产婷婷成人久久Av免费高清 | 亚洲午夜久久久精品电影院| 又粗又硬免费毛片| 麻花传媒剧在线mv免费观看| 国产亚洲精品美女2020久久| 亚洲AV乱码一区二区三区林ゆな|