はじめに
IBM App Connect Enterprise(以下 ACEと略します)は、IBMが提供するシステム間連携のソフトウェアで、システム間のさまざまなギャップを整理して連携を実現します。
メッセージフローの作成は直感的に進められますが、いざ実行すると「メッセージが入力されている筈だが出力まで到達しない、動いているかも分からない」「途中でいつもエラーになる」など、思った通りに進まないのは一般的なプログラム開発と同じです。
当記事では、メッセージフロー開発時に発生する問題の追跡方法をご紹介します(本番運用時に必要なログ出力は、さまざまな要素を考慮した設計が必要です)。
WindowsでToolkitがインストールされている想定です、参考にしているACEのバージョンは13.0.2です。
ログの出力先
Windows環境では、Windowsのアプリケーションログとして出力されます。何か問題が発生したら、まずはこちらを確認してください。
Windowsのアプリケーションログはイベントビューアーで参照可能です。

検索バーから「イベント ビューアー」と入力し、表示されるイベントビューアーを選択してください。

ビューアーでは色々な情報が参照できますが、Windowsログ > Application を選択してください。こちらにログが出力されます。
Traceノードを使う
メッセージフローのなかでどのようにデータが受け取れているのか、編集されたのか、などメッセージの内容を確認したいことがあります。
これを実現するためにはTraceノードを使用します。フローの処理のひとつとして、現在のメッセージの内容などを出力することができます。

Traceノードの主要なプロパティは次のとおりです。
Destination
トレースの出力先をUserTrace、File、LocalErrorLogから選択できます。
LocalErrorLogは、前出のログにトレース内容が出力されます。
Fileの場合は、Append形式でトレースを出力します。次のFilePathに出力先のパスを指定してください。
Windowsであれば、PowerShellを開いて次のようなコマンドを実行しておけば、トレース状況を別ウィンドウでリアルタイムに確認することができます。
Get-Content -Wait -Tail 10 -Path トレースファイルのパス
UserTraceの説明は当記事では省略します。
Pattern
Traceとして出力する情報とレイアウトを指定します。
ESQLで参照するデータは${}で囲み宣言します。
例えば次のようなパターンを指定すると、処理時間とメッセージ全体が出力されます。
--${CURRENT_TIMESTAMP}--
${Root}

例に示したパターンでは上のようにログが出力されます。
Traceノードの配置

ノード間に配置することで、トレースの出力有無でフローがどこまで進んだかが直感的に分かると思います。

ノードの間に挟むのではなく、このようにOutターミナルに複数の宛先を設定することもできます。
LOGステートメントを使う
Computeノードの処理でエラーになる場合、ESQL中の任意のタイミングで変数の状態を参照したいことがあります。
そんなときはESQL中でLOGステートメントを使って、必要な情報をログに出力することができます。
SET var1 = OutputRoot.DFDL.mq3msg.record.fld1;
LOG EVENT VALUES ('start', var1, 'end');
上はログに出力する例で、1行目で変数に値を設定し、2行目でログ出力を行なっています。
VALUESには表示する値を固定値や変数で10個まで指定可能です。

上記のESQLを実行すると、上のようなログが出力されます。var1には「dd」という値が格納されたことが分かります。
おわりに
初めて作成するメッセージフローはなかなか狙いどおりに動かなないことがあります。ただ何が起こっているのかを正確に把握できれば、修正手段を考えることは難しくありません。
ぜひ色々な視点からACEを使いこなしてください。
さらに詳しい情報をお探しの方へ
IBMの最新情報、イベント情報、さらに役立つ資料は、以下のIBM Communityでも発信・格納されています。
最新のトレンドや有益な情報をチェックするために、ぜひご覧ください!
-
WebSphere: IBM Community - WebSphere
WebSphere関連の最新情報やディスカッション、イベント情報、技術資料を公開中! -
ELM (Engineering Lifecycle Management): IBM Community - ELM
ELMに関する最新のイベント情報、ナレッジ共有、便利なドキュメントをチェック! -
Integration: IBM Community - Integration
Integrationに関する最新のイベント情報、ナレッジ共有、便利なドキュメントをチェック!