学习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 介绍 - **前身与演变**:JBoss Rules 的前身是 Codehaus 下的一个开源项目名为 Drools。随着其功能和技术的成熟,该项目被 JBoss 收购,并重新命名为 JBoss ...
【JBoss Rules 初学实例】是针对Drools规则引擎的一个入门教程,适用于初次接触该框架的开发者。Drools是一款开源的业务规则管理系统,它允许开发人员以声明式的方式编写业务规则,使得复杂的逻辑处理变得更加简洁...
综上所述,《Drools JBoss Rules 5 开发者指南》是一本内容丰富且极具实用价值的参考书,它不仅为初学者提供了入门指导,也为有经验的开发人员提供了深入的技术解析和实战经验分享。无论是想要深入了解 Drools 5 ...
《Drools JBoss Rules 5.0 Developer's Guide》是一本全面介绍Drools 5.0的书籍,不仅适合新手入门学习,也适合有一定经验的开发者深入研究。通过本书的学习,读者可以掌握Drools的基本原理和使用技巧,为构建复杂的...
- **决策表**:一种可视化的方式表示规则,便于业务人员理解。 #### 五、使用场景 - **订单处理**:根据客户的订单信息自动执行相应的业务逻辑。 - **信用评估**:基于客户的历史记录和信用等级制定贷款审批规则。...
《Drools JBoss Rules 5.0 Developer's Guide》是一本深入讲解Drools规则引擎技术的书籍。本书由Michal Bali编写,旨在帮助读者掌握Drools平台的各种特性,并通过实际案例来引导读者快速上手开发基于规则的业务逻辑...
### JBoss Rules 用户指南知识点详解 #### 一、规则引擎概念及背景 1. **规则引擎定义**: - 规则引擎是一种软件系统,它使用预定义的规则来处理数据,以得出结论或采取行动。 - **背景介绍**:规则引擎的发展...
- **BRMS (Business Rule Management System)**:一种软件平台,用于定义、部署、执行和管理业务规则。 - **JBoss Enterprise BRMS Platform**:结合了Drools引擎和其他企业级服务的集成平台,专为复杂的企业环境...
BRMS,即Business Rules Management System,是JBoss提供的一个基于Drools规则引擎的企业级业务规则管理系统。BRMS的目标是为用户提供一套完整的业务规则管理解决方案,帮助商业分析师、规则专家、开发人员及系统...
通过学习《Drools JBoss Rules 5.0 Developer's Guide》,开发者不仅能够掌握如何利用Drools构建规则驱动的应用程序,还能深入了解规则引擎的核心技术和最佳实践。这不仅有助于提高开发效率,还能提升业务逻辑的灵活...
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**是JBoss的一个开源项目,提供了一个高度灵活和强大的业务规则管理系统(BRMS)。Drools支持多种规则语言,包括基于事实的语言(如DRL,Drools规则语言)和基于模板的语言。它还包括了一个集成的规则引擎、...
Drools,原名JBoss Rules,是一个强大的开源业务规则管理系统,由JBoss公司开发,基于Charles Forgy的RTE算法,专为Java设计。它允许业务分析师和审核人员以直观的方式查看和验证业务规则,以确保编码的规则准确地...
JBoss企业级BRMS (Business Rules Management System) 平台5.2.0版本带来了多项新特性与改进,具体包括但不限于: - **规则管理界面优化**:提供更友好的用户界面,方便规则作者和业务分析人员进行规则的创建、编辑...
Drools Workbench是Red Hat开发的一个开源规则引擎和决策管理平台,它是JBOSS BRMS(Business Rules Management System)的一部分。这个平台提供了一个可视化的工作台,用于创建、测试和部署业务规则和决策。在...
它支持两种语法:一种是基于Java的DRL(Drools Rule Language),另一种是更接近自然语言的马尔科夫决策过程(MDP)语法。 2. **规则执行**:Drools引擎通过工作记忆(Working Memory)和推理引擎(Inference ...
Drools (JBoss Rules) 是一个开源的BRMS,它支持业务规则的定义、管理和执行。Drools的特点包括: - **易于使用:** 业务分析师和审查人员可以直接查看和修改规则。 - **标准化:** 符合业内标准,如JSR94。 - **高...
《Drools使用手册》是针对企业...附带的"jbossrules"文件可能是Drools相关的示例代码或工具,用于辅助学习和实践。通过阅读这份手册和研究提供的示例,开发者能够熟练掌握Drools,并在实际项目中灵活应用业务规则管理。
Drools最初是一个独立的项目,后来被JBoss收购并成为JBoss应用服务器的一部分,因此有时也被称作JBoss Rules。 Drools的核心优势在于它能够帮助企业和开发者将复杂的业务逻辑从代码中抽象出来,以一种更加直观和...