2017-06-06 172 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