このトピックの内容は、Windows Workflow Foundation 4 に該当します。
ここでは、ワークフローとワークフロー サービスの永続化を有効にする方法について説明します。
ワークフローの永続化を有効にする
WorkflowApplication クラスの InstanceStore プロパティを使用して、インスタンス ストアと WorkflowApplication を関連付けることができます。Persist メソッドは、アプリケーションに関連付けられたインスタンス ストアにワークフローを保存または永続化します。Unload メソッドは、ワークフローをインスタンス ストアに永続化し、メモリからインスタンスをアンロードします。Load メソッドは、インスタンスの永続化ストアに格納されているワークフロー データを使用し、ワークフローをメモリに読み込みます。
Persist メソッドは、次の手順を実行します。
ワークフローのスケジューラを一時停止し、アイドル状態に移行するまで待機します。
ワークフローを永続化 (永続化ストアに保存) します。
ワークフローのスケジューラを再開します。
Unload メソッドは、次の手順を実行します。
ワークフローのスケジューラを一時停止し、アイドル状態に移行するまで待機します。
ワークフローを永続化 (永続化ストアに保存) します。
メモリ内のワークフロー インスタンスを破棄します。
ワークフローが非永続化ゾーンにある間は、ワークフローが非永続化ゾーンを終了するまで、Persist メソッドと Unload メソッドのどちらもブロックします。メソッドは、非永続化ゾーンの完了後に、永続化またはアンロードの操作を続行します。期限切れになる前に非永続化ゾーンが完了しない場合、または永続化プロセスに時間がかかりすぎる場合は、TimeoutException がスローされます。
ワークフロー サービスの永続化を有効にする
WorkflowServiceHost クラスの DurableInstancingOptions メンバーには InstanceStore というプロパティがあり、インスタンス ストアを WorkflowServiceHost に関連付けるために使用できます。
// wsh is an instance of WorkflowServiceHost class
wsh.DurableInstancingOptions.InstanceStore = new SqlWorkflowInstanceStore();
WorkflowServiceHost を開くと、DurableInstancingOptions.InstanceStore が null ではない場合、永続化が自動的に有効になります。
通常、サービスの動作には、InstanceStore プロパティを使用してワークフロー サービス ホストと共に使用できる具象インスタンス ストアが用意されています。たとえば、SqlWorkflowInstanceStoreBehavior は、SqlWorkflowInstanceStore のインスタンスを作成し、構成して、DurableInstancingOptions.InstanceStore に割り当てます。