В настоящее время я пытаюсь создать свое первое правило с помощью Drools 7.0.0, следуя простому руководству в Springboot. Тем не менее, я застрял на первом этапе моего построения правил, он просто не будет создавать экземпляр моего KieModule. java из-за ошибки в моем файле .drl (где определено мое единственное правило)!
Вот мое определение Бина (оно ломается при методе .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 () не работает и выдает несоответствующую ошибку ввода. Почему мое правило недействительно? Я понятия не имею. Пожалуйста, помогите мне!