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

Java 在Drools 6中动态加载规则时的文件位置,java,drools,Java,Drools,我正在使用KieFileSystem.write动态加载.drl文件。在虚拟文件系统中写入文件的位置是否重要?我在网上找到的所有教程似乎都建议src/main/resources/myRules.drl,而且据我所知,写入其他位置的规则(比如myRules.drl)都没有加载 我想我在某个地方读到Drools扫描类路径中的.drl文件。这是否意味着在显式创建虚拟文件系统时,它也会从物理文件系统加载文件,还是虚拟文件系统会替换物理文件系统 是否有详细说明规则加载是如何工作的 顺便说一句,我的项目没

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

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

是否有详细说明规则加载是如何工作的


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

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

示例

下面是一个关于如何使用自定义文件资源获取
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);
List resources=Arrays.asList(
//从“真实”文件系统加载文件
ResourceFactory.newFileResource(“example.drl”)
);
KieServices KieServices=Factory.get();
KieFileSystem kfs=kieServices.newKieFileSystem();
resources.forEach(kfs::write);
基辅容器基辅容器=
kieServices.newKieContainer(
kieServices.getRepository().getDefaultReleaseId());
KieBaseConfiguration配置=
Factory.get().newKieBaseConfiguration();
KieBase=kieContainer.newKieBase(配置);

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

示例

下面是一个关于如何使用自定义文件资源获取
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);
List resources=Arrays.asList(
//从“真实”文件系统加载文件
ResourceFactory.newFileResource(“example.drl”)
);
KieServices KieServices=Factory.get();
KieFileSystem kfs=kieServices.newKieFileSystem();
resources.forEach(kfs::write);
基辅容器基辅容器=
kieServices.newKieContainer(
kieServices.getRepository().getDefaultReleaseId());
KieBaseConfiguration配置=
Factory.get().newKieBaseConfiguration();
KieBase=kieContainer.newKieBase(配置);
也许这会有帮助也许这会有帮助