【问题标题】:File location when loading rules dynamically in Drools 6在 Drools 6 中动态加载规则时的文件位置
【发布时间】:2016-08-18 17:39:16
【问题描述】:

我正在使用KieFileSystem.write 动态加载 .drl 文件。文件在虚拟文件系统中的写入位置是否重要?我在网上找到的所有教程似乎都建议src/main/resources/myRules.drl,据我所知,写入其他位置的规则(比如myRules.drl)没有被加载。

我想我在某处读到 Drools 会在类路径中扫描 .drl 文件。这是否意味着当显式创建虚拟文件系统或虚拟文件替换物理文件时,它也会从物理文件系统加载文件?

有没有详细解释规则加载是如何工作的?

顺便说一句,我没有在我的项目中使用 maven。

【问题讨论】:

标签: java drools


【解决方案1】:

规则很简单。您需要明确告诉drools 您要加载的资源类型。 ResourceFactory 支持类路径资源、流、文件等

示例

这是一个关于如何使用自定义文件资源获取KieBase 实例的示例。

List<Resource> resources = Arrays.asList(
    // loads file from "real" filesystem
    ResourceFactory.newFileResource("example.drl")
);

KieServices kieServices = Factory.get();
KieFileSystem kfs = kieServices.newKieFileSystem();
resources.forEach(kfs::write);
KieContainer kieContainer =
    kieServices.newKieContainer(
        kieServices.getRepository().getDefaultReleaseId());

KieBaseConfiguration config =
    Factory.get().newKieBaseConfiguration();
KieBase base = kieContainer.newKieBase(config);

【讨论】:

    猜你喜欢
    • 2013-05-07
    • 2014-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多