CallOrchestration (BizTalk Server サンプル)
CallOrchestration サンプルは、1 つの BizTalk オーケストレーションから別のオーケストレーションを呼び出す方法を示すものです。
このサンプルの処理
このサンプルでは、1 つのオーケストレーションから別のオーケストレーションを呼び出すために、次の一連の手順を実行します。
1 番目のオーケストレーションで、注文書 (PO) メッセージを受信します。
PO の出荷金額を決定するため、1 番目のオーケストレーションから 2 番目のオーケストレーションを呼び出します。
2 番目のオーケストレーションで、要求された出荷金額を計算し、結果を 1 番目のオーケストレーションに返します。
1 番目のオーケストレーションで、返された出荷金額を PO メッセージに反映します。
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 サンプルをビルドおよび初期化するには
コマンド ウィンドウで、次のフォルダーに移動します。
<サンプル パス>\Orchestrations\CallOrchestration\
ファイル Setup.bat を実行すると、次のアクションが実行されます。
CallOrchestration フォルダに、このサンプルの入力 (In) フォルダと出力 (Out) フォルダを作成します。
このサンプルの両方のオーケストレーションを含む Visual Studio プロジェクトをコンパイルしてデプロイします。
BizTalk Server の受信場所、送信ポート、および受信ポートを作成しバインドします。
受信場所を有効にし、送信ポートを開始します。
Note
このサンプルを実行する前に、ビルドと初期化のプロセス中に BizTalk Server でエラーが報告されていないことを確認する必要があります。
このサンプルの実行
CallOrchestration サンプルを実行するには
ファイル InputPO.xml を In フォルダにコピーします。
更新された XML PO ファイルが Out フォルダに作成されることを確認します。 このファイルには元の PO メッセージが含まれます。このメッセージには、前述のように計算後の出荷費用が反映されています。 このファイルの名前の形式は <MessageID>.xml で <、MessageID> はメッセージを一意に識別するために生成される GUID です。
このサンプルのアンインストール
CallOrchestration サンプルをアンインストールするには
Visual Studio コマンド ウィンドウで、次のフォルダーに移動します。
<サンプル パス>\Orchestrations\CallOrchestration\
Cleanup.bat を実行します。