4

我正在尝试使用 Drools 作为语法关系到语义映射框架的规则引擎。即使是现在,规则库也超过 5000 条规则,并将得到扩展。目前在使用 Drools 时,每次运行程序时,读取包含规则的 drl 文件和创建知识库都会花费大量时间。有没有办法创建一次知识库并将其保存为某种持久格式,该格式可以通过仅在进行更改时重新生成知识库的选项快速加载?

4

2 回答 2

1

是的,drools 可以将一个知识库序列化到外部存储,然后再次加载这个序列化的知识库。

因此,您需要一个从 drl 加载、编译、序列化的循环。然后是使用序列化版本的第二个周期。

我已经成功地使用了它,将 1 分钟 30 的加载时间减少到大约 15-20 秒。此外,它还减少了您的堆/永久生成需求。

检查 API 以获取确切的方法。

于 2010-11-30T04:40:45.377 回答
0

我的第一个想法是尽可能长时间地保留知识库。除非您从不同的规则集创建多个知识库,并且可能的组合太多,否则请坚持使用这些知识库。在我处理的一个应用程序中,一个知识库包含所有规则,因此我们将其视为单例。

但是,如果这是不可能的,或者您的应用程序运行时间不长,我不知道 Drools 本身提供了任何加速它的方法。通过调试器运行 Drools 5.0 项目,我看到知识库 Drools 给我的是可序列化的。我想反序列化知识库比重新解析规则要快。但是要小心围绕这个设计你的应用程序!您使用接口是有原因的,并且实现可能会在没有警告的情况下更改。

于 2010-11-22T05:14:30.953 回答