Java DROOLS中规则的动态加载

Java DROOLS中规则的动态加载,java,drools,Java,Drools,我不太会流口水。我只是想了解如何在运行时动态更新规则。 考虑到 我写了一段代码: while(true){ session = fetchStatefulSession();//Some method to get drools session system.out.println("enter text"); //Some code to read input session.fireAllrules(); } 现在,当我给出输入时,我已经更新了.drl规

我不太会流口水。我只是想了解如何在运行时动态更新规则。 考虑到

我写了一段代码:

 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();
和早些时候一样。也就是说,规则的变化没有反映出来

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

谢谢
Chakri

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

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

但我仍然怀疑它是否有效,因为在运行时加载文件很容易出错,并且很难维护

感谢Mawia,但是高可用性预期业务应用程序不是通过它来更新其业务逻辑流吗?或者他们只是停止服务器->更新规则->然后去启动服务器?请帮助我了解drools是如何用来改变业务流程的。谢谢Chakri。如果您需要动态drools,请选择drools Guvnor。在Guvnor中设置整个规则很复杂,但如果这是确切的要求,它可能会很有用。KnowledgeAgent可以在Guvnor通过发布规则来更改规则时不断更新规则。