ワークフローとワークフロー サービスの永続化を有効にする方法
この記事では、ワークフローとワークフロー サービスの永続化を有効にする方法について説明します。
ワークフローの永続化を有効にする
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 に割り当てます。
アプリケーション構成ファイルを使用した永続性の有効化
次のコードを app.config または web.config file に追加すると、アプリケーション構成ファイルを使用して永続化を有効にできます。
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="myBehavior">
<sqlWorkflowInstanceStore connectionString="Data Source=myDatabaseServer;Initial Catalog=myPersistenceDatabase" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
重要
Microsoft では、使用可能な最も安全な認証フローを使用することをお勧めします。 Azure SQL に接続する場合は、Azure リソースの管理 ID が推奨される認証方法です。
.NET