Drools 5 загружает файл правил drl из файловой системы - PullRequest
2 голосов
/ 14 февраля 2011

Я разработал собственный редактор правил, способный создавать файлы drl и сохранять их в файловой системе в заданном каталоге.(например, c: \vedRules \ rule.drl).Проблема в том, что после того, как правило сохранено, мне нужно запустить его с движком drools.В моем классе я пытаюсь загрузить правило следующим образом:

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

, но оно не работает.Исключение составляет «rule.drl нельзя открыть, потому что он не существует», но на самом деле он существует…

Что я делаю не так?Есть ли другой способ загрузить правила прямо из файловой системы?

Ответы [ 3 ]

5 голосов
/ 14 февраля 2011

Попробуйте использовать,

FileInputStream  fis = new FileInputStream(drlFile);
kbuilder.add(ResourceFactory.newInputStreamResource(fis), ResourceType.DRL);

Спасибо.

1 голос
/ 24 января 2013
kbuilder.add(ResourceFactory.newClassPathResource("LoopConditionRules.drl"),ResourceType.DRL);

Просто добавьте эту строку и скопируйте свой файл drl в папку ресурсов проекта, когда вы запустите его, он автоматически найдет файл из проекта, и вам не нужно будет указывать конкретный путь для вашего файла.

Попробуйте таким образом, возможно, вы сможете получить требуемый результат.

0 голосов
/ 02 мая 2016

Попробуйте приведенный ниже код, это будет работать.

kbuilder.add(ResourceFactory.newFileResource(drlFileName), ResourceType.DRL);
...