diggbag

BlogJava 联系 聚合 管理
  0 Posts :: 13 Stories :: 6 Comments :: 0 Trackbacks

1.什么是规则引擎?

规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据业务规则做出业务决策。 

2.使用规则引擎的好处。

· 声明式编程规则引擎允许你描述做什么而不是如何去做。

· 逻辑与数据分离数据保存在系统对象中,逻辑保存在规则中。这根本性的打破了面向对象系统中将数据和逻辑耦合起来的局面

· 速度及可测量性Rete算法、Leaps算法,以及由此衍生出来的DroolsReteLeaps算法,提供了对系统数据对象非常有效率的匹配。

· 知识集中化通过使用规则,将建立一个可执行的规则库。这意味着规则库代表着现实中的业务策略的唯一对应,理想情况下可读性高的规则还可以被当作文档使用。

· 工具集成例如Eclipse(将来可能在基于Web的界面上)这样的工具为规则的修改与管理、即时获得反馈、内容验证与修补提供了办法。审查与调试工具同样也可用了

· 解释机制通过将规则引擎的决断与决断的原因一起记录下来,规则系统提供了很好的“解释机制”。

· 易懂的规则通过建立对象模型以及DSL域定义语言),你可以用接近自然语言的方式来编写规则。这让非技术人员与领域专家可以用他们自己的逻辑来理解规则(因为程序的迷宫已经被隐藏起来了) 

3.Drools是什么?

Drools是为Java量身定制的基于Charles Forgy的RETE算法的规则引擎的实现。具有了OO接口的RETE,使得商业规则有了更自然的表达。

4.Drools基本框架

Drools被分为两个主要的部分:编制和运行时

Drools编制:编制的过程包括为规则建立DRLXML文件,传入一个由Antlr 3文法器定义的解析器中。解析器对文件中规则文法的正确性进行检查并为descr建立一个中间结构,在AST中的descr代表规则的描述。AST然后将descr传入Package Builder中,由其进行打包。Package Builder同时负责包括打包中用到的所有代码产生器和编译器Package对象是自包含并可配置的,它是一个包含规则的序列化的对象。

Drools 运行组件:






RuleBase是运行时组件,包含一个或多个PackagePackage在任何时候都可以向RuleBase中添加或删除。

一个RuleBase可以同时初始化多个Working Memory,在其间维护着一个弱引用,除非重新进行配置。Working Memory包含许多子组件,如Working Memory Event Support(事件支持), Truth Maintenance System(真值维护系统), Agenda  Agenda Event Support(事件支持)。向Working Memory中设置对象的工作可能要在建立了一个或多个激活的规则后才结束。Agenda负有规划激活规则运行的责任。




注:这两个流程看起来是比较难懂,下面直接结合一个简单的例子来说明。

posted on 2011-09-23 13:58 哲同 阅读(1125) 评论(0)  编辑  收藏 所属分类: java相关

只有注册用户登录后才能发表评论。


网站导航: