问题描述
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 (将#修改为@)