为什么会产生输入不匹配的错误?

问题描述 投票:0回答:1

我正在按照springboot中的一个简单教程,尝试使用Drools 7.0.0构建我的第一个规则。但是,我被困在规则构建的第一步,由于.drl文件(定义了我唯一的规则)中的错误,它只是无法实例化我的KieModule.java!

这是我的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()也不起作用,并产生不匹配的输入错误。为什么我的规则无效?我没有线索。请帮助我!

我正在按照springboot中的一个简单教程,尝试使用Drools 7.0.0构建我的第一个规则。但是,我停留在建立规则的第一步,它只是不会实例化我的...

java spring-boot drools rules
1个回答
0
投票

问题出在软件包名称中。

© www.soinside.com 2019 - 2024. All rights reserved.