31、Drools语法篇之概述

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实战陆续发布中………

扫描下方二维码关注公众号 ↓↓↓↓↓↓↓↓↓↓















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值