このトピックの内容は、Windows Workflow Foundation 4 に該当します。
永続参加要素は、アプリケーション ホストによってトリガーされる永続化操作 (保存または読み込み) に参加できます。.NET Framework Version 4 には PersistenceParticipant および PersistenceIOParticipant の 2 つの抽象クラスが付属しており、これらを使用して永続参加要素を作成できます。永続参加要素はこれらのクラスの 1 つから派生し、目的のメソッドを実装して、このクラスのインスタンスを WorkflowServiceHost の WorkflowExtensions コレクションに追加します。アプリケーション ホストは、ワークフロー インスタンスを永続化するときにこのようなワークフロー拡張機能を必要とする場合があり、適切なときに永続参加要素の適切なメソッドを呼び出します。
次の一覧では、永続化 (保存) 操作のさまざまな段階で永続化サブシステムが実行するタスクについて説明します。3 番目および 4 番目の段階で永続参加要素が使用されます。参加要素が IO 参加要素 (IO 操作にも参加する参加要素) の場合、その参加要素は 6 番目の段階でも使用されます。
ワークフロー状態、ブックマーク、マップされた変数、およびタイムスタンプなどの組み込みの値を収集します。
ワークフロー インスタンスに関連付けられた拡張コレクションに追加された永続参加要素を収集します。
すべての永続参加要素によって実装された CollectValues メソッドを呼び出します。
すべての永続参加要素によって実装された MapValues メソッドを呼び出します。
ワークフローを永続ストアに永続化または保存します。
すべての永続 IO 参加要素の BeginOnSave メソッドを呼び出します。参加要素が IO 参加要素でない場合は、このタスクをスキップします。永続化がトランザクションである場合、Transaction.Current プロパティにトランザクションが提供されます。
すべての永続参加要素が完了するのを待機します。すべての参加要素がインスタンス データの永続化に成功したら、トランザクションをコミットします。
永続参加要素は PersistenceParticipant クラスから派生し、CollectValues および MapValues メソッドを実装できます。永続 IO 参加要素は PersistenceIOParticipant クラスから派生し、CollectValues および MapValues メソッドの実装に加えて BeginOnSave を実装できます。
それぞれの段階の完了後に次の段階が開始されます。たとえば、最初の段階では、すべての永続参加要素から値が収集されます。2 番目の段階では、最初の段階で収集されたすべての値がマップのためにすべての永続参加要素に提供されます。3 番目の段階では、1 番目および 2 番目の段階で収集してマップされたすべての値が永続参加要素に提供されます。
次の一覧では、読み込み操作のさまざまな段階で永続化サブシステムが実行するタスクについて説明します。4 番目の段階で永続参加要素が使用されます。永続 IO 参加要素 (IO 操作にも参加する永続参加要素) は 3 番目の段階でも使用されます。
ワークフロー インスタンスに関連付けられた拡張コレクションに追加された永続参加要素を収集します。
永続ストアからワークフローを読み込みます。
すべての永続 IO 参加要素の BeginOnLoad を呼び出して、すべての永続参加要素が完了するのを待機します。永続化がトランザクションである場合、Transaction.Current にトランザクションが提供されます。
永続ストアから取得されたデータに基づいて、メモリ内のワークフロー インスタンスを読み込みます。
各永続参加要素の PublishValues メソッドを呼び出します。
永続参加要素は PersistenceParticipant クラスから派生し、PublishValues メソッドを実装できます。永続 IO 参加要素は PersistenceIOParticipant クラスから派生し、PublishValues メソッドの実装に加えて BeginOnLoad メソッドを実装できます。