Я использую шаблон Drools для принятия решений, я создал экземпляр класса и передал объекты класса в сеанс K ie, используя insert
В файле drt я попытался сравнить столбцы шаблона с объектами класса и определенными параметрами, которые прошли порог, а затем установка приоритета на основе значения в файле шаблона
Формат файла шаблона (Excel)
Parameter Mountpoint Threshold Severity
Disk /root 80 MINOR
Disk /tmp 90 MAJOR
My class Capacity {
private String component;
private String subComponent;
privat Integer value;
public String getComponent() {
return component;
}
public void setComponent(String component) {
this.component = component;
}
public String getSubComponent() {
return subComponent;
}
public void setSubComponent(String subComponent) {
this.subComponent = subComponent;
}
public Integer getValue() {
return value;
}
public void setValue(Integer value) {
this.value = value;
}
public Capacity()
{
super();
this.component = component;
this.subComponent = subComponent;
this.value = value;
}
}
В другом классе я Я запускаю KieSession и внедряю объекты класса емкости и загружаю файл шаблонов Drool
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
KieSessionConfiguration sessionConfig = KnowledgeBaseFactory.newKnowledgeSessionConfiguration();
sessionConfig.setOption( ClockTypeOption.get( ClockType.PSEUDO_CLOCK.getId() ) );
try {
loadRuleTemplate(DATA_FILE, RULE_TEMPLATE_FILE, "OperationalMeasurement", 2, 1);
} catch (IOException errorMsg) {
log.error(errorMsg.getMessage()); }
InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addPackages(kbuilder.getKnowledgePackages());
KieSession kieSession = kbase.newKieSession(sessionConfig, null);
sessionClock = ksession.getSessionClock();
ksession.insert(Capacity);
ksession.fireAllRules();
ksession.dispose();
файл правил
template header
Parameter
Mountpoint
Threshold
Severity
package com.test.drools;
dialect "java"
template "OperationalMeasurement"
rule "Check_Threshold_@{row.rowNumber}"
ruleflow-group "capacityManagement"
salience 500
when
$capacity: Capacity(component == "@{Parameter}" && subComponent == "@{Mountpoint}" && value >= "@{Threshold}")
then
System.out.println("Thresold cross for Component and Priority is set " + @{Severity}");
end
end template
Когда я запускаю это, компонент обрабатывается как буквальная строка вместо емкости class, и хотя я не получаю никаких ошибок, она просто выводит все содержимое файла drt в консоль. И я, кажется, не получаю заявления Sysout