drools_03_dialect

本文详细介绍了Drools规则引擎中的两种方言——Java和MVEL。默认方言为Java,推荐使用Java方言以简化维护。MVEL方言作为Java的超集,允许直接操作POJO对象的属性,包括私有属性。文章通过Java和MVEL的实际规则示例,展示了它们在RHS部分的语法差异,并强调了dialect属性只影响RHS,不影响LHS。
摘要由CSDN通过智能技术生成

关于 dialect 属性

  • drools 支持两种dialect, 即 javamvel
  • 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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值