(Drools newbie here)我一直在寻找将对象(事实)加载到工作内存中并通过规则修改它们的方法。从我到目前为止发现的情况来看,我认为我应该在规则后果中使用“修改”指令,但却找不到相关内容。我还遇到了一个使用modifyObject的链接,该对象假定需要2个参数,将旧对象换成新对象[http://legacy.drools.codehaus.org/Working+Memory]。
考虑到我正在使用Scala对象(即不可变),这是一种方法(缩回旧对象,插入新对象)?如果是这样,任何人都可以提供此类代码的示例吗?
答案 0 :(得分:1)
我认为最好使用带有两个参数的update调用,即使你必须检索事实句柄:
when
$s: Sale(...)
then
Sale s = new Sale( $s,... );
update( kcontext.getKieRuntime().getFactHandle( $s ), s );
end
删除和插入可能会导致网络中的工作多于更新。
请注意,当修改不可用时,无法使用其他Drools功能。使用功能scala结合使用生产规则系统中的事实更新,该系统依赖于创建新激活的事实修改,这是一种相互矛盾的方法。