0
我们使用Drools和用户可以更新/编辑规则的界面。那些规则然后被存储(并且版本化)在数据库中。此后的规则是从数据库中再次得到并通过以下方式逐一添加:Drools:如何仅更新特定规则?
for (Rule rule ...) {
knowledgeBuilder.add(ResourceFactory.newByteArrayResource(rule.getRuleContent().getBytes()), ResourceType.DRL);
if (kbuilder.hasErrors()) { throw Error... }
}
kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(knowledgeBuilder.getKnowledgePackages());
我们有几百个规则和规则检查吞吐量也几百规则/秒(2个节点)。随着规则数量的增加,KnowledgeBase更新花费的时间越来越长(编译所有这些规则),并且在此期间不能检查规则。因此,从用户的角度来看,系统仍然处于停滞状态。
似乎不存在选择性刷新规则的可能性 - 这是正确的吗?如果是,那么处理这种情况的最好方法是什么?首先想到的第一个想法是并行使用两个知识库...