2010-11-19 23 views
4

我試圖使用Drools作爲語法映射框架的語法關係的規則引擎。規則庫現在甚至超過了5000條規則,並且會得到擴展。在使用Drools時,每次程序運行時,讀取包含規則和創建知識庫的drl文件都需要很長時間。有沒有辦法一次創建知識庫並將其保存爲一些可以快速加載的持久格式,只有在更改後才能重新生成知識庫?快速加載drools知識庫

回答

2

是的,drools可以將知識庫序列化到外部存儲,然後再次加載該序列化的知識庫。

因此,您需要一個從drl加載,編譯,序列化的循環。然後是使用序列化版本的第二個週期。

我已經使用這一點,取得了一些成功,減少1分鐘30加載時間下降到15-20秒左右。此外,它也減少了堆/燙髮的要求。

檢查API的確切方法。

0

我的第一個想法是儘可能長時間保持知識基礎。除非您從不同的規則集合創建多個知識庫,並且可能的組合太多,否則請牢記這些知識庫。在我工作的一個應用程序中,一個知識庫具有所有規則,因此我們將它視爲單例。

但是,如果這是不可能的,或者您的應用程序不是那麼長時間運行,我不知道Drools本身提供了任何加快速度的方法。通過調試器運行Drools 5.0項目,我發現KnowledgeBase Drools爲我提供了Serializable。我想,反序列化KnowledgeBase比重新解析規則要快。但要小心設計你的應用程序!您使用接口是出於某種原因,實現可能會在沒有警告的情況下更改