Drools 5从文件系统加载drl规则文件

时间:2011-02-14 11:25:47

标签: rules drools

我开发了一个自定义规则编辑器,能够创建drl文件并将它们保存在给定目录下的文件系统中。 (例如c:\ savedRules \ rule.drl)。 问题是,一旦保存规则,我需要使用drools引擎运行它。 在我的班级中,我尝试以这种方式加载规则:

KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); 
kbuilder.add(ResourceFactory.newClassPathResource("c:\savedRules\rule.drl"), ResourceType.DRL);

但它不起作用。例外情况是“rule.drl无法打开,因为它不存在”,但它确实存在....

我做错了什么?还有另一种直接从文件系统加载规则的方法吗?

3 个答案:

答案 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);