永続性サービスのサンプルの使用
このサンプルでは、SqlWorkflowPersistenceService サービスを使用してワークフローを読み込む方法、およびアンロードする方法を示します。
多くのビジネス プロセスは、完了までに長い時間 (数か月、ときには数年) かかります。ワークフローをメモリ内に保持することは、メモリ容量には限りがあるため現実的ではなく、また 1 つのインスタンスは 1 つのサーバー上で処理する必要があるため、拡張性もなくなります。長時間にわたって実行されるワークフローの多くは、フローや処理ロジックを活発に実行しているわけではなく、ユーザーや他のシステムからの入力待ちで事実上アイドル状態になっています。アイドル状態のインスタンスをアンロードすると、メモリを節約できるだけでなく、処理サーバー全体の高いスケーラビリティを実現できます。このサンプルでは、終了までに 5 秒間待機する単純なワークフローを使ってアイドル状態のインスタンスをアンロードする方法を示します。
メモ : |
---|
コンストラクタで UnloadOnIdle パラメータを true に設定して、アイドル状態のワークフローが自動的にアンロードされるように SqlWorkflowPersistenceService を設定することもできます。 |
データベースの構成
Windows Workflow Foundation によってインストールされた SQL サービスは、Microsoft SQL Server を使用して情報を保存します。これらの作業には、Microsoft SQL Server 2005 Express、SQL Server 2000 以降のバージョン、または SQL Server 2000 Desktop Engine (MSDE) を使用できます。
Windows Workflow Foundation のセットアップでは、これらのサービスに必要なデータベースはインストールされませんが、これらのサービスで使用するデータベースを作成および構成するための SQL スクリプトはインストールされます。
メモ : |
---|
SqlWorkflowPersistenceService を機能させるには、Microsoft 分散トランザクション コーディネータ (MSDTC) サービスを有効にする必要があります。 |
次の手順では、このサンプルの各サービスで使用されるデータベースを作成および構成する方法を説明します。
SQL データベースを作成および構成するには
SQL Server 2005 Express、SQL Server 2000 以降、または SQL Server 2000 Desktop Engine (MSDE) を使用して、SQL クエリ ステートメント
CREATE DATABASE SqlPersistenceService
で新規データベース SqlPersistenceService を作成します。メモ ワークフロー アプリケーションで SqlTrackingService と SqlWorkflowPersistenceService の両方を使用する場合は、永続性と追跡に対して単一のデータベースを使用することをお勧めします。
SQL クエリ アナライザの作業領域で、使用可能なデータベースの一覧から手順 1. で作成したデータベースを選択します。
[ファイル] メニューの [開く] をクリックして、SQL スクリプト %WINDIR%\Microsoft.NET\Framework\v3.0\Windows Workflow Foundation\SQL\<言語>\SqlPersistenceService_Schema を開きます。
[実行] をクリックするか F5 キーを押してクエリを実行し、SQL 永続性サービス テーブルを作成します。
[ファイル] メニューの [開く] をクリックして、SQL スクリプト %WINDIR%\Microsoft.NET\Framework\v3.0\Windows Workflow Foundation\SQL\<言語名>\SqlPersistenceService_Logic を開きます。
[実行] をクリックするか F5 キーを押してクエリを実行し、SQL 永続性サービス ストアド プロシージャを作成します。
サンプルのチュートリアル
ワークフローは、code1、delay1、code2 という一連の 3 つのアクティビティを含むシーケンシャル ワークフローです。CodeActivity アクティビティは現在の UTC 日時をコンソールに出力し、DelayActivity アクティビティは次の書き込みまで 5 秒間待機します。ホスト アプリケーションは、各種 WorkflowRuntime イベントに対応するハンドラを提供して、メモリとの間のワークフロー インスタンスの読み込みおよびアンロードを全体的に管理します。
これは次のように実行されます。
ホストによってワークフローが作成され、開始されます。
Code1 が現在の UTC 日時をコンソールに表示します。
ワークフローが delay1 アクティビティに移ります。
ワークフロー インスタンスはアイドル状態となり、タイマが切れるまで待機します。ワークフローがアイドル状態になると、WorkflowRuntime によって WorkflowIdled イベントが発生します。
Unload メソッドは SqlWorkflowPersistenceService サービスを呼び出して、ワークフロー インスタンスを永続化します。ワークフロー ランタイムが、ワークフロー インスタンスを破棄します。
少なくとも 5 秒後にタイマが切れます。
SqlWorkflowPersistenceService サービスはデータベースからワークフローを読み込み、ランタイムはその処理を続けます。
Code2 がコンソールに UTC 日時を表示します。ここで表示される日時は、Code1 によって表示される時刻より 5 秒遅れたものとなります。
ワークフロー インスタンスが完了すると、ワークフロー ランタイムは SqlWorkflowPersistenceService サービスを呼び出して、ワークフローの最終的な状態を永続化します。
カスタム サービス
このサンプルでは状態の永続化に関する既存のサービスを使用していますが、カスタマイズした状態の永続性サービスを作成することも可能です。現行のデータベース システムを使用する場合や、追加機能を提供する場合に、カスタム サービスの作成が必要になることがあります。カスタム サービスを開発する方法の詳細については、このトピックでリストされているサンプル、および「Windows Workflow Foundation」を参照してください。
サンプルをビルドするには
[サンプルのダウンロード] をクリックしてサンプルをダウンロードします。
これにより、サンプル プロジェクトがローカル コンピュータのハード ディスクにダウンロードされます。
[スタート] をクリックし、[すべてのプログラム] をポイントします。次に、[Microsoft Windows SDK] をポイントし、[CMD シェル] をクリックします。
サンプルのソース ディレクトリに移動します。
コマンド プロンプトで、「MSBUILD <ソリューション ファイル名>」と入力します。
サンプルを実行するには
- SDK コマンド プロンプト ウィンドウで、PersistenceServices\bin\debug フォルダ (このサンプルの VB のバージョンでは、PersistenceServices\bin フォルダ) にある .exe ファイルを実行します (このサンプルでは、メイン フォルダの下にあります)。
関連項目
参照
SqlWorkflowPersistenceService
WorkflowPersistenceService
その他の技術情報
カスタム永続性サービスのサンプル
ワークフローを読み込むためのイベントの発生のサンプル
Windows Workflow Persistence Services
Exercise 4 : Using Runtime Services
Using the SqlWorkflowPersistenceService Service
ホスティング サンプル
Task 3 : Using the Windows Workflow Persistence Service
Copyright © 2007 by Microsoft Corporation.All rights reserved.