2017-06-06 174 views
0

我正在努力動態更新規則。我有調度程序每隔一小時從DB中選擇一次規則。要求是使用從數據庫讀取的新規則完全丟棄先前加載的規則。Drools動態更新規則

目前我已初始化文件系統,並且每次調度程序每次讀取規則時都會重新初始化。

private KieServices kieServices = KieServices.Factory.get(); 
private KieFileSystem kieFileSystem = kieServices.newKieFileSystem(); 

public reinitialize() { 
    kieServices = KieServices.Factory.get(); 
    kieFileSystem = kieServices.newKieFileSystem(); 
} 

但我不確定這是否是一種好方法。我從Drools文檔中讀到的是,規則被編寫爲帶有POM文件的庫。我不確定這種方法是否會以大量的內存文件系統結束,並且最終系統會很慢。

有人可以建議正確的方法來動態地用新規則替換舊規則嗎?

回答

0

要在運行時動態加載/更新規則,您可以使用KieScanner API。其基於maven的方法,一旦更新kjar可用,Maven倉庫客戶端將選擇最新版本的kjar並更新規則將被執行。有關此方法的更多詳細信息,請通過document