85.10. イベントのメモリー管理
ストリームモードでは、デシジョンエンジンは自動メモリー管理を使用して、KIE セッションに保存されているイベントを維持します。デシジョンエンジンは、時間制約が原因でルールと一致しなくなったイベントを KIE セッションから取り除き、取り除かれたイベントが使用していたリソースを解放します。
デシジョンエンジンは、明示的な有効期限または推論された有効期限のいずれかを使用して、古いイベントを取り消します。
明示的な有効期限: デシジョンエンジンは、
@expires
タグを宣言するルールで明示的に有効期限が切れるよう設定されているイベントを削除します。有効期限が明示的な DRL ルールスニペット
declare StockPoint @expires( 30m ) end
この例のルールは、
StockPoint
イベントが 30 分後に有効期限となるよう設定し、他のルールがイベントを使用しない場合は KIE セッションから削除するよう設定します。推論された有効期限: デシジョンエンジンは、ルールの時間制約を解析することで、特定のイベントに関する有効期限の補正値を暗黙的に算出できます。
時間制約のある 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 ベース全体を分析して、すべてのイベントタイプの補正値を見つけ、他のルールが削除を保留しているイベントを使用しないようにします。暗黙的な有効期限が明示的な有効期限の値と衝突するたびに、デシジョンエンジンはこの 2 つのうちの大きい方の時間枠を使用して、イベントをより長く保存します。