Я смог успешно прочитать правила из каталога src/main/rules
, и мой проект drools работает просто отлично.
Моя проблема возникает, однако, когда я хочу прочитать набор правил, например, из другого каталога, у меня есть второй проект drools с идентичными правилами.попытка прочитать в правилах из /home/user/Documents/workspace/OtherProject/src/main/ruls/Ruleset.drl
приводит к ошибке
"/home/user/Documents/workspace/DroolsProject/src/main/rules/Ruleset.drl" cannot be opened because it does not exist
Я несколько раз проверял, что файл существует, даже копируя и вставляя вывод из pwd
в мою переменную PATH
(в проекте слюни) без удачи.
private static KnowledgeBase readKnowledgeBase(String ruleSet) throws Exception {
KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder();
builder.add(
ResourceFactory.newClassPathResource(
"/home/user/Documents/workspace/DroolsProject/src/main/rules/Ruleset.drl"),
ResourceType.DRL);
KnowledgeBuilderErrors errors = builder.getErrors();
if (errors.size() > 0) {
for (KnowledgeBuilderError error : errors)
System.err.println(error);
throw new IllegalArgumentException("Could not parse knowledge :(");
}
KnowledgeBase base = KnowledgeBaseFactory.newKnowledgeBase();
base.addKnowledgePackages(builder.getKnowledgePackages());
return base;
}
Это метод, который я использую для загрузки правил.
Конечная цель - загрузить файл правила на сервер (возможно, на /tmp
) и запустить проект с использованием указанного файла правила.