82.10. 事件的内存管理
在流模式中,决策引擎使用自动内存管理来维护存储在 KIE 会话中的事件。决策引擎可以从 KIE 会话中重新遍历任何规则的事件,这些事件因为临时限制而不再匹配,并释放重新遍历事件保存的任何资源。
决策引擎使用显式或推断的过期事件来重新遍历过时的事件:
显式过期 : 决策引擎移除在声明
@expires标签的规则中明确设置的事件:带有显式过期的 DRL 规则片断
declare StockPoint @expires( 30m ) end这个示例规则将任何
StockPoint事件设置为 30 分钟后过期,并在没有其他规则使用事件时从 KIE 会话中删除。Inferred expiration: 决策引擎可以通过分析规则中的 temporal 约束来隐式计算给定事件的过期偏移:
带有临时约束的 DRL 规则
rule "Correlate orders" when $bo : BuyOrder($id : id) $ae : AckOrder(id == $id, this after[0,10s] $bo) then // Perform an action. end在本例中,决策引擎会自动计算每当出现
BuyOrder事件时,决策引擎需要存储事件最多 10 秒并等待匹配的AckOrder事件。10 秒后,决策引擎会推断到期,并从 KIE 会话中删除事件。AckOrder事件只能匹配现有的BuyOrder事件,因此如果没有匹配项并立即删除事件,则决策引擎会推断过期。决策引擎分析整个 KIE 基础,以查找每个事件类型的偏移,并确保没有其他规则使用正在等待移除的事件。每当带有显式过期值的隐式过期时,决策引擎会使用两个更大的时间帧来存储事件。