drools_03_dialect
關于 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

浙公網安備 33010602011771號