<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

    常用鏈接

    統(tǒng)計(jì)

    積分與排名

    我關(guān)注的Blog

    最新評(píng)論

    JBoss Rules 學(xué)習(xí)(一): 什么是Rule

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

    Rules

    一條規(guī)則是對(duì)商業(yè)知識(shí)的編碼。一條規(guī)則有 attributes ,一個(gè) Left Hand Side LHS )和一個(gè) 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

    規(guī)則的
    LHS 由一個(gè)或多個(gè)條件( Conditions )組成。當(dāng)所有的條件( Conditions )都滿足并為真時(shí), RHS 將被執(zhí)行。 RHS 被稱為結(jié)果( Consequence )。 LHS RHS 類似于:
    if ?(? < LHS > ?)?{
    ????
    < RHS >
    }

    規(guī)則可以通過 package 關(guān)鍵字同一個(gè)命名空間( namespace )相關(guān)聯(lián);其他的規(guī)則引擎可能稱此為規(guī)則集( Rule Set )。一個(gè) 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

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

    Drools 采用了 RETE Leaps 的實(shí)現(xiàn)。 Drools RETE 實(shí)現(xiàn)被稱為 ReteOO ,表示 Drools 對(duì) Rete 算法進(jìn)行了加強(qiáng)和優(yōu)化的實(shí)現(xiàn)。



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

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

    上面的這個(gè)例子類似于:

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

    規(guī)則引擎實(shí)現(xiàn)了數(shù)據(jù)同邏輯的完全解耦。規(guī)則并不能被直接調(diào)用,因?yàn)樗鼈儾皇欠椒ɑ蚝瘮?shù),規(guī)則的激發(fā)是對(duì) WorkingMemory 中數(shù)據(jù)變化的響應(yīng)。結(jié)果( Consequence ,即 RHS )作為 LHS events 完全匹配的 Listener

    當(dāng) rules 被加入 Productioin Memory 后, rules 被規(guī)則引擎用 RETE 算法分解成一個(gè)圖:



    當(dāng) Facts assert 進(jìn)入 WorkingMemory 中后,規(guī)則引擎找到匹配的 ObjectTypeNode ,然后將此 Fact 傳播到下一個(gè)節(jié)點(diǎn)。 ObjectTypeNode 擁有一塊內(nèi)存來保存所有匹配的 facts 。在我們的例子中,下一個(gè)節(jié)點(diǎn)是一個(gè)域約束( Field Constraint ), type = = “cheddar” 。如果某個(gè) Cheese 對(duì)象的類型不是“ cheddar ”,這個(gè) fact 將不會(huì)被傳播到網(wǎng)絡(luò)的下一個(gè)節(jié)點(diǎn)。如果是“ cheddar ”類型,它將被記錄到 AlphaNode 的內(nèi)存中,并傳播到網(wǎng)絡(luò)的下一個(gè)節(jié)點(diǎn)。 AlphaNode 是古典 RETE 術(shù)語,它是一個(gè)單輸入 / 單輸出的節(jié)點(diǎn)。最后通過 AlphaNode fact 被傳播到 Terminal Node Terminal Node 是最終節(jié)點(diǎn),到此我們說這條規(guī)則被完全匹配,并準(zhǔn)備激發(fā)。

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

    下面的圖很清楚的說明了 Drools 規(guī)則引擎的執(zhí)行過程:


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

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

    評(píng)論

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

    好啊,又有人開始學(xué)習(xí)和中文化總結(jié)Drools了,密切關(guān)注中。  回復(fù)  更多評(píng)論   

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

    cheeses不需要new出來?  回復(fù)  更多評(píng)論   

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

    @C[ETI]O@quaffsoft
    你指的是global List cheeses 嗎?對(duì)于Drools rules中g(shù)lobal屬性的用法我還不太清楚,但是有一點(diǎn)就是,上面的Drools rules例子是寫在.drl文件中的,而不是寫在.java中,所有不要太用java的觀點(diǎn)來看那段例子。上面的package也是跟java不太一樣的概念,用package關(guān)鍵字并不會(huì)創(chuàng)建相應(yīng)的目錄層次。  回復(fù)  更多評(píng)論   

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

    關(guān)于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");  回復(fù)  更多評(píng)論   

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

    寫的相當(dāng)好,不知和ILOG JRULES有什么區(qū)別!  回復(fù)  更多評(píng)論   

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

    @chb
    ILOG JRULES是商用的吧。
    JBoss Rules是開源免費(fèi)的哦  回復(fù)  更多評(píng)論   

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

    牛,  回復(fù)  更多評(píng)論   

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

    準(zhǔn)備研究 關(guān)注一下  回復(fù)  更多評(píng)論   

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

    好啊!終于找到中文的資料!嚴(yán)重感謝你!  回復(fù)  更多評(píng)論   

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

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

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

    感謝,學(xué)習(xí)中  回復(fù)  更多評(píng)論   

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

    學(xué)習(xí),謝謝!   回復(fù)  更多評(píng)論   

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

    謝謝你   回復(fù)  更多評(píng)論   

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

    簡(jiǎn)單地說,DROOLS的內(nèi)部運(yùn)行機(jī)制是數(shù)據(jù)驅(qū)動(dòng)的  回復(fù)  更多評(píng)論   

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

    太感謝了,正在一籌莫展的時(shí)候, g到了樓主的筆記.嚴(yán)重受用  回復(fù)  更多評(píng)論   

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

    感謝!  回復(fù)  更多評(píng)論   

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

    很好,連載,很強(qiáng)大!佩服!  回復(fù)  更多評(píng)論   

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

    寫的真的很棒
    看完幫助文檔一頭霧水
    現(xiàn)在清楚了些  回復(fù)  更多評(píng)論   

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

    太感謝了,分析的很清晰!比manual強(qiáng)多了  回復(fù)  更多評(píng)論   

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

    謝謝啊,太好了  回復(fù)  更多評(píng)論   

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

    太好了,我剛開始學(xué)習(xí)JBoss Rules正沒有思路呢,謝謝啊。  回復(fù)  更多評(píng)論   

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

    支持 支持  回復(fù)  更多評(píng)論   

    主站蜘蛛池模板: 好男人www免费高清视频在线| 麻花传媒剧在线mv免费观看| 亚洲一区二区三区精品视频| 亚洲啪啪免费视频| 一级毛片不卡免费看老司机| 亚洲一区二区三区丝袜| 亚洲酒色1314狠狠做| 亚洲精品无码永久中文字幕| 免费一级e一片在线播放| 免费一本色道久久一区| 99久久久国产精品免费牛牛| 国产一级a毛一级a看免费人娇| 国产精品成人亚洲| 亚洲中文字幕无码久久精品1| 高清在线亚洲精品国产二区| 一区二区三区无码视频免费福利| 添bbb免费观看高清视频| 亚洲成AⅤ人影院在线观看| 天堂在线免费观看中文版| 桃子视频在线观看高清免费完整| 无码人妻丰满熟妇区免费| 大地资源在线资源免费观看| 国产99久久久国产精免费| 无码日韩人妻AV一区免费l| 国产精品亚洲一区二区无码| 亚洲偷自拍另类图片二区| 中文字幕 亚洲 有码 在线| 亚洲国产成人精品久久| 亚洲无线一二三四区| 亚洲成人动漫在线观看| 亚洲毛片一级带毛片基地| 亚洲国产成人精品电影| 亚洲人成电影青青在线播放| 亚洲一级免费毛片| 最新国产成人亚洲精品影院| 中文字幕无码精品亚洲资源网久久| 亚洲91精品麻豆国产系列在线| 亚洲视频在线观看2018| 亚洲日韩一区二区三区| 校园亚洲春色另类小说合集| 国产大陆亚洲精品国产|