JBoss Rules的入門學(xué)習(xí)
學(xué)習(xí)JBoss Rules有幾天了,因為這方面的中文資料較少,所以這幾天都在看官網(wǎng)上的manual。這是一份不錯的教程,我把我看的一些重要的東西翻譯整理了一下,希望可以對想學(xué)習(xí)JBoss Rules的朋友們提供一點幫助。
在開始這份教程之前,我先簡要介紹一下JBoss Rules:
JBoss Rules 的前身是Codehaus的一個開源項目叫Drools。最近被納入JBoss門下,更名為JBoss Rules,成為了JBoss應(yīng)用服務(wù)器的規(guī)則引擎。Drools是為Java量身定制的基于Charles  Forgy的RETE算法的規(guī)則引擎的實現(xiàn)。具有了OO接口的RETE,使得商業(yè)規(guī)則有了更自然的表達(dá)。
 
既然JBoss Rules是一個商業(yè)規(guī)則引擎,那我們就要先知道到底什么是Rules,即規(guī)則。在JBoss Rules中,規(guī)則是如何被表示的
一條規(guī)則是對商業(yè)知識的編碼。一條規(guī)則有 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
 
規(guī)則的LHS由一個或多個條件(Conditions)組成。當(dāng)所有的條件(Conditions)都滿足并為真時,RHS將被執(zhí)行。RHS被稱為結(jié)果(Consequence)。LHS和RHS 類似于:
- if ( < LHS > ) {
 - < RHS >
 - }
 
規(guī)則可以通過package關(guān)鍵字同一個命名空間(namespace)相關(guān)聯(lián);其他的規(guī)則引擎可能稱此為規(guī)則集(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
 
對新的數(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。
【編輯推薦】















 
 
 
 
 
 
 