package package-name 包名
imports 引入,通常java说的导入类,也可引用静态方法
globals 全局变量
functions 函数
queries 查询
rules 规则
声明元素的顺序并不重要,但包名除外,如果声明,在规则文件中必须是第一个。所有元素都是可选
的,所以,你只使用你需要的。
对于初学者,仅作为一个早期的视图,一条规则有以下的粗略结构:
rule "name"
attributes
when
LHS
then
RHS
end
相当简单。通常不需要标点,因为是换行,即使"name"的双引号也是可选的。属性(总是可选的)仅
是提示该规则应该如何行动。LHS 是规则的条件部分,它遵循一定的语法,后面会介绍。RHS 是允
许执行方言特殊语义代码的基本块。
要重点注意,白色空格是不重要的,除非在域特殊语言的情况下,逐行处理,空格可能对该域语言有
意义。
关键字
Drools 引入了
硬关键字和
软关键字的概念。
硬关键字被保留,在命名你的域对象、属性、方法、函数和应用于规则文本中的其他元素时,你不能
使用任何硬关键字。
下面是硬关键字的列表,在编写规则时,你必须避免使用它们作为标识符:
true、
false、
null
软关键字只在它们的上下文中被识别,让你在你希望的任何其他地方使用这些单词。下面是软关键字
的列表
lock-on-active、
date-effective、
date-expires、
no-loop、
auto-focus、
activation-group、
agenda-group、
ruleflow-group、
entry-point、
duration、
package、
import、
dialec、
salience、
enabled、
attributes、
rule、
extend、
template、
query、
declare、
function、
global、
eval、
not、
in、
or、
and、
exists、
forall、
action、
reverse、
result、
end、
init
当然,你可以用驼峰格式使用这些(软或硬)单词作为方法的名字部分
如,notSomething()或
accumulateSomething() ——在这种情况下使用没有问题。
DRL 语言的另外一个改进是可以在规则文本中转义硬关键字。这个功能让你在使用存在的域对象时
不用担心关键字冲突。要转义一个单词,只需用重点号括起来,如下所示:
Holiday(
`when` == "july" )
在规则的任何地方都可以使用转义,但在 LHS 或 RHS 代码块中的代码表达式内的除外。下面是正确
用法的例子
rule "validate holiday by eval"
dialect "mvel"
when
h1 : Holiday( )
eval( h1.when == "july" )
then
System.out.println(h1.name + ":" + h1.when);
end
rule "validate holiday"
dialect "mvel"
when
h1 : Holiday( `when` == "july" )
then
System.out.println(h1.name + ":" + h1.when);
end
下面是小编的微信转帐二维码,小编再次谢谢读者的支持,小编会更努力的
----请看下方↓↓↓↓↓↓↓
百度搜索 Drools从入门到精通:可下载开源全套Drools教程
深度Drools教程不段更新中:
更多Drools实战陆续发布中………
扫描下方二维码关注公众号 ↓↓↓↓↓↓↓↓↓↓