作为Drools的新手,我对mvel和java方言之间的差异以及使用它们的相对优缺点感到困惑。
除了语法糖之外,还有什么其他差异以及使用mvel而不是java的额外好处?
感谢。
答案 0 :(得分:4)
MVEL是Apache许可的强大表达式语言(EL),用Java编写,适用于基于Java的应用程序,因此其语法与Java大致类似。
考虑一个例子。
rule "validate holiday"
dialect "mvel"
dialect "java"
when
$h1 : Holiday( month == "july" )
then
System.out.println($h1.name + ":" + $h1.month);
end
方言的目的" mvel"是指向普通旧Java对象(POJO)类的变量的Getter和Setter。考虑上面的例子,其中使用了Holiday类并且在圆括号内(括号)" month"用来。所以用帮助方言" mvel"变量"月"的getter和setter;可以访问。
Dialect" java"用于帮助我们在规则中编写Java代码。这有一个限制或特征。我们不能在"内部使用Java代码。规则的一部分,但我们可以在"然后"中使用Java代码。一部分。
我们还可以声明一个没有$符号的Reference变量$ h1。对此没有限制。将$符号放在变量之前的主要目的是标记POJO类和规则的变量之间的差异。