如何解决尝试使用流口水创建规则并在运行时触发,但不起作用
package com.sample;
import org.drools.core.SessionConfiguration;
import org.drools.core.base.RuleNameEqualsAgendaFilter;
import org.kie.api.KieServices;
import org.kie.api.builder.*;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;
import org.kie.api.runtime.KieSessionConfiguration;
import java.io.StringReader;
import java.nio.file.Files;
import java.nio.file.Paths;
public class Test {
public test() {
}
public void fireRules(Object fact) throws Exception{
KieServices ks = KieServices.Factory.get();
KieRepository kr = ks.getRepository();
KieFileSystem kfs = ks.newKieFileSystem();
KieSessionConfiguration conf= SessionConfiguration.newInstance();
String path ="test.drl";
String drl = new String(Files.readAllBytes(Paths.get(path)));
kfs.write("../resources/com/sample/rules/simple.drl",ks.getResources().newReaderResource( new StringReader(drl) ));
KieBuilder kb = ks.newKieBuilder(kfs);
kb.buildAll();
if (kb.getResults().hasMessages(Message.Level.ERROR)) {
throw new RuntimeException("Build Errors:\n" + kb.getResults().toString());
}
KieContainer kContainer = ks.newKieContainer(kr.getDefaultReleaseId());
KieSession kSession = kContainer.newKieSession(conf);
kSession.insert(fact);
Test t = new test();
kSession.insert(t);
System.out.println(kSession.fireAllRules());
return;
}
}
以上功能未触发规则
规则“ Rule 01”
什么时候
评估(1 == 1)
然后
System.out.println(“ Rule 01 Works”);
结束
以上是规则文件。
我想在运行时定义规则,但是上面实现的代码并未触发规则。还有其他方法可以创建和部署规则。
预先感谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。