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更新花費的時間越來越長(編譯所有這些規則),並且在此期間不能檢查規則。因此,從用戶的角度來看,系統仍然處於停滯狀態。
似乎不存在選擇性刷新規則的可能性 - 這是正確的嗎?如果是,那麼處理這種情況的最好方法是什麼?首先想到的第一個想法是並行使用兩個知識庫...