我是Drools的新手.我正在创建一个规则,但我得到一个编译时错误
"字段不可见".
我试图用Jboss示例检查,他们使用方言"mvel".它汇编了.我不懂方言.那是什么dialect=mvel?
Stu*_*tLC 12
mvel或MVFLEX表达式语言 具有丰富的语法,其中的许多允许比更简洁和表现的代码(以下必要)java,例如
get()ters/set()ters的简写(例如封装私有字段)property(类似于.Net中的VB或C#属性)即.代替
myObject.setSomeField("SomeValue");
int x = myObject.getSomeIntField();
Run Code Online (Sandbox Code Playgroud)
您可以使用语法(请注意细微的大小写切换):
myObject.someField = "SomeValue"
x = myObject.someIntField // Type inferrence
Run Code Online (Sandbox Code Playgroud)
return语句是可选的(在Scala等许多函数语言中都有一个约定),分号也是如此,除非每行有多个语句:x // i.e. return x;
Run Code Online (Sandbox Code Playgroud)
foos = {2, 4, 6, 8, 10}
foos[3] // foos.get(3)
Run Code Online (Sandbox Code Playgroud)
bars = ["a" : "Apple", "b" : "Basket"] // Hashmap, with put
bars["a"]
bars.a // Similar to dynamically typed object e.g. in javascript, if key is a string.
Run Code Online (Sandbox Code Playgroud)
foo.?bar.baz // if (foo.bar != null) { return foo.bar.baz; } else { return null; }
Run Code Online (Sandbox Code Playgroud)
基于
Drools JBoss 规则 5.0 开发人员指南
方言用于指定条件或结果中的任何代码表达式的语法。默认值是 Java。Drools 目前支持另一种方言,称为 mvel。
具体而言,mvel 是一种用于基于 Java 的应用程序的表达式语言。它基于 Java 语法。有关 mvel 的更多信息
tec*_*504 -1
我发现了一些关于这个的东西。我与那个分享。Drools 支持 Java 或 MVEL 脚本语言。要获取对象属性值。例如,斐波那契有 bean 并具有多个属性,即序列
rule Recurse
salience 10
when
not ( Fibonacci ( sequence == 1 ) )
f : Fibonacci ( value == -1 )
then
insert( new Fibonacci( f.sequence - 1 ) );
System.out.println( "recurse for " + f.sequence ); end
Run Code Online (Sandbox Code Playgroud)
我们需要检查如果序列==1则值为-1。序列值被设置为斐波那契对象。我们基于MVEL或java检查值。MVEL是Java的超集。