关于 dialect 属性
- drools 支持两种dialect, 即
java和mvel - dialect 缺省为
java, 当然我们也推荐统一使用javadialect, 以降低维护成本. - 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
本文详细介绍了Drools规则引擎中的两种方言——Java和MVEL。默认方言为Java,推荐使用Java方言以简化维护。MVEL方言作为Java的超集,允许直接操作POJO对象的属性,包括私有属性。文章通过Java和MVEL的实际规则示例,展示了它们在RHS部分的语法差异,并强调了dialect属性只影响RHS,不影响LHS。
1755

被折叠的 条评论
为什么被折叠?



