Posted on 2006-10-08 10:13
哈迪尤 阅读(1414)
评论(1) 编辑 收藏
下面的问题经常被问到:
1。什么时候使用规则引擎。
2。规则引擎比“if...else...”语句有什么样的优势。
3。为什么使用规则引擎来代替动态脚本框架,比如Beanshell。
1.2.1 总结使用规则引擎的优点
声明式编程
规则引擎容许你“应该做什么”而不是“怎么做”
这个优点的关键点在于对于很难的问题也容易表述解决方案,应而可以很容易检测解决方法(比阅读代码简单).
规则引擎解决很难很难问题的能力很强,只要解决方法能够描述怎么做就行(对于AI神经网络系统或则人的想法就不容易咯)
把业务规则和数据分开
数据在业务领域对象里,逻辑在业务规则里。这个打破了OO数据和逻辑不分离的基本规则(这个优势取决你看问题的观点),这样的结果可以很容易维护业务规则,在业务层规则里适应未来的业务改变。
运行速度快,性能可度量
Drools' Reteoo 派生于Rete 和Leaps 算法,根据你的业务数据对象提供非常快速的规则匹配。当你的数据不做经常任何改变时,运行更有效率(规则引擎会记住以前的模式匹配)。
集中知识
一旦使用并运行规则引擎,就创建了知识仓储。这个意味着对于业务方针的单点入口。更理想情况是规则更容易读,业务服务可以文档化。
工具集成
eclipse的工具提供编辑和管理rules和直接的反馈,认证,内容协助。监控和调试工具也处于可用状态。
日志清晰
规则引擎有效的提供“解析说明”能够记录规则引擎做了些什么
易理解的规则
为业务领域问题创建创建领域模型,业务规则则可以用很自然的语言描叙,这样设计者可以拿很容易理解的规则给没有技术基础业务领域专家()