BAM End-to-End (BizTalk Server サンプル)
エンド ツー エンドサンプルでは、BAM を使用して複数のコンポーネント (この場合は 3 つのオーケストレーションとパイプライン) からのイベントを関連付ける方法を示します。
BAM によって、パイプライン コンポーネントとオーケストレーションにまたがるビジネス アクティビティが再構築されます。 最も低いレベルでは、アクティビティに対してより多くのイベントが必要な各実装コンポーネントからの EventStream.EnableContinuation の呼び出しによって動作します。 EnableContinuation の呼び出しは明示的ですが、Orchestration1 と Orchestration2 の呼び出しは、1 つのスケジュールで追跡プロファイルに継続フォルダーを追加し、その後のスケジュールに ContinuationID フォルダーを追加することによって行われます。
次の図は、このサンプルのワークフローを示します。
このサンプルの処理
BAM End-to-End サンプルでは、BAM を使用し、1 つのパイプラインと複数のオーケストレーションから情報を収集して単一のアクティビティを更新する方法を示します。
このサンプルをデザインした方法とその理由
BAM End-to-End サンプルは、次のアクティビティを示すようにデザインされています。
パイプライン内の BAM の使用
追跡プロファイル エディター (TPE) を使用したオーケストレーション内の図形とメッセージの要素へのアクティビティ項目のマップ
複数のソリューションがアクティビティに関連する場合における、Continuation を使用したアクティビティのアクティブ状態の維持
このサンプルの動作は次のとおりです。
入力メッセージは、Samples Path>\BamEndToEnd\Input フォルダーから<取得されます。
パイプライン コンポーネントによって、一意の DocumentID がメッセージに割り当てられ、BAM API を使用して新しい BAM アクティビティが開始されます。 オーケストレーションで利用できるように、入力メッセージの個別の部分として DocumentID が添付されます。
入力メッセージが受信されると、サービス Orchestration1 がアクティブ化されます。
Orchestration1 によって入力メッセージが変更され、パラメーターとして Orchestration2 に渡されます。
Orchestration2 によって入力メッセージが変更され、Orchestration3 をアクティブ化するメッセージ ボックス データベースに送信されます。
Orchestration3 はメッセージを変更し、Samples Path>\BamEndToEnd\Output フォルダー<に書き込みます。
各オーケストレーションによって BAM アクティビティ内のアクティビティ項目が更新されます。
このサンプルの場所
このサンプル <は、サンプル パス>\BAM\BamEndToEnd にあります。
次の表は、このサンプルのファイルとその目的を示しています。
ファイル | 説明 |
---|---|
BamEndToEnd.sln | BAM End-to-End サンプル ソリューション。 |
BamEndToEnd.xls | BAM 定義スタイルシート。 |
BamEndToEnd.xml | BAM 定義 XML。 |
BAMEndToEndBinding.xml | BAM バインド。 |
Cleanup.bat | サンプルの展開解除を行うバッチ ファイル。 |
InputMessage.xml | 入力メッセージ。 |
Setup.bat | サンプルをコンパイルし、展開するバッチ ファイル。 |
\Components\AssemblyInfo.cs | パイプライン コンポーネント コード。 |
\Components\BAMMessagePartPLComponent.cs | パイプライン コンポーネント コード。 |
\Components\Components.csproj | パイプライン コンポーネント プロジェクト。 |
\Messages\InputMessage01.xml ... \Messages\InputMessage10.xml |
サンプル入力メッセージ。 |
\Services\BAMInbound.btp | 受信パイプライン ファイル。 |
\Services\BAMPartSchema.xsd | BAM パート メッセージ スキーマ。 |
\Services\Orchestration1.odx | オーケストレーション。 |
\Services\Orchestration2.odx | オーケストレーション。 |
\Services\Orchestration3.odx | オーケストレーション。 |
\Services\PropertySchema.xsd | プロパティ スキーマ : プロパティ スキーマは、BizTalk Server がプロパティの昇格機能として備えている 2 つのメカニズムのいずれかと組み合わせて使用されます。 |
\Services\Schema1.xsd | メッセージ スキーマ。 |
\Services\Schema2.xsd | メッセージ スキーマ。 |
Services\Schema3.xsd | メッセージ スキーマ。 |
\Services\Services.btproj | Visual Studio BizTalk ファイル プロジェクト。 |
\Services\Transform_1.btm | マップ ファイル。 |
\Services\Transform_2.btm | マップ ファイル。 |
\Services\Transform_3.btm | マップ ファイル。 |
このサンプルの使用方法
次の手順を使用して、BAM End-to-End サンプルをビルドおよび実行します。
このサンプルをビルドして初期化する
管理者としてコマンド プロンプトを開き、[サンプル パス>]\BAM\BAMEndToEnd\Setup.bat を実行<します。 Setup.bat は、このサンプルの BAM インフラストラクチャをビルドして初期化します。 コマンド プロンプトは開いたままにします。
Orchestration1、Orchestration2、および Orchestration3 を BAM アクティビティにマップするための追跡プロファイルを作成します。 (追跡プロファイルの作成は複雑なプロセスであるため、詳細な手順は「 追跡プロファイルを作成するには」という別の手順にあります。この手順は、このドキュメントの後半で説明します)。
前の手順で作成した追跡プロファイル BamEndToEnd.btt を展開します。 コマンド プロンプトで、Samples Path>\BAM\BamEndToEnd ディレクトリに<変更します。 追跡プロファイルを展開するには、次の行を入力し、 Enter キーを押します。
“<BizTalkInstallationPath>\Tracking\bttdeploy” BamEndToEnd.btt
追跡プロファイル管理ユーティリティを使用して追跡プロファイルを展開する方法 について詳しくは、以下をご覧ください。
重要
ContinuationID Orch1_ に一致する Continuation がないことを示すメッセージは無視できます。 Orch1_ という名前の Continuation は追跡プロファイルではなくパイプライン コンポーネントで定義されているので、このメッセージが表示されます。
このサンプルを実行する
サンプル パス>\BamEndToEnd\InputMessage.xml ファイル<を Samples Path>\BamEndToEnd\Input フォルダー<にコピーします。 数秒後、メッセージは Input フォルダーから消え、出力メッセージは Samples Path>\BamEndToEnd\Output フォルダーに<表示されます。
BAM データを表示する
SQL Server Management Studio を開きます。
SQL Server Management Studioで、サーバーを展開し、[データベース]、[BAMPrimaryImport]、[テーブル] の順に展開します。
dbo.bam_EndToEndActivity_Completedを右クリックし、[テーブルを開く] をクリックします。 SQL Serverを使用している場合は、[上位 1000 行を選択] をクリックします。
bam_EndToEndActivity_Completed テーブルの内容が右ペインに表示されます。 このテーブルの各行は、完了した EndToEndActivity アクティビティを表します。
このサンプルを再実行する
管理者としてコマンド プロンプトを開き、Samples Path>\BAM\BamEndToEnd ディレクトリに<変更します。 次の行を入力します。
“C:\Program Files\Microsoft BizTalk Server <version>\Tracking\bttdeploy” BamEndToEnd.btt /remove
Note
BizTalk Serverを C ドライブにインストールしなかった場合は、"C" をBizTalk Serverインストールしたドライブ文字に置き換えます。
サンプルパス>\BAM\BAMEndToEnd\Cleanup.bat を実行<します。 Cleanup.bat は、このサンプルの BAM インフラストラクチャを削除します。
このトピックの「 このサンプルをビルドして初期化するには 」セクションの手順を実行します。
追跡プロファイルを作成する
[スタート] をクリックし、[すべてのプログラム] をポイントし、[Microsoft BizTalk Server 20xx] をポイントします。 [追跡プロファイル エディター] を右クリックし、[管理者として実行] をクリックします。
[追跡プロファイル エディター] ウィンドウの左側のウィンドウで、[ここをクリックして BAM アクティビティ定義をインポートします] をクリックします。
[BAM アクティビティ定義のインポート] ダイアログ ボックスの [BAM アクティビティ定義名] セクションで、[EndToEndActivity] を選択し、[OK] をクリックします。
[ 追跡プロファイル エディター ] ウィンドウの右側のウィンドウで、[ ここをクリックしてイベント ソースを選択します] をクリックします。
[イベント ソース親アセンブリの選択] ダイアログ ボックスの [アセンブリ名] セクションで、[Microsoft.Samples.BizTalk.BamEndToEnd.Services] を選択し、[次へ] をクリックします。
[オーケストレーションの選択] ダイアログ ボックスの [オーケストレーション名] セクションで、[BamEndToEnd.Services.Orchestration1] を選択し、[OK] をクリックします。
[追跡プロファイル エディター] ウィンドウの左側のウィンドウで、[EndToEndActivity] を右クリックし、[新しい継続 ID] をクリックします。 新しい継続 ID に Orch1_という名前を 付けます。 この手順を繰り返して、 Orch2_ と Orch3_ という名前の継続 ID をさらに 2 つ作成します。
[EndToEndActivity] を右クリックし、[新しい継続] をクリックします。 新しい継続Orch2_に名前を 付けます。 この手順を繰り返して 、Orch3_という名前の別の継続を作成します。
Receive1 図形を右クリックし、[コンテキスト プロパティ スキーマ] をクリックします。
[コンテキスト プロパティ名] リストの末尾までスクロールし、[BAMEndToEnd.Services.PropertySchema.DocumentID] をダブルクリックします。
[スキーマ] を>展開<し、右側のウィンドウで DocumentID をドラッグして、左側のウィンドウでOrch1_します。
矢印付きのフォルダー アイコン () を 2 回クリックしてオーケストレーションを表示します。
右側のウィンドウの Receive1 図形を左ペインの SBegin1 にドラッグします。
右ペインの StartOrchestration_1 図形を左ペインの SEnd1 にドラッグします。
StartOrchestration_1図形を右クリックし、[メッセージ ペイロード スキーマ] をクリックします。
[メッセージ] 列の値 "Message_2" と [パーツ] 列の値 "MessageBody" を含む行をダブルクリックします。
message_2 を
[ スキーマ 2] を展開し、右側のウィンドウの Data2 を左側のウィンドウの Data1 にドラッグします。
[ イベント ソースの選択] をクリックし、[ コンテキスト プロパティの選択] をクリックします。
[コンテキスト プロパティ名] リストの末尾までスクロールし、[BAMEndToEnd.Services.PropertySchema.DocumentID] をダブルクリックします。
[スキーマ] を>展開<し、左側のウィンドウで DocumentID をOrch2_継続にドラッグします。
Note
Orch2_ Continuation と Orch2_ Continuation ID を混同しないように注意してください。 継続 ID を表すアイコンにはキーが含まれています ( のアイコン)、継続を表すアイコンにはキー (継続) が含まれていません。
[ イベント ソースの選択] をクリックし、[ オーケストレーション スケジュールの選択] をクリックします。
[イベント ソース親アセンブリの選択] ダイアログ ボックスの [アセンブリ名] セクションで、[Microsoft.Samples.BizTalk.BamEndToEnd.Services] を選択し、[次へ] をクリックします。
[オーケストレーションの選択] ダイアログ ボックスの [オーケストレーション名] セクションで、[BamEndToEnd.Services.Orchestration2] を選択し、[OK] をクリックします。
ConstructMessage_1図形を右クリックし、[メッセージ ペイロード スキーマ] をクリックします。
[メッセージ] 列の値 "Message_3" を含む行と、Part 列の値 "BAMPart" をダブルクリックします。
BAMPart を展開し、右側のウィンドウで DocumentID を左ペインのOrch2_継続 ID にドラッグします。
Note
Orch2_ Continuation と Orch2_ Continuation ID を混同しないように注意してください。 継続 ID を表すアイコンにはキーが含まれています ( のアイコン)、継続を表すアイコンにはキー (継続) が含まれていません。
矢印付きのフォルダー アイコン ( のボタン) を 2 回クリックしてオーケストレーションを表示します。
右ペインの ConstructMessage_1 図形を左ペインの SBegin2 にドラッグします。
右ペインの Send_1 図形を左ペインの SEnd2 にドラッグします。
Send_1図形を右クリックし、[メッセージ ペイロード スキーマ] をクリックします。
Message 列の値 "Message_3" と Part 列の値 "MessageBody" を含む行をダブルクリックします。
[ スキーマ 3] を展開し、右側のウィンドウの Data3 を左側のウィンドウの Data2 にドラッグします。
右側のウィンドウの上にあるドロップダウン リストから、[ メッセージ ペイロード スキーマ] を選択します。
[メッセージ] 列の値 "Message_3" を含む行と、Part 列の値 "BAMPart" をダブルクリックします。
BAMPart を展開し、右側のウィンドウで DocumentID を左ペインのOrch3_継続にドラッグします。
Note
Orch3_ Continuation と Orch3_ Continuation ID を混同しないように注意してください。 継続 ID を表すアイコンにはキーが含まれています ( のアイコン)、継続を表すアイコンにはキー (継続) が含まれていません。
[ イベント ソースの選択] をクリックし、[ オーケストレーション スケジュールの選択] をクリックします。
[イベント ソース親アセンブリの選択] ダイアログ ボックスの [アセンブリ名] セクションで、[Microsoft.Samples.BizTalk.BamEndToEnd.Services] を選択し、[次へ] をクリックします。
[オーケストレーションの選択] ダイアログ ボックスの [オーケストレーション名] セクションで、[BamEndToEnd.Services.Orchestration3] を選択し、[OK] をクリックします。
Receive1 図形を右クリックし、[メッセージ ペイロード スキーマ] をクリックします。
[メッセージ] 列の値 "Message_3" を含む行と、Part 列の値 "BAMPart" をダブルクリックします。
BAMPart を展開し、右側のウィンドウで DocumentID を左ペインのOrch3_継続 ID にドラッグします。
Note
Orch3_ Continuation と Orch3_ Continuation ID を混同しないように注意してください。 継続 ID を表すアイコンにはキーが含まれています ( のアイコン)、継続を表すアイコンにはキー (継続) が含まれていません。
矢印付きのフォルダー アイコン () を 2 回クリックしてオーケストレーションを表示します。
右側のウィンドウの Receive1 図形を左ペインの SBegin3 にドラッグします。
右ペインの Send_1 図形を左ペインの SEnd3 にドラッグします。
Send_1図形を右クリックし、[メッセージ ペイロード スキーマ] をクリックします。
[ スキーマ 3] を展開し、右側のウィンドウの Data3 を左側のウィンドウの Data3 にドラッグします。
Orch2_継続の下にある DocumentID を右クリックし、[ポート マッピングの設定] をクリックします。
Note
Orch2_ Continuation と Orch2_ Continuation ID を混同しないように注意してください。 継続 ID を表すアイコンにはキーが含まれています ( のアイコン)、継続を表すアイコンにはキー (継続) が含まれていません。
[ ポートの選択 ] ダイアログ ボックスの [ポートの 選択 ] セクションで、[ BamEndToEnd_ReceivePort] をクリックし、より大きい記号 (>) をクリックし、[OK] をクリック します。
追跡プロファイルを <Samples Path>\BAM\BamEndToEnd\BamEndToEnd.btt に保存します。
重要な詳細
追跡プロファイルは、パイプラインではサポートされていません。 ただし、パイプライン コンポーネントの BeginActivity の呼び出しは、オーケストレーションで ActivityID を使用するのと同じです。 EnableContinuation の呼び出しは、オーケストレーションで継続を使用する場合と同じです。