相関ローカル サービスのサンプル
このサンプルでは、各種ローカル サービスの相関属性を使用して、ワークフロー インスタンスに相関イベントを発生させる方法を示します。ローカル サービス インターフェイスで相関属性を使用する必要があるのは、ワークフロー インスタンスが、ローカル サービス インターフェイス上の同じイベントの別のインスタンスをリッスンしている可能性がある場合です。
このサンプルでは、ワークフローはタスクを 2 つ作成し、これらのタスクが終了したことを示す同じローカル サービス イベントからの通知を待機します。このサンプルでは、外部コードによってワークフローに対するイベントが発生した場合、ローカル サービス インフラストラクチャは、発生するイベント内のデータ (関連付け値) に基づいて、ワークフロー インスタンス内の適切な HandleExternalEventActivity アクティビティにイベントを配信します。
ExternalDataExchangeAttribute 属性は必須の属性で、ローカル サービスがワークフローとのデータ交換に参加することを示します。
CorrelationParameterAttribute 属性は、関連付け値が、既定ではインターフェイスに定義されているメソッドとイベント内の指定された名前のパラメータにあることを示します。サンプル内の次のコードは、CorrelationParameterAttribute 属性の使用方法を示しています。
[CorrelationParameter("taskId")]
public interface ITaskService
CorrelationInitializerAttribute 属性は、属性の適用されたメソッドが関係付け値を初期化するものであるため、検証を成功させるにはワークフローの先頭 (ローカル サービス インターフェイスに定義されている他の操作よりも前) に置く必要があることを示します。サンプル内の次のコードは、CorrelationInitializerAttribute 属性の使用方法を示しています。
[CorrelationInitializer]
void CreateTask( string taskId, string assignee, string text );
CorrelationAliasAttribute 属性は、関係付け値を CorrelationParameterAttribute 属性によって示される位置とは別の位置から取得する必要がある場合に、特定のメソッドまたはイベントについて CorrelationParameterAttribute 属性の設定をオーバーライドします。
それぞれのタスクが作成された後、タスク サービスはメッセージ ボックスを表示して、タスクが作成されたことをユーザーに通知します。[OK] ボタンがクリックされると、それぞれのタスク ID に対応するタスクを完了するためのイベントが発生します。これらは CreateTask アクティビティに設定されているのと同じプロパティなので、イベントは適切な TaskCompleted アクティビティに関連付けられます。
サンプルをビルドするには
[サンプルのダウンロード] をクリックしてサンプルをダウンロードします。
サンプル プロジェクトがローカル コンピュータのハード ディスクにダウンロードされます。
[スタート] ボタンをクリックし、[すべてのプログラム] をポイントします。次に、[Microsoft Windows SDK] をポイントし、[CMD シェル] をクリックします。
サンプルのソース ディレクトリに移動します。
コマンド プロンプトで、「MSBUILD <ソリューション ファイル名>」と入力します。
サンプルを実行するには
- SDK コマンド プロンプト ウィンドウで、CorrelatedLocalService\bin\debug フォルダ (このサンプルの VB バージョンでは CorrelatedLocalService\bin フォルダ) にある .exe ファイルを実行します (このサンプルでは、メイン フォルダの下にあります)。
関連項目
参照
HandleExternalEventActivity
ExternalDataExchangeAttribute
CorrelationInitializerAttribute
CorrelationParameterAttribute
CorrelationAliasAttribute
その他の技術情報
Copyright © 2007 by Microsoft Corporation.All rights reserved.