我正在使用drools專家5.4.0.Final,我動態創建規則DRL的情況下,將其添加到知識庫和解僱規則。 我想在稍後的時間點(在添加DRL後)禁用/啓用規則。要做到這一點,我想刪除從知識庫規則禁用,像這樣:NullPointerException在org.drools.reteoo.ReteooBuilder.removeRule(ReteooBuilder.java:252)
KnowledgeBase sessionBase = kSession.getKnowledgeBase();
sessionBase.removeRule(RULE_PACKAGE_NAME, name);
也能正常工作的第一次。
於是,我再次加入DRL,像這樣啓用規則:
kBuilder.add(ResourceFactory.newByteArrayResource(rule.toDrl().getBytes()),
ResourceType.DRL);
kBase.addKnowledgePackages(kBuilder.getKnowledgePackages());
然後,當我再次關閉,我得到以下異常:
Caused by: java.lang.NullPointerException
at org.drools.reteoo.ReteooBuilder.removeRule(ReteooBuilder.java:259)
at org.drools.reteoo.ReteooRuleBase.removeRule(ReteooRuleBase.java:459)
at org.drools.common.AbstractRuleBase.removeRule(AbstractRuleBase.java:1107)
at org.drools.common.AbstractRuleBase.removeRule(AbstractRuleBase.java:1085)
at org.drools.impl.KnowledgeBaseImpl.removeRule(KnowledgeBaseImpl.java:208)
...
顯然,這個問題已經在早期版本的流口水中被使用過。 任何幫助,非常感謝。謝謝。
如果唯一的區別是記錄規則的名稱,這並不一定指向您的應用程序中的錯誤。這可能是某種競爭條件,而不是日誌記錄本身,而是有助於做更多的工作(日誌記錄)造成的延遲。如果我是你,我會嘗試追蹤它並瞭解發生了什麼。 –
5月我會研究這個 我也觀察到,這是一個特定的情況導致這個 當我創建會話後,我知識庫添加規則,它工作正常 - 沒有例外 當我創建會話第一(當然是有狀態的),然後爲知識庫添加規則,它崩潰。 –