使用单独的 DRL 文件启动 drools
Start drools with separate DRL files
我必须使用单独的 drl 文件为不同的 类 开始流口水。
我的第一个代码如下:
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 文件
如何为特殊访问触发这些单独的规则?
您有两个选择 - 请参阅最后一段。
首先:为四个 "access" 类别中的每一个创建单独的知识库和单独的会话。
第二:将四个类别的规则放入四个不同的议程组中,并在插入事实之前设置焦点。
但由于来自四个类别的事实是四个不同 classes AccessA、AccessB、AccessC 和 AccessD 的对象,因此没有理由过度设计此规则库。模式将反映 class 名称,因此当插入 class AccessA 的事实时,不会激活 B、C 和 D 的规则。
我必须使用单独的 drl 文件为不同的 类 开始流口水。
我的第一个代码如下:
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 文件
如何为特殊访问触发这些单独的规则?
您有两个选择 - 请参阅最后一段。
首先:为四个 "access" 类别中的每一个创建单独的知识库和单独的会话。
第二:将四个类别的规则放入四个不同的议程组中,并在插入事实之前设置焦点。
但由于来自四个类别的事实是四个不同 classes AccessA、AccessB、AccessC 和 AccessD 的对象,因此没有理由过度设计此规则库。模式将反映 class 名称,因此当插入 class AccessA 的事实时,不会激活 B、C 和 D 的规则。