我对 Drools 还很陌生,正在探索 Drools 决策表的功能。我已经下载了 Drools 6.2.0 示例并修改了为决策表提供的示例。因为我希望删除政策条件,如下图所示
这里的策略只需要是结果对象,但我遇到了以下错误。
text=Rule Compilation error policy cannot be resolved or is not a field
我不确定在第一个 ACTION 列下写什么才能使其正常工作,因为我尝试了不同的值,例如策略:策略、策略等。
下面是我收到的上述决策表布局的 drl 输出。
// rule values at C10, header at C5
rule "Pricing bracket_10"
when
Driver(age >= 18, age <= 24, locationRiskProfile == "LOW", priorClaims == "1")
then
policy.setBasePrice(450);
end
我尝试检查文档,但找不到任何方法使其正常工作。请注意,我没有修改示例源代码中的任何内容。仅更改了 Excel 中的决策表布局。
任何指示都会有帮助。
最佳答案
您需要将一个策略类对象绑定(bind)到变量策略。一种可能性是插入一个策略对象,并为其设置一个模式。 DRL 中的规则应如下所示:
rule "Pricing bracket_10"
when
Driver( age >= 18, age <= 24, locationRiskProfile == "LOW", priorClaims == "1")
policy: Policy()
then
policy.setBasePrice(450);
end
在决策表中,您可以使用条件列,如下所示:
CONDITION
policy: Policy()
/*$param*/
match a Policy fact
x
每行都需要一个“x”,或者连接单元格以使用单个“x”。
关于drools - 规则编译错误 Drools 操作列,无法解析变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31993395/