使用单独的DRL文件启动drools

时间:2015-08-28 08:58:16

标签: java drools rule-engine rule

我必须使用单独的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的规则文件夹中有一些drl文件 - AccessD

如何针对特殊访问触发这些单独的规则?

1 个答案:

答案 0 :(得分:1)

您有两种选择 - 但请参阅最后一段。

首先:为四个"访问"中的每一个创建单独的知识库和单独的会话。类别。

第二:将四个类别的规则分为四个不同的议程组,并在插入事实之前设定焦点。

但由于这四个类别的事实是四个不同类别AccessA,AccessB,AccessC和AccessD的对象,因此没有理由过度设计此规则库。模式将反映类名,因此当插入类AccessA的事实时,不会激活B,C和D的规则。