在DROOLS中动态加载规则

时间:2013-05-13 09:18:56

标签: java drools

我是流口水的新手。我只是想了解如何在运行时动态更新规则。 考虑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();
像早些时候一样。这就是规则的变化没有反映出来。

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

由于 琳

1 个答案:

答案 0 :(得分:0)

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

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

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