WF4.0 持久化架構核心:InstanceStore (抽象存儲)、PersistenceParticipant (資料收集)、SqlWorkflowInstanceStore (SQL Server 實作)。持久化讓長期執行工作流能卸載記憶體、跨進程/機器恢復,是企業級應用關鍵能力。
僅持久化未卸載時,實例被擁有者鎖定。嘗試由非擁有者載入會拋出 InstanceLockedException。InstanceLockedExceptionAction 可設定重試策略 (NoRetry/BasicRetry/AggressiveRetry)。
CacheMetadata 被調用PersistableIdle → Idle → Unloaded
完成時:Completed → Unloaded
腳本位於:%WinDir%\Microsoft.NET\Framework\v4.0.xxxxx\SQL\en\
SqlWorkflowInstanceStoreSchema.sqlSqlWorkflowInstanceStoreLogic.sql
ConnectionString、InstanceCompletionAction (DeleteAll/DeleteNothing)、InstanceEncodingOption (None/GZip)、InstanceLockedExceptionAction、HostLockRenewalPeriodPromote 方法:將變數提升為可查詢的推廣屬性app.PersistableIdle = e => PersistableIdleAction.Unload;
app.Idle += (s,e) => Console.WriteLine($"Idle: {e.InstanceId}");
app.Unloaded += (s,e) => Console.WriteLine($"Unloaded: {e.InstanceId}");
app.Persist(); // 僅持久化
app.Unload(); // 持久化並卸載,觸發 Unloaded 事件

流程設計:
執行過程:

可查詢 InstanceData、InstanceMetadata、InstanceKeys、InstanceState 等。