ビジネス シナリオに応じて、BizTalk Server が Service Bus キューから販売注文メッセージを受信した後、メッセージで注文された数量が 100 を超えているかどうかを確認する必要があります。 数量が 100 より大きい場合、メッセージは SalesOrder テーブルに挿入されます。 それ以外の場合、メッセージは共有ファイルの場所に送信されます。 Northwind は、オーケストレーションを作成することで、このビジネス ロジックを実現します。 このトピックでは、オーケストレーションの作成方法に関する詳細なガイダンスを提供します。
BizTalk Server プロジェクトにオーケストレーションを追加するには
既に作成した BizTalk Server で、プロジェクトを右クリックし、[ 追加] をポイントして、[ 新しい項目] をクリックします。
[ 新しい項目 ] ダイアログ ボックスで、[ BizTalk オーケストレーション] を選択し、
OrderProcessing.odx
としてマップ名を入力し、[ 追加] をクリックします。
オーケストレーションのためのメッセージを作成する
前に生成したスキーマでは、オーケストレーション内のメッセージに必要な "型" が記述されています。 通常、メッセージは変数であり、対応するスキーマによって定義される型です。 オーケストレーションのメッセージを作成し、先ほど生成したスキーマにリンクする必要があります。 次の 3 つのメッセージを作成する必要があります。
メッセージ名 | スキーマに対応します |
---|---|
メッセージ1_SO_インバウンド | このメッセージは ECommerceSalesOrder.xsd スキーマのインスタンスです。 |
Message2_SO_Inbound | このメッセージは 、Message1_SO_Inboundのコピーです。 ベスト プラクティスとして、メッセージのコピーを作成し、新しいメッセージを変更し、元のメッセージをそのまま残す必要があります。 詳細については、「 BizTalk Server メッセージ」を参照してください。 |
メッセージ1_SO_アウトバウンド | このメッセージは、 TableOperations.dbo.SalesOrder (Insert) スキーマのインスタンスです。 |
メッセージを作成するには
まだ開いていない場合は、BizTalk プロジェクトの [オーケストレーション ビュー] ウィンドウを開きます。 これを行うには、[ 表示] をクリックし、[ その他のウィンドウ] をポイントし、[ オーケストレーション ビュー] をクリックします。
オーケストレーション ビューで、[ メッセージ] を右クリックし、[ 新しいメッセージ] をクリックします。
新しく作成したメッセージを右クリックし、[ プロパティ ウィンドウ] を選択します。
Message_1の [プロパティ] ウィンドウで、次の操作を行います。
プロパティ名 アクションの実行 識別子 「 Message1_SO_Inbound
」と入力しますメッセージの種類 ドロップダウン リストから [ スキーマ] を展開し、[ OrderProcessingDemo.ECommerceSalesOrder] を選択します。 OrderProcessingDemo は BizTalk プロジェクトの名前です。 ECommerceSalesOrder は、Service Bus キューから受信した販売注文メッセージのスキーマです。 次の詳細を含むメッセージを作成する手順を繰り返します。
メッセージ名 アクションの実行 Message2_SO_Inbound - 識別子を Message2_SO_Inbound
に設定する
- メッセージの種類を OrderProcessingDemo.ECommerceSalesOrder に設定するメッセージ1_SO_アウトバウンド - 識別子 を Message1_SO_Outound
に
- メッセージの種類を OrderProcessingDemo.TableOperation_dbo_SalesOrder.Insert に設定する
オーケストレーションに図形を追加する
オーケストレーション図形は、BizTalk Server アプリケーションのフローを定義します。 このセクションでは、オーケストレーションに必要な図形を追加します。
オーケストレーションに図形を追加するには
最初に、 受信 図形を追加する必要があります。 この図形は、Service Bus キューから受信販売注文メッセージを受信します。 受信図形に次のプロパティを設定します。
アクティブ化を True に設定します。
[メッセージ] を [Message1_SO_Inbound] に設定します。
[名前] を ReceiveOrder に設定します。
前述のように、オーケストレーションに受信した元の販売注文メッセージのコピーを作成する必要があります。
ReceiveOrder 図形の下にメッセージ構築図形をドラッグ アンド ドロップします。 この図形を使用してMessage2_SO_Inbound型のメッセージを作成するため、 Messages Constructed プロパティを Message2_SO_Inbound に設定 します。
メッセージの作成図形内にメッセージの割り当て図形を追加します。 図形をダブルクリックして式エディターを開き、次を追加します。
Message2_SO_Inbound = Message1_SO_Inbound; //copy the message Message2_SO_Inbound(*) = Message1_SO_Inbound(*); //copy the context properties on the message
OK をクリックします。
ビジネス シナリオに応じて、メッセージは注文済み品目の数量に基づいて異なる宛先に送信する必要があります。 そのため、受信販売注文メッセージから数量値を抽出する必要があります。
受信メッセージ (ECommerceSalesOrder.xsd) の Quantity 要素には、注文済み数量の値が含まれています。 オーケストレーション内の式内で要素を使用できるように、そのプロパティを昇格させる必要があります。 プロパティを昇格するには、 ECommerceSalesOrder.xsd スキーマを開き、[ 数量] を右クリックし、[ 昇格] をポイントして、[ クイック プロモーション] をクリックします。
数量値を格納する変数を作成します。 変数を作成するには、 オーケストレーション ビューで [ 変数] を右クリックし、[ 新しい変数] をクリックします。 変数に次のプロパティを設定します。
プロパティ名 価値 識別子 「 quantityOrdered
」と入力しますタイプ Int32 を選択します。 Quantity 要素の値を quantityOrdered 変数に割り当てる必要があります。 [メッセージの構築] 図形の後に式エディターをドラッグアンドドロップしてください。 エディターを開き、次の式を入力します。
quantityOrdered = Message2_SO_Inbound.Quantity;
OK をクリックします。
注文数量を抽出した後、メッセージ フローが受け取る 2 つの個別のパスをレイアウトする決定ブロックを作成する必要があります。 オーケストレーションでディサイド図形を追加して決定ブロックを作成します。
式エディター図形の後に Decide 図形をドラッグ アンド ドロップします。
Rule_1図形を選択し、[プロパティ] ウィンドウで次を指定します。
プロパティ名 価値 識別子 「 Yes
」と入力します。 手記: その他のルートは、既定では Else という名前です。表現 「 quantityOrdered > 100
」と入力します。これで、2 つのルートが使用可能になりました。 quantityOrdered 変数の値が 100 より大きい場合、メッセージは Yes ルートを受け取ります。 それ以外の場合は、 Else ルートを受け取ります。 ここで、各ルート内で実行するアクションを定義する必要があります。
ビジネス シナリオに従って、注文数量が 100 を超える場合は、メッセージを SalesOrder テーブルに挿入する必要があります。 そのため、 はい ルートでは、ECommerceSalesOrder.xsd スキーマを TableOperations.SalesOrder.Insert スキーマに変換する必要があります。 「 手順 5 (オンプレミス): メッセージ inito SalesOrder テーブルを挿入するためのスキーマを生成する」のトピックで、挿入スキーマを作成しました。 スキーマを変換した後、メッセージを SQL Server データベース テーブルに送信する必要があります。
[はい] ルート内で、[メッセージの構築] 図形をドラッグ アンド ドロップします。 図形の Messages Constructed プロパティを Message1_SO_Outboundに設定します。
Construct Message 図形内に Transform 図形を追加します。 図形をダブルクリックして、[ 変換の構成] ダイアログ ボックスを開きます。 次の手順を実行してください。
[既存のマップ] オプションを選択します。
完全修飾マップ名 ドロップダウンから OrderProcessingDemo.SalesOrder_SQL を選択します。
ソースで、Message2_SO_Inboundを選択します。
宛先 で、Message1_SO_Outbound を選択します。
[ メッセージの構築] 図形の後に、[ 送信 ] 図形をドラッグ アンド ドロップし、図形の Message プロパティを
Message1_SO_Outbound
に設定します。
ビジネス シナリオに従って、注文数量が 100 未満の場合、メッセージを共有ファイルの場所に送信する必要があります。 そのため、 Else ルートでは、送信図形を追加する必要があります。
Else ルート内で、Send 図形をドラッグ アンド ドロップし、図形の Message プロパティを
Message2_SO_Inbound
に設定します。注
Service Bus キューから受信したのと同じメッセージが処理なしでファイルの場所に送信されるため、メッセージをMessage2_SO_Inboundに設定します。 Message2_SO_Inboundは、Service Bus キューによって受信されるメッセージを表します。
オーケストレーションにポートを追加する
ポートは、オーケストレーションに関するメッセージの入力メディアと出力メディアを表します。 メッセージは受信ポートを使用してオーケストレーションによって使用され、送信ポートを使用して送信されます。 ビジネス シナリオでは、メッセージは 1 つのメディア (Service Bus キュー) から受信され、メッセージ処理に基づいて 2 つの異なる場所 (SQL Server データベースまたはファイル共有の場所) に送信されます。 そのため、オーケストレーションの一部として、1 つの受信ポートと 2 つの送信ポートを作成する必要があります。
ポートを追加するには
ポート図形をオーケストレーション デザイナーの [ポートサーフェイス] ウィンドウにドラッグ アンド ドロップして、ポート構成ウィザードを起動します。 [ようこそ] ページで [次へ] をクリックします。
[ ポートのプロパティ ] ページで、ポートに
ReceiveSO
名前を付け、[ 次へ] をクリックします。[ ポートの種類の選択 ] ページで、[ 新しいポートの種類の作成 ] オプションを選択し、 一方向 の通信パターンを選択し、アクセス制限の既定値のままにして、[ 次へ] をクリックします。
[ ポート バインド ] ページで、ポートの方向として [ このポートで常にメッセージを受信する] を選択し、ポートの入札単価を既定値のままにして、[ 次へ] をクリックします。
最後のページで、[ 完了] をクリックします。
手順を繰り返して、2 つの送信ポートを作成します。 ポートの作成時に、次の値を指定します。
ポート名 特性 SendToSQL - 名前を SendToSQL に設定する
- [新しいポートの種類の作成] を選択する
- 通信パターンを一方向に設定する
- このポートで常にメッセージを送信するようにポートの方向を設定するSendToFile - 名前を SendToFile に設定する
- [新しいポートの種類の作成] を選択する
- 通信パターンを一方向に設定する
- このポートで常にメッセージを送信するようにポートの方向を設定する
ポートとメッセージ図形の接続
オーケストレーションを完了するには、ポートとメッセージ図形を接続する必要があります。 オーケストレーションは、 メッセージが ReceiveOrder 図形によって受信されたときに開始され、メッセージが 2 つの送信図形によって送信されるときにオーケストレーションが終了します。 この条件を使用して、ポートとメッセージ図形を接続する必要があります
メッセージ図形を使用してポートを接続するには
ReceiveSO 受信ポートを ReceiveOrder 図形に接続します。
[はい] ルートの下にある [送信] 図形を SendToSQL 送信ポートに接続します。 これは、メッセージがこのルート (quantityOrdered> 100) に入ると、SQL Server データベースの SalesOrder テーブルに送信されることを示します。
Else ルートの下にある Send 図形を SendToFile 送信ポートに接続します。 これは、メッセージがこのルート (quantityOrdered<= 100) に入ると、指定したファイルの場所に送信されることを示します。
オーケストレーションは次のようになります。