EventArgs 追跡サンプル
このサンプルでは、Windows Workflow Foundation で提供されている SQL 追跡サービスを使用して、ワークフローの実行を追跡する方法を示します。
ワークフロー ランタイムが、ワークフローの実行中に特定のイベントを発生させます。追跡サービスがこれらのイベントをキャッチし、イベントに関する情報を SQL Server データベースに格納して照会できるようにします。
追跡ランタイムは、TrackingWorkflowTerminatedEventArgs、TrackingWorkflowSuspendedEventArgs、および TrackingWorkflowExceptionEventArgs タイプを定義し、それぞれがワークフローの終了、中断、例外に関する情報を保持します。WorkflowEventArgs が WorkflowTrackingRecord と共に、それぞれ対応するイベントに送信されます。たとえば、ワークフロー ステータスが WorkflowTerminated の状態に達すると、TrackingWorkflowTerminatedEventArgs が WorkflowTrackingRecord と共に送信されます。
SqlTrackingService は、これらの各種 EventArgs オブジェクトを到着と同時に受け取り、それらをシリアル化し、そのイベントと共に追跡データベースに格納します (追跡プロファイルがそのイベントを要求する場合)。その後、シリアル化された形式が逆シリアル化され、追跡ユーザーが利用できます。使用される追跡プロファイルは SqlTrackingService の既定の追跡プロファイルです。
メモ : |
---|
WorkflowTrackingRecord の時刻値には、世界協定時刻 (グリニッジ標準時) が使用されます。 |
サンプルの概要
サンプルはワークフロー コンソール アプリケーションであり、2 つのワークフローで構成されます。
**ExceptionWorkflow。**コード ハンドラを持つ簡単なワークフローです。このワークフローでは例外がスローされます。この例外は処理されず、ワークフローが終了します。
**SuspendedWorkflow。**中断アクティビティを持つ簡単なワークフローです。ワークフローは中断状態に達します。
サンプルのメイン エントリは Program クラスにあり、これには次のロジックが含まれます。
SqlTrackingService データベースに connectionString を作成します。
SqlTrackingService を次のようにワークフロー ランタイムに追加します。
workflowRuntime.AddService(new SqlTrackingService(connectionString));
ワークフローを次のように実行します。
WorkflowInstance exceptionWorkflowInstance = workflowRuntime.CreateWorkflow(typeof(ExceptionWorkflow)); exceptionWorkflowInstance.Start();
ワークフローが完了または終了 (ワークフローのタイプによる) するのを待機するイベント ハンドラを作成します。
特定の WorkflowEvents について SqlTrackingService を照会し、TrackingWorkflowTerminatedEventArgs、TrackingWorkflowSuspendedEventArgs、および TrackingWorkflowExceptionEventArgs のバイナリにシリアル化されたオブジェクトを取得します。
データを逆シリアル化し、コンソールにその内容を出力します。
SqlTrackingService データベースの作成
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 スクリプトはインストールされます。
SQL 追跡データベースを作成するには
Microsoft SQL Server 2005 Express、SQL Server 2000 以降、または SQL Server 2000 Desktop Engine (MSDE) を使用して、SQL クエリ ステートメント
CREATE DATABASE Tracking
で新規データベース Tracking を作成します。メモ ワークフロー アプリケーションで SqlTrackingService と SqlWorkflowPersistenceService の両方を使用する場合は、永続性と追跡に対して単一のデータベースを使用することをお勧めします。
SQL Query Analyzer 作業領域で、使用可能なデータベースのリストから手順 1. で作成したデータベースを選択します。
[ファイル] メニューの [開く] をクリックして、SQL スクリプト %WINDIR%\Microsoft.NET\Framework\v3.0\Windows Workflow Foundation\SQL\<言語>\Tracking_Schema.sql を開きます。
[実行] をクリックするか F5 キーを押してクエリを実行し、SQL 追跡サービス テーブルを作成します。
[ファイル] メニューの [開く] をクリックして、SQL スクリプト %WINDIR%\Microsoft.NET\Framework\v3.0\Windows Workflow Foundation\SQL\<言語>\Tracking_Logic.sql を開きます。
[実行] をクリックするか F5 キーを押してクエリを実行し、SQL 追跡サービス ストアド プロシージャを作成します。
サンプルをビルドするには
[サンプルのダウンロード] をクリックしてサンプルをダウンロードします。
サンプル プロジェクトがローカル コンピュータのハード ディスクにダウンロードされます。
[スタート] ボタンをクリックし、[すべてのプログラム] をポイントします。次に、[Microsoft Windows SDK] をポイントし、[CMD シェル] をクリックします。
サンプルのソース ディレクトリに移動します。
コマンド プロンプトで、「MSBUILD <ソリューション ファイル名>」と入力します。
サンプルを実行するには
- SDK コマンド プロンプト ウィンドウで、EventArgsTrackingSample\bin\debug フォルダ (このサンプルの VB バージョンでは EventArgsTrackingSample\bin フォルダ) にある .exe ファイルを実行します (このサンプルでは、メイン フォルダの下にあります)。
関連項目
参照
SqlTrackingService
SqlTrackingQuery
SqlTrackingWorkflowInstance
ActivityEvents
ActivityTrackingRecord
WorkflowEvents
WorkflowTrackingRecord
その他の技術情報
追跡サンプル
簡単な追跡のサンプル
SQLTrackingService サンプルを使用するクエリ
ユーザー追跡ポイントを使用した追跡のサンプル
ConsoleTrackingService のサンプル
SQLTrackingService サンプルを使用するクエリ
RuleActionTrackingEvent サンプル
ファイル追跡サービスとクエリのサンプル
追跡プロファイル オブジェクト モデル サンプルの使用
SQL データ保守のサンプル
Windows Workflow Tracking Services
Copyright © 2007 by Microsoft Corporation.All rights reserved.