gpt4 book ai didi

java - Drools 文件未找到异常

转载 作者:行者123 更新时间:2023-12-02 10:40:03 25 4
gpt4 key购买 nike

我已经能够成功地从目录 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 变量(在 drools 项目中),但没有成功。

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)并使用所述规则文件运行项目。

最佳答案

您可以按照以下方法从文件系统加载规则文件:

KieServices kieServices = KieServices.Factory.get();
KieFileSystem kfs = kieServices.newKieFileSystem();

File file = new File("path/to/Rule.drl");
org.kie.api.io.Resource resource = kieServices.getResources().newFileSystemResource(file).setResourceType(ResourceType.DRL);
kfs.write(resource);

KieBuilder Kiebuilder = kieServices.newKieBuilder(kfs);
Kiebuilder.buildAll();
KieContainer kieContainer = kieServices.newKieContainer(kieServices.getRepository().getDefaultReleaseId());
KieSession ksession = kieContainer.newKieSession();

关于java - Drools 文件未找到异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52979277/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com