次の方法で共有


CallOrchestration (BizTalk Server サンプル)

CallOrchestration サンプルは、1 つの BizTalk オーケストレーションから別のオーケストレーションを呼び出す方法を示すものです。

このサンプルの処理

このサンプルでは、1 つのオーケストレーションから別のオーケストレーションを呼び出すために、次の一連の手順を実行します。

  1. 1 番目のオーケストレーションで、注文書 (PO) メッセージを受信します。

  2. PO の出荷金額を決定するため、1 番目のオーケストレーションから 2 番目のオーケストレーションを呼び出します。

  3. 2 番目のオーケストレーションで、要求された出荷金額を計算し、結果を 1 番目のオーケストレーションに返します。

  4. 1 番目のオーケストレーションで、返された出荷金額を PO メッセージに反映します。

  5. 1 番目のオーケストレーションで、更新した PO メッセージを確認用のフォルダに格納します。

このサンプルのデザイン方法とその理由

このサンプルの主な目的は、1 つのオーケストレーション内から別のオーケストレーションを呼び出す方法を示すことです。 オーケストレーションの呼び出しは、ビジネス プロセスを再利用可能なコンポーネントに分割する 1 つの方法であり、 頻繁に使用するプロセスを取り出して個別のオーケストレーションを作成すれば、他でも再利用できるようになります。

このサンプルでは、receivePO.odx の Call Orchestration 図形は findShippingPrice.odx を呼び出し、入れ子になったオーケストレーション findShippingPrice.odx が発注書を送信する前に出荷価格を計算して返すのを待ちます。 オーケストレーション findShippingPrice.odx での出荷金額の計算には、次のロジックを使用します。

If ( weight * shippingRate ) < minShippingPrice Then  
    shippingPrice = minShippingPrice  
Else  
    shippingPrice = weight * shippingRate  
End If  

サンプルの入力 PO ファイル InputPO.xml では、重みが 20 と指定されています。このため、出力 PO メッセージでは出荷金額が 10 から 20 に変更されます。

Note

アトミック オーケストレーションから、長時間実行されるトランザクションを呼び出すことはできません。

Note

[オーケストレーションの呼び出し] 図形と [オーケストレーションの開始] 図形の使用の違いは、オーケストレーションを呼び出すときに、呼び出し元は入れ子になったオーケストレーションが返されるのを待ってから続行するという点です。 後者の場合、呼び出し元のオーケストレーションは別のオーケストレーションを開始した後すぐプロセス フローの次の手順に進む点です。 後者の場合、呼び出されたオーケストレーションは呼び出し元とは独立して、自身のプロセス フローを最後まで実行します。 詳細については、「 呼び出しオーケストレーション図形を構成する方法」を参照してください。 「 オーケストレーションの開始図形を構成する方法」も参照してください。

このサンプルの場所

<サンプル パス>\Orchestrations\CallOrchestration\

次の表は、このサンプルのファイルとその目的を示しています。

ファイル 説明
CallOrchestration.btproj、CallOrchestration.sln このサンプルのプロジェクト ファイルとソリューション ファイルです。
CallOrchestrationBinding.xml ポート バインドなどの自動セットアップに使用されます。
Cleanup.bat アセンブリの展開を解除し、グローバル アセンブリ キャッシュからアセンブリを削除するために使用されます。 送信ポートと受信ポートが削除されます。 必要に応じて、Microsoft インターネット インフォメーション サービス (IIS) の仮想ディレクトリが削除されます。
findShippingPrice.odx 2 番目のオーケストレーションとして動作する BizTalk オーケストレーションです。1 番目のオーケストレーション receivePO.odx から呼び出されます。
InputPO.xml ファイル PO.xsd で定義されているスキーマに準拠した、サンプルの入力 PO メッセージです。
PO.xsd サンプルの入力ファイル InputPO.xml などの受信 PO メッセージの構造を定義するスキーマです。このスキーマでは、スキーマ内の 3 つの要素すべてに対してプロパティの昇格が定義されています。
PropertySchema.xsd スキーマ PO.xsd 内の 3 つの要素すべてに対するプロパティの昇格に参加している、プロパティ スキーマ ファイルです。
receivePO.odx このサンプルで、1 番目のオーケストレーションとして動作する BizTalk オーケストレーションです。 PO メッセージを受信フォルダから取得した後、他のオーケストレーション findShippingPrice.odx を呼び出して、計算された出荷金額をメッセージに反映します。
Setup.bat このサンプルをビルドおよび初期化するために使用されます。

このサンプルのビルドと初期化

CallOrchestration サンプルをビルドおよび初期化するには

  1. コマンド ウィンドウで、次のフォルダーに移動します。

    <サンプル パス>\Orchestrations\CallOrchestration\

  2. ファイル Setup.bat を実行すると、次のアクションが実行されます。

    • CallOrchestration フォルダに、このサンプルの入力 (In) フォルダと出力 (Out) フォルダを作成します。

    • このサンプルの両方のオーケストレーションを含む Visual Studio プロジェクトをコンパイルしてデプロイします。

    • BizTalk Server の受信場所、送信ポート、および受信ポートを作成しバインドします。

    • 受信場所を有効にし、送信ポートを開始します。

Note

このサンプルを実行する前に、ビルドと初期化のプロセス中に BizTalk Server でエラーが報告されていないことを確認する必要があります。

このサンプルの実行

CallOrchestration サンプルを実行するには

  1. ファイル InputPO.xml を In フォルダにコピーします。

  2. 更新された XML PO ファイルが Out フォルダに作成されることを確認します。 このファイルには元の PO メッセージが含まれます。このメッセージには、前述のように計算後の出荷費用が反映されています。 このファイルの名前の形式は <MessageID>.xml で <、MessageID> はメッセージを一意に識別するために生成される GUID です。

このサンプルのアンインストール

CallOrchestration サンプルをアンインストールするには

  1. Visual Studio コマンド ウィンドウで、次のフォルダーに移動します。

    <サンプル パス>\Orchestrations\CallOrchestration\

  2. Cleanup.bat を実行します。

参照

オーケストレーション (BizTalk Server サンプル フォルダー)