bcquality/microsoft/knowledge/performance/avoid-growing-globals-in-singleinstance-subscribers.good.al
Jesper Schulz-Wedde 78eeb86a37 Promote performance knowledge from community to Microsoft layer
Pure git-mv relocation of all 7 performance articles from community/knowledge/performance/ to microsoft/knowledge/performance/. No content changes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-25 14:03:39 +02:00

28 lines
792 B
AL

codeunit 50100 "Event Audit Buffer"
{
SingleInstance = true;
var
RecentEventIds: List of [Guid];
MaxBuffered: Integer;
trigger OnRun()
begin
MaxBuffered := 50;
end;
[EventSubscriber(ObjectType::Table, Database::"Sales Header", OnAfterInsertEvent, '', false, false)]
local procedure OnAfterInsertSalesHeader(var Rec: Record "Sales Header")
begin
// Bounded cache: drop the oldest entry when the cap is reached.
RecentEventIds.Add(Rec.SystemId);
if RecentEventIds.Count() > MaxBuffered then
RecentEventIds.RemoveAt(1);
end;
procedure ResetAtBusinessProcessBoundary()
begin
// Explicit reset point at a natural boundary in the workflow.
Clear(RecentEventIds);
end;
}