我开发了一个自定义规则编辑器,能够创建drl文件并将它们保存在给定目录下的文件系统中。 (例如c:\ savedRules \ rule.drl)。 问题是,一旦保存规则,我需要使用drools引擎运行它。 在我的班级中,我尝试以这种方式加载规则:
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add(ResourceFactory.newClassPathResource("c:\savedRules\rule.drl"), ResourceType.DRL);
但它不起作用。例外情况是“rule.drl无法打开,因为它不存在”,但它确实存在....
我做错了什么?还有另一种直接从文件系统加载规则的方法吗?
答案 0 :(得分:5)
尝试使用,
FileInputStream fis = new FileInputStream(drlFile);
kbuilder.add(ResourceFactory.newInputStreamResource(fis), ResourceType.DRL);
感谢。
答案 1 :(得分:1)
kbuilder.add(ResourceFactory.newClassPathResource("LoopConditionRules.drl"),ResourceType.DRL);
只需添加此行并将您的drl文件复制到项目的资源文件夹中,当您运行它时,它将自动从项目中找到该文件,无需为您的文件指定特定路径。
尝试这种方式,可能是您可以获得所需的结果。
答案 2 :(得分:0)
尝试以下代码,这样可以。
kbuilder.add(ResourceFactory.newFileResource(drlFileName), ResourceType.DRL);