我正在使用KieFileSystem.write
动态加载.drl文件。在虚拟文件系统中写入文件的位置是否重要?我在网上找到的所有教程似乎都建议src/main/resources/myRules.drl
,据我所知,写入其他位置的规则(比如myRules.drl
)没有加载。
我想我在某地读过Drools扫描.drl文件的类路径。这是否意味着当显式创建虚拟文件系统时,它还会从物理文件系统加载文件,还是虚拟文件取代物理文件?
是否有详细说明规则加载的工作原理?
我没有将maven用于我的BTW项目。
答案 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);