Drools - 能够在运行时定义规则?
Posted
技术标签:
【中文标题】Drools - 能够在运行时定义规则?【英文标题】:Drools - Ability to define rules at runtime? 【发布时间】: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 是在运行时定义的规则。
谢谢。
【问题讨论】:
【参考方案1】:是的,Drools 是完全动态的。您可以在运行时添加/删除/替换规则。所有现有会话都会自动更新以保持一致性。检查文档/javadoc:
http://www.jboss.org/drools/documentation
在这里你可以看到一些集成测试:
DynamicRulesTest.java
【讨论】:
是否有 Drools 7+ 的等价物(我使用的是 7.27.0.Final)。您指向的代码使用内部类/方法(KnowledgeBase
和 KnowledgeSession
),而 KieBase
类没有 addPackage
方法。
有没有人有能力恢复丢失的文件DynamicRulesTest.java?
您答案中的所有链接目前都已损坏【参考方案2】:
在 Drools 5 中,您只需要更改 KnowledgeBase,它将使 KnowledgeSession 隐式保持最新。这就是集成测试告诉你的。您实际上不需要 KAgent。
【讨论】:
【参考方案3】:阅读文档并查看有关“KnowledeAgent”的测试,了解您可以做什么以及如何做到这一点。
【讨论】:
以上是关于Drools - 能够在运行时定义规则?的主要内容,如果未能解决你的问题,请参考以下文章