没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
第一章. 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
$c : Cheese( $price : price )
then
$c.setPrice( $price * 2 )
end
1.2.3. Drools 更新工具
Drools 更新工具是一个帮助你将 DRL 从 3.0.x 升级到 4.0.x 的一个简单的程序。
在这一点上它主要是更新 working memory 从 3.0.x 到 4.0.x 的操作调用,但是期待它在未
来的几个星期里可以覆盖更多的情况。要注意的是,这个工具并不是简单的进行字符替换,
实际上它分析规则文件并确保不会做出预料之外的任何事情。因此它对于大量规则的升级来
说是一个安全的工具。
Drools 更新工具可以在下面的源码库链接中作为一个 maven 项目获取
http://anonsvn.labs.jboss.com/labs/jbossrules/trunk/experimental/drools-update/
你只需要 Check Out 它,然后与项目的 pom.xml 文件一起执行 maven clean install 操作。
在解决了所有依赖类库的 class 路径后,你可以使用下面的命令运行这个工具:
java -cp $CLASSPATH org.drools.tools.update.UpdateTool -f <filemask> [-d <basedir>]
[-s <sufix>]
这个程序的参数非常容易理解:
• -h,--help, 显示一个非常简单的帮助
• -d 你的源码根路径
• -f 将要被更新的文件的查找模式。这个格式与 ANT 中使用的相同,*=单个文件,
目录**=任何子目录级别;例如 src/main/resources/**/*.drl = 匹配所有在
/src/main/resources 下的子目录中的 DRL 文件
• -s,--suffix 被增加到所有更新文件上的后缀
第 2 章. 规则引擎
2.1. 什么是规则引擎?
2.1.1. 背景介绍
A.I.(Artificial Intelligence)是一个关注于“使计算机像人类一样思考“的广泛的研
究领域,包括 Neural Networks(神经网络), Genetic Algorithms(遗传算法), Decision
Trees(决策树), Frame Systems(框架系统) and Expert Systems(专家系统)。Knowledge
representation(知识呈现)是 A.I.的一部分,关注于如何呈现和操纵知识。专家系统使
用知识表示把知识编码简化成一个可用于推理的知识库──比如,我们可以用知识库处理数
据以推出结论。专家系统又叫基于知识的系统、基于知识的专家系统,并被认为是 A.I.的
一个应用。开发一个专家库系统的过程被称为知识工程。EMYCIN 是最早的专家系统 Shell
(外壳)之一,它从医学诊断专家系统 MYCIN 发展而来。早期的专家系统有自己的 logic hard
剩余213页未读,继续阅读
chenzhanrui
- 粉丝: 1
- 资源: 14
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页