このトピックの内容は、Windows Workflow Foundation 4 に該当します。
ワークフローの永続化は、プロセスやコンピューターの情報とは独立した、ワークフロー インスタンスの状態の永続的なキャプチャです。永続化の目的は、システム生涯時にワークフロー インスタンスの既知の回復ポイントを提供するため、アクティブに作業を実行していないワークフロー インスタンスをアンロードしてメモリを節約するため、またはワークフロー インスタンスの状態をサーバー ファーム内のあるノードから別のノードに移行するためです。
永続化によって、プロセスの迅速性、拡張性、エラー時の回復、およびメモリをより効率的に管理できる機能を実現できます。永続化プロセスには永続化ポイントの指定や保存するデータの収集が含まれ、最終的にはデータの実際のストレージが永続化プロバイダーにデリゲートされます。
ワークフローの永続化を有効にするには、「ワークフローとワークフロー サービスの永続化を有効にする方法」の説明に従って、インスタンス ストアを WorkflowApplication または WorkflowServiceHost に関連付ける必要があります。WorkflowApplication と WorkflowServiceHost は、それらに関連付けられているインスタンス ストアを使用して、ワークフロー インスタンスを永続化ストアに永続化し、永続化ストアに格納されているワークフロー インスタンス データに基づいてワークフロー インスタンスをメモリに読み込む処理を有効にします。
.NET Framework Version 4 には SqlWorkflowInstanceStore クラスがあります。このクラスを使用すると、ワークフロー インスタンスに関するデータおよびメタデータを SQL Server 2005 または SQL Server 2008 のデータベースに永続化できます。詳細については、「SQL Workflow Instance Store」を参照してください。
アプリケーション固有のデータをワークフロー インスタンス関連の情報と共に格納し、読み込むために、PersistenceParticipant クラスを拡張する永続参加要素を作成できます。永続参加要素は永続化プロセスに参加して、カスタムのシリアル化可能なデータを永続化ストアに保存し、インスタンス ストアからメモリにデータを読み込み、永続化トランザクションで任意の追加ロジックを実行します。詳細については、「永続参加要素」を参照してください。
暗黙的な永続化ポイント
次の一覧は、インスタンス ストアがワークフローに関連付けられている場合にワークフローが永続化される条件の例です。
TransactionScope アクティビティまたは TransactedReceiveScope アクティビティが完了したとき。
ワークフロー インスタンスがアイドルになり、WorkflowIdleBehavior がワークフロー ホストに設定されたとき。たとえば、メッセージング アクティビティ、つまり Delay アクティビティを使用すると、この処理が発生します。
WorkflowApplication がアイドルになり、アプリケーションの PersistableIdle プロパティが PersistableIdleAction.Persist に設定されたとき。
ホスト アプリケーションに対して、ワークフロー インスタンスの永続化またはアンロードが指示されたとき。
ワークフロー インスタンスが終了したとき。
Persist アクティビティが実行されたとき。
以前のバージョンの Windows Workflow Foundation を使用して開発したワークフロー インスタンスが、相互運用可能な実行中に永続化ポイントに到達したとき。