使用单独的 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 的规则。