Dynamic Drools动态更新规则

Dynamic Drools动态更新规则,dynamic,drools,rule-engine,Dynamic,Drools,Rule Engine,我正在研究动态更新规则的要求。我有一个调度器,它每一小时从数据库中选择一次规则。要求是使用从DB读取的新规则集完全丢弃以前加载的规则 目前,我已经初始化了文件系统,并且每当调度器每次读取规则时,文件系统都会重新初始化 private KieServices kieServices = KieServices.Factory.get(); private KieFileSystem kieFileSystem = kieServices.newKieFileSystem(); public r

我正在研究动态更新规则的要求。我有一个调度器,它每一小时从数据库中选择一次规则。要求是使用从DB读取的新规则集完全丢弃以前加载的规则

目前,我已经初始化了文件系统,并且每当调度器每次读取规则时,文件系统都会重新初始化

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

public reinitialize() {
    kieServices = KieServices.Factory.get();
    kieFileSystem = kieServices.newKieFileSystem();
}
但我不确定这是否是一个好办法。我从Drools文档中读到的是,这些规则是作为带有POM文件的库编写的。我不确定这种方法是否会以大量的内存文件系统结束,最终系统会非常慢


有人能提出用新规则动态替换旧规则的正确方法吗?

要在运行时动态加载/更新规则,可以使用KieScanner API。它基于maven的方法,一旦更新后的kjar在maven存储库中可用,客户端将选择最新版本的kjar,并执行更新后的规则。查看此方法的更多详细信息。

链接抛出404。似乎页面中的页面不再可用