【问题标题】:Why is this generating a mismatched-input error?为什么这会产生不匹配的输入错误?
【发布时间】:2020-01-23 15:56:06
【问题描述】:

我目前正在尝试按照 springboot 中的简单教程使用 Drools 7.0.0 构建我的第一个规则。但是,我被困在规则构建的第一步,它不会实例化我的 KieModule.java,因为我的 .drl 文件中的错误(我唯一的规则在其中定义)!

这是我的 Bean 定义(它在 .buildAll() 方法处中断):

  /**
   * Used by the Drools engine.
   * 
   * @return KieContainer used by Drools.
   */
  @Bean
  @DependsOn({"kStreamJson"})
  public KieContainer kieContainer() {
    KieServices kieServices = KieServices.Factory.get();

    KieFileSystem kieFileSystem = kieServices.newKieFileSystem();
    kieFileSystem.write(ResourceFactory.newClassPathResource(drlFile));
    KieBuilder kieBuilder = kieServices.newKieBuilder(kieFileSystem);
    kieBuilder.buildAll();
    KieModule kieModule = kieBuilder.getKieModule();

    return kieServices.newKieContainer(kieModule.getReleaseId());
  }

这是我的 .drl 文件(问题的根源):

package com.ruleengine;

import com.ruleengine.domain.Alert;
import com.unifiedformat.UnifiedData;
import java.util.*;

global com.ruleengine.domain.Alert alert;
dialect  "mvel"

function Double getMae(UnifiedData unifiedData) { 
    return Double.valueOf(unifiedData.getData().getValue());
}

rule "Check MAE - Scenario 1"
    when
        mae:Double(getMae(UnifiedData(getData().getValue()) > 0.1);
    then
        alert.setAlertMessage("ok");
end

这是我得到的错误:

2020-01-23 10:53:16.098 ERROR 3544 --- [           main] o.d.c.k.builder.impl.AbstractKieModule   : Unable to build KieBaseModel:defaultKieBase
[18,8]: [ERR 102] Line 18:8 mismatched input 'alert' in rule "Check MAE - Scenario 1"
[0,0]: Parser returned a null Package

我尝试了所有我能想到的方法,但我不是 Drools 的专家。无论我放什么字符串而不是警报都会使它中断。甚至 System.out.println() 也不起作用并产生不匹配的输入错误。为什么我的规则无效?我没有线索。请帮帮我!

【问题讨论】:

    标签: java spring-boot drools rules


    【解决方案1】:

    问题出在包名上。

    通过删除我的 .drl 文件的包名,不再出现不匹配输入错误。

    我不知道为什么 Drools 的错误消息不是关于包名,而是关于虚假的不匹配输入。

    另外,我将 Drools 版本从 7.0.0 升级到 7.31

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-17
      • 2023-02-15
      • 2011-01-27
      • 1970-01-01
      • 2013-05-01
      • 1970-01-01
      • 2020-10-11
      相关资源
      最近更新 更多