Drools:如何在使用 PackageDescr 生成规则时为变量 "from" 预定义方法赋值?

Drools : how to assign value to variable "from" predefined method when using PackageDescr to generate rule?

如何使用 PackageDescr 在我的规则中生成类似的内容?

$var: Number (doubleValue > 100 ) from myPredefinedFunction()

我尝试了以下方法:

PatternDescr pt = new PatternDescr("Number","$var");
RelationalExprDescr ex = new RelationalExprDescr(">", false, null, new ExprConstraintDescr("myPredefinedFunction()"), new ExprConstraintDescr("100"));
pt.addConstraint(ex);

但这就是我得到的:

 $var : Number( myPredefinedFunction() > 100 )  

您正在尝试将 myPredefinedFuntion() 设置为约束条件。约束是括号之间流口水声明的一部分,例如。 MyObject( foo == "bar" ) ... foo == "bar" 是一个约束条件。

相反,您需要使用 setSource method. This is the 'from' part of the declaration. This method takes a instance of a PatternSourceDescr subclass -- likely a FromDescr 为这个特定场景设置源。

(或者,您可能需要 setResource 而不是 setSource。使用仅供内部使用的 API 的问题在于它们没有记录,并且如有更改,恕不另行通知。我强烈建议不要沿着这条路走下去。)