JBoss Rules 学习(一): 什么是Rule
来源:互联网 发布:ubuntu 16 tty菱形乱码 编辑:程序博客网 时间:2024/05/08 12:07
在开始这份教程之前,我先简要介绍一下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 。
规则引擎实现了数据同逻辑的完全解耦。规则并不能被直接调用,因为它们不是方法或函数,规则的激发是对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 学习(一): 什么是Rule
- JBoss Rules 学习(一): 什么是Rule
- JBoss Rules 学习(一): 什么是Rule
- JBoss Rules 学习(一): 什么是Rule
- JBoss Rules 学习(一): 什么是Rule
- JBoss Rules 学习(一): 什么是Rule
- JBoss Rules介绍:什么是Rule
- JBoss Rules学习笔记(一)
- JBoss Rules 学习(二): RETE算法
- JBoss Rules 学习(二): RETE算法
- JBoss Rules 学习(二): RETE算法
- JBoss Rules 学习(二): RETE算法
- JBoss Rules 学习(二): RETE算法
- JBoss Rules学习笔记(五)—— JBoss Rules 3.0.1 类库介绍
- JBoss Rules 学习(五): JBoss Rules 3.0.1 类库介绍
- JBoss Rules 学习(五): JBoss Rules 3.0.1 类库介绍
- JBoss Rules 学习(五): JBoss Rules 3.0.1 类库介绍
- JBoss Rules 学习(三): Drools规则引擎 (上)
- 用intent启动activity时关于activity启动方式的flag
- SVN服务器搭建
- exVim安装步骤
- 【机器学习】(9):决策树
- IE11如何采用其他低级版本调试网页
- JBoss Rules 学习(一): 什么是Rule
- LinkedList链表实现队列应用的简单实例
- 【工作记录】C++ 浮点数、字符串的比较
- android客户端减少崩溃方案
- Android事件总线AndroidEventBus的使用
- ufw 应用
- poj 1458
- Negative and Positive (NP) ( Hash 维护 )
- Android-Universal-Image-Loader图上加载开源