【问题标题】:Drools - Ability to define rules at runtime?Drools - 能够在运行时定义规则?
【发布时间】:2012-03-14 09:25:48
【问题描述】:

可以在运行时完全动态地定义规则吗? 还要在运行时更改规则集。

例如,

at time = t_1 the ruleset is { R1, R2, R3 } 
at time = t_2 the ruleset is { R1, R3, R4 } 
..... 

R1、R2 是在运行时定义的规则。

谢谢。

【问题讨论】:

    标签: dynamic runtime rules drools


    【解决方案1】:

    是的,Drools 是完全动态的。您可以在运行时添加/删除/替换规则。所有现有会话都会自动更新以保持一致性。检查文档/javadoc:

    http://www.jboss.org/drools/documentation

    在这里你可以看到一些集成测试:

    DynamicRulesTest.java

    【讨论】:

    • 是否有 Drools 7+ 的等价物(我使用的是 7.27.0.Final)。您指向的代码使用内部类/方法(KnowledgeBaseKnowledgeSession),而 KieBase 类没有 addPackage 方法。
    • 有没有人有能力恢复丢失的文件DynamicRulesTest.java?
    • 您答案中的所有链接目前都已损坏
    【解决方案2】:

    在 Drools 5 中,您只需要更改 KnowledgeBase,它将使 KnowledgeSession 隐式保持最新。这就是集成测试告诉你的。您实际上不需要 KAgent。

    【讨论】:

      【解决方案3】:

      阅读文档并查看有关“KnowledeAgent”的测试,了解您可以做什么以及如何做到这一点。

      【讨论】:

        猜你喜欢
        • 2012-06-05
        • 2014-06-25
        • 1970-01-01
        • 2023-03-30
        • 2022-11-30
        • 2019-06-25
        • 1970-01-01
        • 1970-01-01
        • 2017-03-24
        相关资源
        最近更新 更多