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(配置);
也许这会有帮助也许这会有帮助