在Drools中存储大型参考数据对象

时间:2015-01-28 13:31:14

标签: memory drools

我正在寻找一种在Drools中长时间存储大型物体的方法(即不像在会话中添加和删除的事实)。

我读过Drools使用知识库和会话(无状态和有状态),知识库包含应用程序知识定义,但没有运行时数据。

例如,我需要存储一个大字典(不会更改,但会被多个连续会话引用),并将对象添加到工作内存中并根据此字典进行检查规则被解雇了,最好将其存储在哪里?

一切都只是进入工作记忆(在这种情况下,我每次打开新会话时都需要将字典加载到内存中吗?)或者我只是缺少一个关键的Drools基本原则?全局变量会对此有好处吗?

1 个答案:

答案 0 :(得分:2)

不确定有多大"大"是(当然总是性能权衡),但您也可以使用插入的对象从数据库(/缓存)中提取并让规则通过方法访问值。

 when 
    $y : AnObject (name == "car", lookupPrice > 10000 );

其中AnObject.getLookupPrice()是一种从缓存/存储的字典中提取值的方法。

如果对象太大,你也可以编码(作为一个对象)并以同样的方式使用它。