#drools
#drools
Вопрос:
Как я могу сгенерировать что-то подобное в моем правиле, используя 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 )
Ответ №1:
Вы пытаетесь установить myPredefinedFuntion()
как ограничение. Ограничения являются частью объявления drools между круглыми скобками, например. MyObject( foo == "bar" )
… это foo == "bar"
ограничение.
Вместо этого вам нужно установить источник с помощью setSource
метода. Это часть объявления «из». Этот метод использует экземпляр PatternSourceDescr
подкласса — вероятно, a FromDescr
для данного конкретного сценария.
(В качестве альтернативы, вам может понадобиться setResource
вместо setSource
. Проблема с использованием только внутренних API заключается в том, что они не документированы и могут быть изменены без предварительного уведомления. Я настоятельно рекомендую не идти по этому пути.)