Drools规则语言详解(上)
1.概述:
Drools 3采用了原生的规则语言,那是一种非XML文本格式。在符号方面,这种格式是
非常轻量的,并且通过“expanders”支持符合你问题域的Domain Specific
Language(DSL)。这一章把焦点放在了Drools原生的规则格式。如果你想从技术上了
解规则语言的机制,可以参考“drl.g”源文件,这是用Antlr3语法来描述规则语言。如果
你使用Rule Workbench,内容助手将会为你完成大量的规则结构,例如输入“ru”,然后
按ctrl+space,会为你建立规则结构。
1.1规则文件
一个规则文件通常是一个以.drl扩展名结尾的文件。在一个drl文件中,你可
以有多条rules,functions等等。尽管如此,你也可以将你的规则分布在多
个文件中,这有利于管理大量的规则。一个DRL文件是一个简单的文本文件。
1.2规则的结构
一个规则结构大致如下:
rule"name"
ATTRIBUTES
when
LHS
then
RHS
end
可以看到,这是非常简单的。通常的标点符号都是不需要的,甚至连“name”
的双引号都是不需要的。ATTRIBUTES是简单的,也是可选的,来提示规则
的行为方式。LHS是规则的条件部分,需要按照一定的语法来写。RHS基本
上是一个允许执行Java语法的代码的块(以后将会支持groovy和C#)。
任何在LHS中使用的变量都可以在RHS中使用。
注意:每行开始的空格是不重要的,除非在DSL(Domain Speci'c
Language)语言中有特别的指明。
1.3Domain Specic Language
Domain Speci'c Language是对原生规则语言的加强。它们使用
“expander”机制。Expander机制是一种可扩展的API。你可以使用.dsl
文件,来提供从域或自然语言到规则语言和你的域对象的映射。你可以将.dsl
文件看成是对你的域模型的映射。DSL提供了更高的规则可读性,你可以选择
使用你自己创建的DSL,或者是原生的规则语言。
1.4保留字