ワークフローの永続性

このトピックの内容は、Windows Workflow Foundation 4 に該当します。

ワークフローの永続化は、プロセスやコンピューターの情報とは独立した、ワークフロー インスタンスの状態の永続的なキャプチャです。永続化の目的は、システム生涯時にワークフロー インスタンスの既知の回復ポイントを提供するため、アクティブに作業を実行していないワークフロー インスタンスをアンロードしてメモリを節約するため、またはワークフロー インスタンスの状態をサーバー ファーム内のあるノードから別のノードに移行するためです。

永続化によって、プロセスの迅速性、拡張性、エラー時の回復、およびメモリをより効率的に管理できる機能を実現できます。永続化プロセスには永続化ポイントの指定や保存するデータの収集が含まれ、最終的にはデータの実際のストレージが永続化プロバイダーにデリゲートされます。

ワークフローの永続化を有効にするには、「ワークフローとワークフロー サービスの永続化を有効にする方法」の説明に従って、インスタンス ストアを WorkflowApplication または WorkflowServiceHost に関連付ける必要があります。WorkflowApplicationWorkflowServiceHost は、それらに関連付けられているインスタンス ストアを使用して、ワークフロー インスタンスを永続化ストアに永続化し、永続化ストアに格納されているワークフロー インスタンス データに基づいてワークフロー インスタンスをメモリに読み込む処理を有効にします。

.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 を使用して開発したワークフロー インスタンスが、相互運用可能な実行中に永続化ポイントに到達したとき。

このセクションの内容