我是流口水的新手。我只是想了解如何在运行时动态更新规则。 考虑Drools - Ability to define rules at runtime?
我写了一段代码:
while(true){
session = fetchStatefulSession();//Some method to get drools session
system.out.println("enter text");
//Some code to read input
session.fireAllrules();
}
现在,当我提供输入时,我已经更新了.drl规则文件。即便如此,结果也一样,
session.fireAllrules();
像早些时候一样。这就是规则的变化没有反映出来。
我不确定这是使用动态加载规则的正确方法。请建议我
由于 琳
答案 0 :(得分:0)
您的代码仅获取仍在使用相同.drl文件的会话。您的代码也需要包含加载.drl文件。
knowledgeBuilder.add(ResourceFactory.newClassPathResource(rulesFile, YourClass.class), ResourceType.DRL);
但我仍然怀疑它是否会起作用,因为在运行时加载文件很容易出错并且难以维护。