LINQ メッセージ クエリの関連付け

LinqMessageQueryCorrelation サンプルでは、システム標準の XPathMessageQuery ではなく、カスタムの MessageQuery 実装を使用して、コンテンツ ベースの関連付けを実行する方法を示します。

対象

カスタムの MessageQuery、コンテンツ ベースの相関関係。

ディスカッション

このサンプルでは、関連付けのために MessageQuery 基本クラスから拡張する方法を示します。 カスタム実装の LinqMessageQuery を使用すると、XLinq を使用してメッセージ内で検索する XName を指定できます。 クエリによって取得されたデータを使用して、メッセージを適切なワークフロー インスタンスにディスパッチするための相関関係キーを作成します。

サンプルをセットアップ、ビルド、および実行するには

  1. このサンプルでは、HTTP エンドポイントを使用してワークフロー サービスを公開します。 このサンプルを実行するには、適切な URL ACL を追加する必要があります (詳細については、「HTTP および HTTPS の構成」を参照)。そのためには、Visual Studio を管理者として実行するか、権限のレベルが高いプロンプトで次のコマンドを実行します。 ドメインとユーザー名は置き換えてください。

    netsh http add urlacl url=http://+:8000/ user=%DOMAIN%\%UserName%
    
  2. URL ACL を追加したら、次の手順を実行します。

    1. ソリューションをビルドします。

    2. ソリューションを右クリックし、 [スタートアップ プロジェクトの設定] をクリックして、複数のスタートアップ プロジェクトを設定します。 複数のスタートアップ プロジェクトとして Service および Client を (この順序で) 追加します。

    3. アプリケーションを実行します。 クライアント コンソールには、注文を送信し、発注書 ID を受信した後に、注文を確認するワークフローが示されます。 Service のウィンドウには、処理されている要求が示されます。