0
点赞
收藏
分享

微信扫一扫

drools_03_dialect

关于 dialect 属性

  • drools 支持两种dialect, 即​​java​​​ 和​​mvel​
  • dialect 缺省为​​java​​​, 当然我们也推荐统一使用​​java​​ dialect, 以降低维护成本.
  • dialect 属性仅用于设定​​RHS​​​ 部分语法,​​LHS​​ 部分并不受 dialect 的影响.
  • package 和 rule 都可以指定 dialect 属性.

mvel dialect

  • mvel 是一种表达式语言, github主页为​​https://github.com/mvel/mvel​​​ , 文档主页为​​http://mvel.documentnode.com/​​
  • dools 中的 mvel dialect 可以认为是 java dialect的超集, 也就是说 mvel dialect模式下, 也支持 java dialect的写法.
  • mvel 和 java 的主要区别:
  • 对于POJO 对象, java dialect 必须使用 getter 和 setter 方法.
  • 对于POJO 对象, mvel dialect 可以直接使用属性名称进行读写, 甚至是private 属性也可以.

java dialect示例:

rule "java_rule"  
enabled true
dialect "java"
when
$order:Order()
then
System.out.println("java_rule fired");
$order.setRealPrice($order.getOriginalPrice()*0.8) ;
end

mvel dialect示例:

rule "mvel_rule"
enabled false
dialect "mvel"
when
$order:Order()
then
System.out.println("mvel_rule fired");
$order.realPrice=$order.originalPrice*0.7 ;
end



举报

相关推荐

0 条评论