Drools功能

Ful*_*ara 7 java function drools

最近我正在使用drools,我想对某些对象进行一些特殊检查.我需要when在规则部分使用函数,但是我收到了错误.例:

function boolean newFunction(int a){
  if(a>0)
    return true;
  else
    return false;
}

rule "new rule"
salience 100
dialect "mvel"
when
  eval(newFunction(1))
then
  System.out.println("OK");
end
Run Code Online (Sandbox Code Playgroud)

我得到的错误总是:

unable to resolve method using strict-mode: java.lang.Object.newFunction(java.lang.Integer)
Run Code Online (Sandbox Code Playgroud)

drools是否没有支持when部分中的功能?

谢谢!

Aug*_*sto 11

最简洁的答案是不.

这是因为事实需要在工作记忆中.

你可以做的是,有一个规则,从工作内存中获取所有类型的某个类,在then部分中应用一个函数,并将新值插入工作内存中.

编辑

这个答案最初发布于2012年,并没有更多相关性,因为新版本的drools支持该when条款的功能.