共用方式為


持續性參與者

本主題僅適用於 Windows Workflow Foundation 4。

持續性參與者可參與由應用程式主機所觸發的持續性作業 (「儲存」或「載入」)。.NET Framework 版本 4 隨附兩個您可用來建立持續性參與者的抽象類別:PersistenceParticipantPersistenceIOParticipant。持續性參與者會衍生自這些類別的其中一個、實作感興趣的方法,然後將類別的執行個體加入至 WorkflowServiceHost 上的 WorkflowExtensions 集合。應用程式主機保存工作流程執行個體時,可能會尋找此類工作流程擴充功能,並且在適當的時間於持續性參與者上叫用適當的方法。

以下清單描述持續性子系統在不同階段的「保存」(儲存) 作業時所執行的工作。持續性參與者會用於第三與第四階段。如果參與者是 IO 參與者 (同樣參與 IO 作業的持續性參與者),則此參與者會用於第六階段。

  1. 收集內建值,包含工作流程狀態、書籤、對應的變數以及時間戳記。

  2. 收集加入至與工作流程執行個體相關之擴充集合的所有持續性參與者。

  3. 叫用由所有持續性參與者實作的 CollectValues 方法。

  4. 叫用由所有持續性參與者實作的 MapValues 方法。

  5. 保存工作流程,或將工作流程儲存至持續性存放區中。

  6. 在所有持續性 IO 參與者上叫用 BeginOnSave 方法。如果參與者並非 IO 參與者,則會略過此工作。如果持續性的時段屬於交易性質,則交易會在 Transaction.Current 屬性中提供。

  7. 等候所有持續性參與者完成。如果所有參與者成功保存執行個體資料,則認可交易。

持續性參與者衍生自 PersistenceParticipant 類別,且可實作 CollectValuesMapValues 方法。持續性 IO 參與者衍生自 PersistenceIOParticipant 類別,除了可實作 CollectValuesMapValues 方法之外,還可實作 BeginOnSave 方法。

每個階段都會先完成,再開始進行下一個階段。例如,在第一階段中,會先從 all 持續性參與者收集值。然後,會將在第一階段中收集到的所有值提供給第二階段中的所有持續性參與者,以進行對應。接著,會將在第一和第二階段中收集到的所有值提供給第三階段中的所有持續性參與者,以進行對應,依此類推。

以下清單描述持續性子系統在不同階段的「載入」作業時所執行的工作。持續性參與者會用於第四階段。持續性 IO 參與者 (同樣參與 IO 作業的持續性參與者) 也會用於第三階段。

  1. 收集加入至與工作流程執行個體相關之擴充集合的所有持續性參與者。

  2. 自持續性存放區載入工作流程。

  3. 在所有持續性 IO 參與者上叫用 BeginOnLoad 方法,並等候所有持續性參與者完成。如果持續性的時段屬於交易性質,則交易會在 Transaction.Current 中提供。

  4. 根據從持續性存放區所擷取的資料,載入記憶體中的工作流程執行個體。

  5. 叫用每個持續性參與者上的 PublishValues

持續性參與者衍生自 PersistenceParticipant 類別,且可實作 PublishValues 方法。持續性 IO 參與者衍生自 PersistenceIOParticipant 類別,除了可實作 PublishValues 方法之外,還可實作 BeginOnLoad 方法。

本章節內容

另請參閱

概念

存放區擴充性