在Drools中,最好将声明的对象留在工作记忆中,或者在完成后立即删除它们。
简化的规则文件作为示例(假设已声明对象等)
rule "get blue results"
when
AllResults
then
/* get blue results from AllResults */
insert(new BlueResults)
end /* is this rule best-practice or does it increase session execution time */
rule "remove AllResults as no longer needed"
when
RedResults
BlueResults
AllResults
then
delete(AllResults)
end
rule "get red results"
when
AllResults
then
/* get red results from AllResults */
insert(new RedResults)
end
{{1}}
我正在研究的解决方案专注于速度,所以如果一种处理对象的方法提供更快的规则运行,那将是优惠的。
我倾向于认为添加额外的规则来清理工作记忆只会增加整个会话的完整时间,但是如果工作记忆更清洁"这是否意味着其他规则运行得更快?
我很欣赏很有可能采用非常低级的方式来解决这些问题,我只是在一个更通用的最佳实践答案之后。 我也意识到很多像这样的问题在很大程度上取决于解决方案本身(我故意模糊不清)但我可以尝试在可能的情况下提供更多信息。