【问题标题】:Drools won't reload rules after KnowledgeBuilder errors在 KnowledgeBuilder 错误后 Drools 不会重新加载规则
【发布时间】:2015-11-18 09:27:54
【问题描述】:

我正在使用 KnowledgeAgent 和 change-set.xml 来跟踪运行时对规则的任何更改。

使用 JBoss 文档中的标准配置,它通常可以正常工作。 我也设置了knowledgeAgentConfiguration.setProperty("drools.agent.newInstance", "false"); 因此,知识库会随着每次更改而更新。

当规则中的某些更改导致 KnowledgeBuilder 错误时,问题就开始了。 例如。如果我将System.out.println( message ); 更改为System.out.println( message,它当然会导致来自代理的一些错误消息。

但是即使我修复了规则,代理也不会注意到这一点,以及任何进一步的变化。它将继续使用错误前的最后一次正确构建。

这是期望的行为吗?

有没有办法强制代理在出现此类错误后保持跟踪规则?

我使用的是 5.1.1 版

谢谢!

【问题讨论】:

  • 尝试更高版本的 5.x。 - 但似乎“代理”功能从未达到其目标:在 6.x 中不再有 KnowledgeAgent。 - Java(在 java.nio.file 中)有足够的资源来实现(结合 Drools 自己的 Builder API)来编写一个代理,它可以做你认为应该做的事情。 (但是,请允许我说,使用代理通过反复试验来更新规则库并不是一个好策略。)
  • 谢谢。看来,在 5.6.0.Final 版本中,它可以按我的意愿工作。我同意这不是一个好策略,但如果没有它,小错字可能会迫使我重新启动整个应用程序。
  • 在部署 DRL 文件之前,始终可以使用脱机语法检查。在我看来,编写复杂的代码来防范有缺陷的部署就像本末倒置。

标签: java drools drools-flow


【解决方案1】:

正如@laune 建议的那样,我尝试了较新的版本,但在 5.6.0.Final 中似乎不是问题(可能是之前的版本,但我没有检查)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-17
    • 1970-01-01
    • 2013-05-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多