我必须使用单独的 drl 文件为不同的类启动 drools。
我的第一个代码如下所示:
KieServices ks = KieServices.Factory.get();
KieContainer kContainer = ks.getKieClasspathContainer();
KieSession kSession = kContainer.newKieSession("ksession-rules");
for (AccessA access : listA) {
FactHandle fh = kSession.insert(access);
kSession.fireAllRules(1);
kSession.delete(fh);
}
AccessA - AccessD 的规则文件夹中有一些 drl 文件
如何针对特殊访问触发这些单独的规则?
最佳答案
您有两个选择 - 但请参阅最后一段。
第一:为四个“访问”类别中的每一个创建单独的知识库和单独的 session 。
第二:将四个类别的规则放入四个不同的议程组中,并在插入事实之前确定焦点。
但是,由于来自四个类别的事实是四个不同类 AccessA、AccessB、AccessC 和 AccessD 的对象,因此没有理由过度设计此规则库。模式将反射(reflect)类名称,因此当插入类 AccessA 的事实时,B、C 和 D 的规则将不会被激活。
关于java - 使用单独的 DRL 文件开始流口水,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32267143/