`
daniel_tu
  • 浏览: 182620 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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 的执行顺序。

分享到:
评论

相关推荐

    JBoss Rules 初学实例

    【JBoss Rules 初学实例】是针对Drools规则引擎的一个入门教程,适用于初次接触该框架的开发者。Drools是一款开源的业务规则管理系统,它允许开发人员以声明式的方式编写业务规则,使得复杂的逻辑处理变得更加简洁...

    Drools JBoss Rules 5 Developers Guide

    综上所述,《Drools JBoss Rules 5 开发者指南》是一本内容丰富且极具实用价值的参考书,它不仅为初学者提供了入门指导,也为有经验的开发人员提供了深入的技术解析和实战经验分享。无论是想要深入了解 Drools 5 ...

    Drools JBoss Rules 5.0 Developer's Guide

    《Drools JBoss Rules 5.0 Developer's Guide》是一本全面介绍Drools 5.0的书籍,不仅适合新手入门学习,也适合有一定经验的开发者深入研究。通过本书的学习,读者可以掌握Drools的基本原理和使用技巧,为构建复杂的...

    jboss rules 最新09年英文原版教材

    - **决策表**:一种可视化的方式表示规则,便于业务人员理解。 #### 五、使用场景 - **订单处理**:根据客户的订单信息自动执行相应的业务逻辑。 - **信用评估**:基于客户的历史记录和信用等级制定贷款审批规则。...

    Drools Jboss Rules 5.0 Developer's Guide

    《Drools JBoss Rules 5.0 Developer's Guide》是一本深入讲解Drools规则引擎技术的书籍。本书由Michal Bali编写,旨在帮助读者掌握Drools平台的各种特性,并通过实际案例来引导读者快速上手开发基于规则的业务逻辑...

    jboss rules用户指南(中文)PDF格式

    ### JBoss Rules 用户指南知识点详解 #### 一、规则引擎概念及背景 1. **规则引擎定义**: - 规则引擎是一种软件系统,它使用预定义的规则来处理数据,以得出结论或采取行动。 - **背景介绍**:规则引擎的发展...

    JBoss_Enterprise_BRMS_Platform-5-JBoss_Rules_5_Reference_Guide-en-US

    - **BRMS (Business Rule Management System)**:一种软件平台,用于定义、部署、执行和管理业务规则。 - **JBoss Enterprise BRMS Platform**:结合了Drools引擎和其他企业级服务的集成平台,专为复杂的企业环境...

    BRMS手册(Jboss)

    BRMS,即Business Rules Management System,是JBoss提供的一个基于Drools规则引擎的企业级业务规则管理系统。BRMS的目标是为用户提供一套完整的业务规则管理解决方案,帮助商业分析师、规则专家、开发人员及系统...

    JBoss Drools 5

    通过学习《Drools JBoss Rules 5.0 Developer's Guide》,开发者不仅能够掌握如何利用Drools构建规则驱动的应用程序,还能深入了解规则引擎的核心技术和最佳实践。这不仅有助于提高开发效率,还能提升业务逻辑的灵活...

    Mastering JBoss Drools 6 for Developers_And_SourceCode.zip

    You will learn how to use KIE modules to create and execute Business Rules, and how the PHREAK algorithm internally works to drive the Rule Engine decisions. This book will also cover the ...

    规则引擎-Drools-EasyRules教程

    **Drools**是JBoss的一个开源项目,提供了一个高度灵活和强大的业务规则管理系统(BRMS)。Drools支持多种规则语言,包括基于事实的语言(如DRL,Drools规则语言)和基于模板的语言。它还包括了一个集成的规则引擎、...

    Drools5规则引擎学习研究

    Drools,原名JBoss Rules,是一个强大的开源业务规则管理系统,由JBoss公司开发,基于Charles Forgy的RTE算法,专为Java设计。它允许业务分析师和审核人员以直观的方式查看和验证业务规则,以确保编码的规则准确地...

    JBoss_Enterprise_BRMS_Platform-5-BRMS_User_Guide-zh-CN

    JBoss企业级BRMS (Business Rules Management System) 平台5.2.0版本带来了多项新特性与改进,具体包括但不限于: - **规则管理界面优化**:提供更友好的用户界面,方便规则作者和业务分析人员进行规则的创建、编辑...

    Drools Workbench6.5 lib.rar

    Drools Workbench是Red Hat开发的一个开源规则引擎和决策管理平台,它是JBOSS BRMS(Business Rules Management System)的一部分。这个平台提供了一个可视化的工作台,用于创建、测试和部署业务规则和决策。在...

    规则引擎Drools在J2EE项目开发中的应用

    它支持两种语法:一种是基于Java的DRL(Drools Rule Language),另一种是更接近自然语言的马尔科夫决策过程(MDP)语法。 2. **规则执行**:Drools引擎通过工作记忆(Working Memory)和推理引擎(Inference ...

    drools介绍pdf

    Drools (JBoss Rules) 是一个开源的BRMS,它支持业务规则的定义、管理和执行。Drools的特点包括: - **易于使用:** 业务分析师和审查人员可以直接查看和修改规则。 - **标准化:** 符合业内标准,如JSR94。 - **高...

    Drools使用手册.mht

    《Drools使用手册》是针对企业...附带的"jbossrules"文件可能是Drools相关的示例代码或工具,用于辅助学习和实践。通过阅读这份手册和研究提供的示例,开发者能够熟练掌握Drools,并在实际项目中灵活应用业务规则管理。

    规则引擎Drools 中文使用教程

    Drools最初是一个独立的项目,后来被JBoss收购并成为JBoss应用服务器的一部分,因此有时也被称作JBoss Rules。 Drools的核心优势在于它能够帮助企业和开发者将复杂的业务逻辑从代码中抽象出来,以一种更加直观和...

Global site tag (gtag.js) - Google Analytics