2010-11-19 20 views
4

我试图使用Drools作为语法映射框架的语法关系的规则引擎。规则库现在甚至超过了5000条规则,并且会得到扩展。在使用Drools时,每次程序运行时,读取包含规则和创建知识库的drl文件都需要很长时间。有没有办法一次创建知识库并将其保存为一些可以快速加载的持久格式,只有在更改后才能重新生成知识库?快速加载drools知识库

回答

2

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

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

我已经使用这一点,取得了一些成功,减少1分钟30加载时间下降到15-20秒左右。此外,它也减少了堆/烫发的要求。

检查API的确切方法。

0

我的第一个想法是尽可能长时间保持知识基础。除非您从不同的规则集合创建多个知识库,并且可能的组合太多,否则请牢记这些知识库。在我工作的一个应用程序中,一个知识库具有所有规则,因此我们将它视为单例。

但是,如果这是不可能的,或者您的应用程序不是那么长时间运行,我不知道Drools本身提供了任何加快速度的方法。通过调试器运行Drools 5.0项目,我发现KnowledgeBase Drools为我提供了Serializable。我想,反序列化KnowledgeBase比重新解析规则要快。但要小心设计你的应用程序!您使用接口是出于某种原因,实现可能会在没有警告的情况下更改