Drools之规则中级语法

一、package说明

package是定义在规则文件首行的,也是规则文件三大模块之一。
package为规则逻辑路径,定义时可不与物理目录相同,但为了更方便管理,强烈建议与物理目录同步。
package包含import、global、function、query、rule、EOF。
其rule是贯穿整个规则文件的核心,介绍的pattern、运行符、约束连接、规则属性等都是rule中的内容。

介绍package时不得不再次说明kmodule.xml配置,当配置文件中的KieBase设置package路径,则当前路径下的所有规则相关文件(规则文件、决策表、领域语言文件等)都会被加入规则库中,但当前路径下子文件夹的规则相关文件不包含在当前规则库中。

package参数本身是一个命名空间,并且不以任何方式关联文件或文件夹。因此,可以由多个规则目录为规则库构建源组合规则,有一个顶级的package配置,所有的规则都在其控制之下(在组合规则时)。虽然声明在不同名称下的资源不可能合并为同一个包,但是单个规则库可以用多个包来构建它。也就是说,packages可以设置多个路径,并通过逗号分隔,但这是对配置文件packages而言的。

二、global全局变量

全局变量是一个很有用的元素节点,它是通过关键字global class(对象类型) name组成的。class可以任意的,能为规则提供操作数据或服务等功能,特别是在规则RHS部分中使用程序提供的服务功能,如在RHS部分添加日志功能、修改数据表、发送E-mail等。

global全局变量与Fact(事实)对象不同,不会因为值变化而影响到规则的再次激活。

文章目录
  1. 一、package说明
  2. 二、global全局变量