BizTalk サービス プロジェクトでのブリッジから宛先へのメッセージのルーティング

更新日: 2015年8月

ルーティング条件を使用して、コンポーネント間でメッセージをルーティングします。

BizTalk サービス プロジェクト のさまざまなコンポーネントを接続する明確な理由の 1 つは、あるコンポーネントから別のコンポーネントにメッセージをルーティングすることにあります。ただし、別の要件もあります。メッセージをビジネス ロジック (ルーティング条件とも呼ばれる) に基づいてソース コンポーネントから複数の送信先コンポーネントにルーティングすることが必要な場合があります。ルーティング条件が複数存在する場合は、ルーティング条件を受け付ける順序を設定することも必要です。最後に、メッセージが最終的に送信先にルーティングされる前に、メッセージに対していくつかのアクション (メッセージ ヘッダーへの値の割り当てやカスタム ヘッダーの追加など) を実行する場合があります。このトピックでは、このような側面を詳しく説明すると共に、BizTalk サービス プロジェクトでこれらを達成する方法を示します。

このトピックでは、シナリオ例を使用してこれらの手順を説明します。次の形式の XML メッセージを XML 一方向ブリッジを使用して処理する必要があると仮定します。

<PaymentHistory xmlns:ns0="http://Integration.PipelineChaining">
  <BaseData>
    <Amount>10.4</Amount> 
    <CurrencyCode>CurrencyCode_0</CurrencyCode> 
    <EntryDate>1999-05-31</EntryDate> 
    <EntryTime>13:20:00.000-05:00</EntryTime> 
    <PaymentMode>Mode_0</PaymentMode> 
    <StatusCode>StatusCode_0</StatusCode> 
    <PurposeCode>PurposeCode_0</PurposeCode> 
  </BaseData>
</PaymentHistory>

ビジネス ロジックは次のとおりです。支払いモードがクレジット カードである場合はメッセージを一方向の外部サービスにルーティングする必要があり、支払いモードが現金である場合はメッセージを一方向のリレー エンドポイントにルーティングする必要があり、支払いモードがこのどちらでもない場合はメッセージを Service Bus キューにルーティングする必要があります。

これは非常に簡単です。着信メッセージがブリッジによって処理された後でルーティングされるルーティング先を定義する必要があります。XML 一方向ブリッジまたは XML 要求-応答ブリッジ からのメッセージをルーティングできる送信先に関して、いくつかの注意事項があります。これらの注意事項の詳細については、「Constraints on Using an XML One-Way Bridge」および「Constraints on Using an XML Request Reply Bridge」を参照してください。

次の手順では、メッセージ フローの 2 つのコンポーネントを接続する方法を説明します。

  1. BizTalk サービス プロジェクト を作成します (「Visual Studio プロジェクトの概要」を参照)。

  2. Azure の多機能メッセージング エンドポイントの作成」のさまざまなトピックで説明されているように、コンポーネントをBizTalk サービス プロジェクトに追加します。

  3. [ツールボックス][ブリッジ] カテゴリで、[コネクタ] を選択します。

  4. メッセージのソースとして機能するコンポーネントの右端 (コンポーネントにカーソルを合わせると赤色のドットでマークされる) に、マウス ポインターを置きます。マウス ポインターの表示は "S" 記号に変化します。これは、このコンポーネントによってメッセージのソースが追加されることを示します。マウスでドットをクリックしたまま、ターゲット コンポーネントの左端にドラッグし (この時点でカーソルの表示は、ターゲットを示す小さな "T" に戻る)、マウスを放します。これで 2 つのコンポーネントが接続されました。1 つのソース コンポーネントを複数のターゲット コンポーネントに接続することができます。

    noteメモ
    現在のマイルストーンでは、メッセージ フローは常にXML 一方向ブリッジかXML 要求-応答ブリッジのいずれかで開始する必要があります。その後は、制約に従っている限り、メッセージを任意のコンポーネントにルーティングすることができます。該当する制約は、「Constraints on Using an XML One-Way Bridge」と「Constraints on Using an XML Request Reply Bridge」にリストされています。

    シナリオ例では、XML 一方向ブリッジを一方向の外部サービス、一方向のリレー エンドポイント、および Service Bus キューに接続する必要があります。

2 つのコンポーネントの接続の他に、ルーティングにおけるもう 1 つの重要な側面は、メッセージをビジネス ロジックに基づいて、1 つのソース コンポーネントからの複数の送信先コンポーネントにルーティングすることです。

前述のシナリオ例では、ルーティング条件は支払いモードに基づいている必要があります。支払いモードは XML メッセージ内の PaymentMode 要素で示されます。このビジネス ロジックを BizTalk サービス プロジェクト に実装するには、条件ごとにルーティング フィルターを作成する必要があります。その方法の手順を次に示します。

noteメモ
フィルターを作成する前に、3 つのコネクタがすべて作成済みであること (前述手順を参照) を確認します。また、XML メッセージ内の PaymentMode 要素の値を抽出するために、ブリッジの [強化] 段階でプロパティ (PaymentMode など) を作成しておく必要があります。

次の手順では、BizTalk サービス プロジェクト でルーティング条件を設定する方法について説明します。

  1. XML 一方向ブリッジ と一方向の外部サービスとの間のルート コネクタを右クリックし、[プロパティ] をクリックします。[プロパティ] ウィンドウで、[フィルター条件] プロパティの参照ボタン ([...]) をクリックして、[ルート フィルターの構成] ダイアログ ボックスを表示します。

  2. ダイアログ ボックスの [フィルター] オプションを選択し、次のフィルター文字列を入力します。

    PaymentMode='credit_card'
    
    noteメモ
    フィルター式には標準の SQL 92 構文を使用する必要があります。

    PaymentMode は強化段階での抽出に備えて入力しておく必要があるプロパティです。このフィルター条件 (XML 一方向ブリッジと一方向の外部サービスとの間のコネクタで入力される) では、このフィルター条件が満たされた場合にメッセージが一方向の外部サービスに送信されるよう指定します。

    [OK] をクリックして、変更を保存して終了します。

  3. 同様に、XML 一方向ブリッジと一方向のリレー エンドポイントの間のコネクタについても、フィルター文字列を次のように入力します。

    PaymentMode='cash'
    
  4. 支払いモードが現金でもクレジット カードでもない場合、メッセージは Service Bus キューにルーティングされる必要があります。メッセージ フロー内でそれを実現するには、XML 一方向ブリッジ と Service Bus キューとの間のコネクタに対して、[ルート フィルターの構成] ダイアログ ボックスを開き、[すべてに一致] を選択する必要があります。そうすることで、フィルター条件のいずれも一致しない場合に、このフィルター条件が受け入れられ、メッセージが Service Bus キューにルーティングされるように指定されます。

前のセクションでは、正しいメッセージがメッセージ フローの正しいコンポーネントに確実にルーティングされるようにフィルターを設定しました。ただし、ルーティングの順序も同様に重要です。たとえば、前述したシナリオでは、PaymentModecredit_card に設定したメッセージが、[すべてに一致] を設定したフィルター条件にルーティングされると、そのメッセージは一方向の外部サービス エンドポイントではなく Service Bus キューにルーティングされます。したがって、ビジネス ロジックに従って、[すべてに一致] 条件は最後に受け入れられる必要があります。そのためには、フィルター条件が受け入れられる順序を設定します。

  1. XML ブリッジ (XML 一方向ブリッジ または XML 要求-応答ブリッジ) を右クリックし、[プロパティ] を選択します。[プロパティ] ウィンドウで、[ルート順序テーブル] プロパティの参照ボタン ([...]) をクリックします。

  2. [ルート順序テーブル] ダイアログ ボックスに、ルート フィルターを受け入れる既定の順序が表示されます。この既定の順序は、ルート コネクタを作成した順序です。ルート フィルターの順序を変更するには、ルート フィルターを選択し、上下矢印ボタンを使用してそれを適切な順番に配置します。適切なルート順序になるまで、すべてのルート フィルターに対してこの手順を繰り返します。

  3. [OK] をクリックして、変更を保存して終了します。

メッセージ受信側にメッセージを送信する前に、いくつかのカスタム メッセージ ヘッダーを追加するか、または標準のメッセージ ヘッダーに値を割り当てることをお勧めします。それを行うには、ルート アクションを使用します。詳細については、「Route Action」を参照してください。

上記の例を続行するための前提として、メッセージを、カスタム SOAP ヘッダー (CustomerName) および値と一緒に一方向の外部サービスに送信する必要があります。

  1. ブリッジと一方向の外部サービスとの間のルート コネクタを右クリックし、[プロパティ] をクリックします。[プロパティ] ウィンドウで、[ルート アクション] プロパティの参照ボタン ([...]) をクリックして、[ルート アクション] ダイアログ ボックスを表示します。

  2. [ルート アクション] ダイアログ ボックスで、[追加] をクリックして、[ルート アクションの追加] ダイアログ ボックスを開きます。[ルート アクションの追加] ダイアログ ボックスで、次の操作を行います。

     

    セクション フィールド名 説明

    プロパティ (読み取り元)

    プロパティ名

    XML 要求-応答ブリッジ における前の 2 つの [強化] 段階で定義したプロパティをすべて一覧表示します。ここでプロパティを選択する場合は、選択したプロパティの値が送信メッセージの関連メッセージ ヘッダーに割り当てられる必要があることを指定します。

    このオプションを使用して式を指定します。この式の結果として得られる値は送信メッセージの関連メッセージ ヘッダーに渡されます。このオプションを使用して、メッセージ ヘッダーに割り当てられる定数値を入力することもできます。式の例には、次のようなものがあります。

    • P1 + P2。ここで、P1 と P2 は 2 つとも、前に示した 2 つの [強化] 段階のいずれかで定義済みのプロパティです。

    • 'Fabrikam' は文字列定数です。

      Important重要
      式の値は、常に単一引用符で囲んで入力する必要があります。

    Important重要
    [プロパティ名] オプションまたは [式] オプションのいずれかを選択できます。これらのオプションを同時に使用することはできません。

    送信先 (書き込み先)

    送信メッセージのメッセージ型を入力します。このヘッダーには前に入力した値が割り当てられます。

    メッセージの送信先に応じて、ドロップダウンで使用できる値は変わります。

    • 外部サービスまたはリレー エンドポイント (一方向または双方向) にルーティングする場合、ドロップダウン リストで使用できる値は [SOAP][HTTP] です。

    • キューまたはトピックにルーティングする場合、ドロップダウン リストで使用できる値は [SOAP][Brokered] です。

    • FTP 送信先にルーティングする場合、ドロップダウン リストで使用できる値は [FTP] です。

    • SFTP 送信先にルーティングする場合、ドロップダウン リストで使用できる値は [SFTP] です。

    • Azure BLOB にルーティングする場合、ドロップダウン リストで使用できる値は [Azure Blob] です。

    SOAP ヘッダーの名前空間 ([種類][SOAP] に設定されている場合のみ)

    値が割り当てられるカスタム SOAP ヘッダーの名前空間を入力します。

    Important重要
    このフィールドは、[識別子] ドロップダウン リストで標準ヘッダーを選択している場合にはグレーで表示されます。名前空間はカスタム SOAP ヘッダーの場合にのみ入力が必要です。

    また、このフィールドは、[種類][HTTP] または [Brokered] に設定されている場合にはグレーで表示されます。

    識別子

    値が割り当てられるメッセージ ヘッダー プロパティの名前を入力します。

    ここで、カスタム ヘッダーを入力することもできます。SOAP メッセージ型の場合、ドロップダウン リストには標準の識別子が表示されます。HTTP メッセージ型の場合は、かなりの数の標準ヘッダーがあるため、ドロップダウンにはヘッダーが表示されません。SOAP および HTTP メッセージ型の場合は、他のプロパティに割り当てる値のカスタム ヘッダーを表示することができます。

    FTP、SFTP、Azure BLOB など、他の送信先の種類の場合は、プロパティ値を書き込む必要があるメッセージ ヘッダーを選択できます。

    前に示した例では、これは送信メッセージに含める必要があるカスタム ヘッダー名であるため、CustomerName に設定する必要があります。

  3. [ルート アクションの追加] ダイアログ ボックスの [OK] をクリックします。ダイアログ ボックスは、次のようになります。

    ルート アクション

    このダイアログ ボックスは何を表しているでしょうか。つまり、ブリッジの場合は、プロパティ P1 (前に示した [強化] 段階の 1 つで定義済み) の値を使用し、その値をカスタム SOAP ヘッダー (名前空間 http://schemas.microsoft.com/integration/promotedpropertiesinfo を伴なう CustomerName) に割り当てて、それをメッセージの受信側に送信します。

    Important重要
    2 種類のプロパティ (たとえば、P1 と P2) を使用して同じ送信先を指す 2 つのルート アクションを、同じルート コネクタ上で作成する場合、ビルド エラーは発生しません。最後のルート アクションによって、前に定義したルート アクションは上書きされます。この例では、プロパティ P2 のルート アクションが受け入れられます。

  4. ルート アクションを更新または削除するには、ダイアログ ボックスでルート アクションを選択し、それぞれ [編集] または [削除] をクリックします。[ルート アクション] ダイアログ ボックスの [OK] をクリックし、[保存] をクリックして、ブリッジの構成への変更を保存します。

関連項目

表示: