JBoss Rules的入門學習
學習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中,規則是如何被表示的
一條規則是對商業知識的編碼。一條規則有 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。
【編輯推薦】