HelloWorld オーケストレーション (動作確認編)

こんにちは、BizTalk Server サポートチームの村岡達也です。

HelloWorld オーケストレーションサンプルの解説 2 回目は、実際に HelloWorld サンプルをインストールして動かしてみたいと思います。

(※BizTalk Server が正しくインストールされていることが前提となりますので、セットアップは完了させておいてください)

 

HelloWorld アプリケーションの中身の解説は、前回のコチラをご覧ください。⇒ HelloWorld オーケストレーション (開発編)

 

 

◆HelloWorld サンプルのインストール

HelloWold サンプルは、In フォルダに置かれたファイル (PO) を BizTalk が自動的に取り込んで、オーケストレーションで Invoice の形式へと変換したあと、Out フォルダに Invoice 形式のファイルを出力するという流れになります。

 

管理者権限のコマンドプロンプトで、サンプルの格納場所にある setup.bat を実行するとインストールが開始します。

 

 

プロジェクトのビルドとデプロイ、ファイルの送受信場所の作成、ポートのバインドの構成が自動的に行われます。

コマンドが成功したことを確認します。

 

 

 

黄色のホストインスタンスの再起動の警告が出ると思いますが、初回デプロイであれば特に再起動は必要ありません。

インストールはこれだけで完了です。続いて動作確認を行います。

 

◆HelloWorld サンプルの動作確認

インストールが完了すると、サンプルの HelloWorld フォルダには In と Out の 2 つのフォルダが作成されます。フォルダ内の SamplePOInput.xml がテスト用の入力データです。このファイルを In フォルダにコピーします。

 

しばらくして、In フォルダにコピーしたファイルが消えて、Out フォルダにファイルが作成されれば動作確認は成功です。

 

入力ファイルの SamplePOInput.xml をメモ帳などで編集して、データを変更してから受信フォルダに投入した場合でも、出力先の Invoice ファイルに結果が正しく反映されることを確認してください。

 

◆グループハブを使用した追跡データの表示

動作確認としては以上で完了なのですが、もう少し範囲を広げて、処理が行われたことを後から確認するための「追跡」の構成をご紹介します。

HelloWorld オーケストレーションのプロパティ画面の「追跡」は既定で無効になっていますので、「イベントの追跡」すべてにチェックをいれます。

 

オーケストレーションの追跡を構成する方法

https://msdn.microsoft.com/ja-jp/library/aa561347.aspx

 

これでオーケストレーションのイベント履歴が追跡データベース (BizTalkDTADb) に保存されるようになり、処理結果を後から参照できるようになります。

追跡を有効にしてから、もう一度メッセージを投入してください。

次に BizTalk 管理コンソールの BizTalk Group を選択して「グループの概要」画面の「完成したインスタンス」をクリックします。

 

 

 

すると [完了] タブが開き、クエリ結果に完了したオーケストレーションが表示されるはずです。

 

さらに、クエリ結果に表示されている項目で右クリック - [オーケストレーションデバッガー] で、実行されたオーケストレーション処理を確認できます。

(ここで気づいたのですが、SDK の HelloWorld サンプルのオーケストレーション名が HelloSchedule になっているのは単に誤植と思われます。気にしないでください。。)

 

「グループの概要」画面は、正常終了している場合だけでなく、問題発生時のトラブルシューティングにも役立ちます。オーケストレーションの途中で処理が止まっていたり、発生しているエラーを把握するうえで大変役に立つ機能ですので、ぜひ活用ください。

 

 

◆BizTalk 管理コンソールでの構成確認

最後に BizTalk 管理コンソールを起動して、HelloWorld アプリケーションの構成を確認していきます。既定では BizTalk Application 1 の配下のオーケストレーション内に、サンプルの HelloWorld オーケストレーションが配置されています。

 

HelloWorld オーケストレーションをダブルクリックしてプロパティを開き、バインド情報を確認してみます。

 

ホストには BizTalkServerApplication が指定され、受信ポート・送信ポートがそれぞれオーケストレーションにバインドされていることが分かります。「論理ポート」はこのオーケストレーション内で定義されているポート名をあらわします。その隣にある受信ポート・送信ポートが、それらに対応する実体の受信ポート・送信ポートをあらわしています。

 

続けてポートの実体である、受信ポート HelloWorldReceivePort と送信ポート HelloWorldSendPort をみていきます。

BizTalk 管理コンソール左ツリーの送信ポートには、HelloWorldSendPort が作成されているはずです。

 


 

さらに HelloWorldSendPort のプロパティを開いてみると、この送信ポートはファイルアダプターを使用して、HelloWorld ディレクトリ内の Out フォルダを送信先に指定していることが確認できます。

 

送信ファイル名の「%MessageID%.xml」は定義済みマクロを使用したもので、BizTalk Server が内部でメッセージを処理するときに割り当てる固有のメッセージ ID をファイル名にしています。他に %SourceFileName% や %time% なども指定することができます。

 

  ファイル名でのマクロの使用に関する制限事項

  https://msdn.microsoft.com/ja-jp/library/aa578022.aspx

 

受信ポートについても同様に確認していきます。送信ポートとは異なり、受信ポートには「受信場所」という概念があります。アダプターの種類や受信フォルダの指定などは、受信ポートではなく、受信場所で構成しています。

 

送信ポートとは異なり、1 つの受信ポートに対して、メッセージを受信する箇所 (つまり受信場所) は複数持つことができるため、このような管理方法となっています。余裕があれば、サンプルに In2 フォルダのような別の受信場所を新規作成して、動作確認してみてください。(新しく受信場所を作成したあとは、手動で「有効」にする必要があるのでお忘れなく)

 

最後に [プラットフォームの設定] > [ホスト インスタンス] を確認します。これは BizTalk アプリケーションが動作しているインスタンスをあらわします。

 


 

既定では BizTalkServerApplication ホストインスタンスの中で、オーケストレーションや受信・送信アダプターなどが共通して動作します。

ホストインスタンスの実体は Windows 上のサービスです。 BTSSvc$BizTalkServerApplication のようなサービス名で、BTSNTSvc.exe プロセス上で動作していることが、タスクマネージャーで確認できます。

(※上記例では Orch ホストというホストを独自に作成している環境のため、2 つの BTSNTSvc.exe が起動しています)

 

今回のまとめです。

・BizTalk 管理コンソールでは送信ポート・受信ポート (受信場所) を構成できる。

・送信ポートはひとつの送信先を、受信ポートは複数の受信場所を持つことができる。

・ホストインスタンスはサービスとして起動していて、BTSNTSvc.exe
プロセスとして動作する。

・実行した処理は追跡データで確認できる。

 

以上でサンプルの動作確認は一通り終わりです。他にも SDK には多数のサンプルが含まれています。ぜひ確認してみてください。