Drools:mvel和java方言之间的差异

时间:2015-02-12 09:01:59

标签: java drools mvel

作为Drools的新手,我对mvel和java方言之间的差异以及使用它们的相对优缺点感到困惑。

经过一些初步研究后,我发现了一些讨论herehere

除了语法糖之外,还有什么其他差异以及使用mvel而不是java的额外好处?

感谢。

1 个答案:

答案 0 :(得分:4)

MVEL是Apache许可的强大表达式语言(EL),用Java编写,适用于基于Java的应用程序,因此其语法与Java大致类似。

  • MVEL表达式很干净,语法很容易理解。
  • Apache drools使用MVEL模板进行动态代码生成。
  • 与其他EL相比,MVEL引擎性能良好 发动机。

考虑一个例子。

    rule "validate holiday" 
    dialect "mvel"
    dialect "java"
    when
        $h1 : Holiday( month == "july" )
    then
        System.out.println($h1.name + ":" + $h1.month);
    end

方言的目的" mvel"是指向普通旧Java对象(PO​​JO)类的变量的Getter和Setter。考虑上面的例子,其中使用了Holiday类并且在圆括号内(括号)" month"用来。所以用帮助方言" mvel"变量"月"的getter和setter;可以访问。

Dialect" java"用于帮助我们在规则中编写Java代码。这有一个限制或特征。我们不能在"内部使用Java代码。规则的一部分,但我们可以在"然后"中使用Java代码。一部分。

我们还可以声明一个没有$符号的Reference变量$ h1。对此没有限制。将$符号放在变量之前的主要目的是标记POJO类和规则的变量之间的差异。