0

我是流口水的新手。我只想了解如何在运行时动态更新规则。考虑Drools - 能够在运行时定义规则?

我写了一段代码:

 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();

和以前一样。也就是规则的变化没有体现出来。

我不确定这是正确的使用方式,动态加载规则。请建议我

谢谢查克里

4

1 回答 1

0

您的代码仅获取仍在使用相同 .drl 文件的会话。您的代码还需要包括加载 .drl 文件。

knowledgeBuilder.add(ResourceFactory.newClassPathResource(rulesFile, YourClass.class), ResourceType.DRL);

但是我仍然怀疑它是否会起作用,因为在运行时加载文件很容易出错并且难以维护。

于 2013-05-13T09:33:08.747 回答