drools - 规则编译错误 Drools 操作列,无法解析变量

标签 drools

我对 Drools 还很陌生,正在探索 Drools 决策表的功能。我已经下载了 Drools 6.2.0 示例并修改了为决策表提供的示例。因为我希望删除政策条件,如下图所示

Decision Table layout

这里的策略只需要是结果对象,但我遇到了以下错误。

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/

相关文章:

java - KieBuilderImpl.buildAll 因 NullPointerException 失败

scala - 帮助 Drools 与 Scala 集成

java - 什么可以在序列化和存储在 Jarfile 中时修改 SerialVersionUID?

java - 如何根据逻辑动态生成前端验证

jboss - 无法在 Drools Workbench 中使用 docker-compose "see"KIE 服务器

流口水时出现错误 : handle not found for object is it in working memory

tomcat - "java.lang.RuntimeException: Cannot find KieModule"在使用 Tomcat 设置 Drool 中

java - Drools DRL 中的对象传递问题

java - 如何将规则应用于 session 中对象的所有属性?

java - JBoss Drools 要求