JBoss Rules 学习(三): Drools规则引擎 (上)

从今天开始,我们将分两期来详细的介绍Drools规则引擎的原理,和各关键类的使用方法。

Drools 规则引擎(上)


1. 概述 :
Drools 分为两个主要部分:构建( Authoring )和运行时( Runtime )。

构建的过程涉及到 .drl 或 .xml 规则文件的创建,它们被读入一个解析器,使用 ANTLR 3 语法进行解析。解析器对语法进行正确性的检查,然后产生一种中间结构“ descr ”, descr 用 AST 来描述规则。 AST 然后被传到PackageBuilder ,由 PackagBuilder 来产生 Packaged 对象。 PackageBuilder 还承担着一些代码产生和编译的工作,这些对于产生 Package 对象都时必需的。 Package 对象是一个可以配置的,可序列化的,由一个或多个规则组成的对象。下图阐明了上述过程:

Figure 1.1  Authoring Components

 

RuleBase 是一个运行时组件,它包含了一个或多个 Package 对象。可以在任何时刻将一个 Package 对象加入或移出RuleBase 对象。一个 RuleBase 对象可以在任意时刻实例化一个或多个 WorkingMemory 对象,在它的内部保持对这些WorkingMemory 的弱引用。 WorkingMemory 由一系列子组件组成。当应用程序中的对象被 assert 进 WorkingMemory,可能会导致一个或多个 Activation 的产生,然后由 Agenda 负责安排这些 Activation 的执行。下图说明了上述过程:

Figure 1.2 . Runtime Components


2.构建(Authoring):

主要有三个类用来完成构建过程:DrlParser, XmlParser 和 PackageBuilder。两个解析器类从传入的Reader实例产生descr AST模型。PackageBuilder提供了简便的API,使你可以忽略那两个类的存在。这两个简单的方法是:“addPackageFromDrl”和“addPackageFromXml”,两个都只要传入一个Reader实例作为参数。下面的例子说明了如何从classpath中的xml和drl文件创建一个Package对象。注意:所有传入同一个PackageBuilder实例的规则源,都必须是在相同的package 命名空间(namespace)中。

Figure 2.1 PackageBuilder

PackageBuilder是可以配置的,使用PackageBuilderConfiguration。通常,你可以指定另一个parent ClassLoader和用什么编译器(compiler),默认是Eclipse JDT。下面显示了如何指定JANINO编译器:

PackageBuilderConfiguration conf = new PackageBuilderConfiguration();
conf.setCompile
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值