java - 使用单独的 DRL 文件开始流口水

标签 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 - AccessD 的规则文件夹中有一些 drl 文件

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

最佳答案

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

第一:为四个“访问”类别中的每一个创建单独的知识库和单独的 session 。

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

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

关于java - 使用单独的 DRL 文件开始流口水,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32267143/

相关文章:

java - 使用 iText 从 Java 生成 RTF 时,条码字体未在 MS Word 中动态加载

java - Spring RestController 自定义 View 解析器

java - 如何在 drools6 中创建动态显着性

java - java中如何获取ctime?

java - 如何将对象添加到枚举定义的类中?

java - 使用 Drools 规则进行实体验证

java-8 - 如何在 drools 规则中定义和初始化变量

java - 带 TDB 的 Jena 规则引擎

尽管满足条件,BizTalk 规则引擎仍不会触发操作

database - 存储逻辑规则的适当数据结构和数据库模式是什么?