我有一个规则模板(不是基于决策表的),它有一个对象的条件(也就是约束)。当通过Drools的对象编译器编译规则模板时,应该根据为该规则模板设置的变量/参数来填充该条件。下面的示例显示了我正在尝试做的事情--但遗憾的是,这不能编译。错误消息没有解释,后续的空指针异常是结果。
rule "variable condition"
when
Person ( @{condition} )
then
// do something...
end在java端,变量部分随后被传递给Drools对象编译器,如下所示:
String condition = "id == 42";
String compiledRule = objectDataCompiler.compile(data, ...或类似于下一个示例,显示了连接多个可接受值的条件运算符:
String condition = "(id == 42) || (id == 52)";
String compiledRule = objectDataCompiler.compile(data, ...即使是java端代码的第一个示例,规则模板也不会编译。
如何设置一个有效的模板化规则来实现这种可变条件?
发布于 2018-03-28 16:36:18
规则模板用于动态更新规则。定义规则的格式是通过创建一个条件,然后使用Condition类的方法定义规则来完成的。例如,
Rule highValueOrderRule = new Rule();
Condition highValueOrderCondition = new Condition();
highValueOrderCondition.setField("price");
highValueOrderCondition.setOperator(Condition.Operator.GREATER_THAN);
highValueOrderCondition.setValue(5000.0);
// In reality, you would have multiple rules for different types of events.
// The eventType property would be used to find rules relevant to the event
highValueOrderRule.setEventType(Rule.eventType.ORDER);
highValueOrderRule.setCondition(highValueOrderCondition);规则模板在此blog中进行了精美的解释
发布于 2019-01-14 14:21:34
你可以参考我在搜索如何使用模板定义规则的类似问题时找到的this github存储库。对我来说很有吸引力。
https://stackoverflow.com/questions/49524153
复制相似问题