在Drools 6中动态加载规则时的文件位置

时间:2016-08-18 17:39:17

标签: java drools

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

我想我在某地读过Drools扫描.drl文件的类路径。这是否意味着当显式创建虚拟文件系统时,它还会从物理文件系统加载文件,还是虚拟文件取代物理文件?

是否有详细说明规则加载的工作原理?

我没有将maven用于我的BTW项目。

1 个答案:

答案 0 :(得分:0)

规则很简单。您需要明确告诉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);