失效链接处理 |
Drools官方使用手册中文(DOCX页) PDF 下载
本站整理下载:
提取码:e2a2
相关截图:
![]() 主要内容:
第一章. Drools 4.0 发布版标注
1.1. Drools 4.0的新内容
Drools4.0是从之前的Drools3.0.x系列以来的一次主要更新。在语言表达式,引擎性能和工具实用性方面都有一整套的新特性开发完成。下面列出一些最引人注意的更新列表。
1.1.1. 语言表达式增强
新的条件元素: from, collect, accumulate 和forall
新的字段约束操作: not matches, not contains, in, not in, memberOf, not memberOf
新的自索引字段: this
对条件元素嵌套的完全支持,对一阶逻辑的完全支持
支持使用&& 和||连接多个约束条件
语法分析器的增强以去除之前的一些语言约束,如字符转码和关键字冲突
支持插件式语言,以及对MVEL脚本语言的完全支持
完全重写的DSL引擎,允许完全的本地化
Fact属性对于返回值约束和内嵌求值的自动变换
支持嵌套访问,属性导航和简化的集合、数组以及映射的语法
对XML规则的增强支持
1.1.2. 核心引擎增强
对于元数据类型的本地支持,避免经常性的自动封包操作
支持透明的可选的影子Fact
对于复杂规则的Rete网络性能增强
支持规则流
支持有状态与无状态的Working Memory(规则引擎Session)
支持异步Working Memory操作
规则代理(Agent)提供热部署机制和BRMS集成
对于规则冲突解决方案的动态salience值
支持参数化查询
支持暂停命令
支持顺序执行模式
支持插件式的全局变量转换器
1.1.3. IDE 增强
支持调试中的规则断点
对于规则流的所见即所得功能
对于规则编制的新的向导编辑器
支持所有新的引擎特性
1.1.4. 业务规则管理系统 - BRMS
新的BRMS工具
具有Web2.0 Ajax特性的用户友好的Web界面
Package配置
通过向导编辑器与文本编辑器,规则的作者更容易修改规则
Package编译和部署
通过使用Rule Agent简化部署
通过分类组织规则,简化规则的查找
可版本化,你可以很容易的使用之前保存的版本替换现在的一套规则
与JCR兼容的规则仓库
1.1.5. 其它增强
减少了依赖类库和更少的内存占用
1.2. 从Drool3.0.x向Drools4.0.x更新的提示
之前说到,Drools4.0是自Drools3.0.x系列以来的重要关键更新。但不幸的是为了达到这次发布的目标,带来了一些向后兼容性的问题,如邮件列表和博客中所提到的。
本节简单介绍一下如何从Drools3.0.x向Drool4.0.x升级
1.2.1. API 变更
只有很少的API变更是对于常规用户可见并需要调整的。
1.2.1.1. Working Memory 创建
Drools3.0.x中只有一种Working Memory类型,它的是以有状态Working Memory的方式工作的。Drool4.0.x提供两个独立的有状态与无状态working memory,现在被称为Rule Session。在Drools3.0.x中建立Working Memory的代码是:
Example 1.1. Drools 3.0.x: Working Memory 创建
WorkingMemory wm = rulebase.newWorkingMemory();
在Drools 4.0.x中必须变成:
Example 1.2. Drools 4.0.x: 有状态Rule Session创建
StatefulSession wm = rulebase.newStatefulSession();
StatefulSession对象与Drools3.0.x中的WorkingMemory对象的行为相同(它甚至继承了WorkingMemory接口),因此除了创建代码以外这个调整不会带来其它问题。
1.2.1.2. Working Memory 操作
Drools 4.0.x支持可插入的语言,并且已经内建了对Java和MVEL脚本语言的支持。为了避免关键字冲突,working memory的一些操作被重新命名如下:
Table 1.1. Working Memory Actions equivalent API methods
Drools 3.0.x Drools 4.0.x
WorkingMemory.assertObject() WorkingMemory.insert()
WorkingMemory.assertLogicalObject() WorkingMemory.insertLogical()
WorkingMemory.modifyObject() WorkingMemory.update()
1.2.2. 规则语言的变更
DRL规则语言也有如下一些变更是不支持向后兼容性的。
1.2.2.1. Working Memory Actions
Working Memory 操作在规则推论中的变化和在方法API上的变化相似,下表描述了这些改变:
Table 1.2. Working Memory Actions equivalent DRL commands
Drools 3.0.x Drools 4.0.x
assert() insert()
assertLogical() insertLogical()
modify() update()
1.2.2.2. 元数据类型支持与解包(unboxing)
Drools 3.0.x没有对元数据类型的本地支持,因此它会自动封包所有的元数据类型到各自的封装类中。这样的化,任何封包的变量绑定需要一个手工的解包操作。
Drools 4.0.x已经对元数据类型有完全的支持,不再需要封装任何值。因此所有之前的解包操作必须从DRL中删除。
Example 1.3. Drools 3.0.x 手工解包
rule "Primitive int manual unbox"
when
$c : Cheese( $price : price )
then
$c.setPrice( $price.intValue() * 2 )
end
上面的规则在4.0.x中将是:
Example 1.4. Drools 4.0.x 元数据支持
rule "Primitive support"
when
|