コンテンツへスキップ
← ブログに戻る

この記事のモジュール: Message Monitor

SAP CPI のメッセージを Message ID または Correlation ID で探す方法

SAP CPI の Message ID、Correlation ID、Application ID の出どころ、モニターと API での検索方法、そしてメッセージと関連メッセージを開く方法を解説します。

SAP CPI のメッセージを Message ID または Correlation ID で探す方法

取引先から、注文が失敗したという連絡とともに ID が送られてきました。それは Message ID でしょうか、Correlation ID でしょうか、それとも先方の注文番号でしょうか。そして、どの iFlow がそれを処理したのでしょうか。SAP Cloud Integration(SAP CPI)では、これらの ID はそれぞれ意味が異なり、探し方も異なります。

この記事では、3 種類の ID、SAP のモニターと API での検索方法、自分のメッセージを見つけやすくする方法、そして任意のメッセージを関連メッセージとともに 1 ステップで開く方法を説明します。

Message ID、Correlation ID、Application ID

  • Message ID:1 つのメッセージ処理ログ(MPL)の ID です。iFlow の中では header SAP_MessageProcessingLogID がこれを保持し、HTTPS センダーは同じ名前のレスポンス header で呼び出し元に返します。
  • Correlation ID:互いに関連するメッセージのログが共有する ID です。たとえば、あるメッセージと、それが ProcessDirect や JMS で渡したメッセージです。header SAP_MplCorrelationId がこれを保持します。
  • Application ID:注文番号などの独自のビジネスキーで、header SAP_ApplicationID に設定します。モニターに表示され、検索にも使えます。

ID を受け取ったとき、Message ID なら 1 件のメッセージが、Correlation ID なら一連のメッセージ全体が、Application ID なら相手の言葉で言うところのそのメッセージが見つかります。

SAP のモニターで検索する

  1. Monitor Message Processing を開きます。
  2. メッセージが実行された時刻を含むように期間を広げます。選んだ期間外のメッセージは表示されません。
  3. 検索欄に ID を入力するか、先に iFlow とステータスを選んで一覧を絞り込みます。
  4. メッセージを開き、ログ、エラー、そして過去 1 時間以内にトレースされていればそのトレースを確認します。

API で検索する

Cloud Integration の OData API は同じログを読み取ります。スクリプトやサポートツールで役に立ち、モニターの期間に左右されません。

GET https://<tenant>/api/v1/MessageProcessingLogs('<Message ID>')

GET https://<tenant>/api/v1/MessageProcessingLogs?$filter=CorrelationId eq '<Correlation ID>'&$orderby=LogStart

GET https://<tenant>/api/v1/MessageProcessingLogs?$filter=ApplicationMessageId eq '<your ID>'

呼び出しには、その tenant でモニタリング権限を持つユーザーが必要です。

メッセージを見つけやすくする

Message ID も Correlation ID も、業務担当者にとっては意味がありません。ビジネスキーは自分でログに書き込みましょう。Application ID として、そしてモニターに表示され検索にも使えるカスタム header プロパティとして書き込みます。

import com.sap.gateway.ip.core.customdev.util.Message

def Message processData(Message message) {
    def orderId = message.getProperty("orderId") as String
    // Shown and searchable in the monitor as a custom header property.
    messageLogFactory.getMessageLog(message)?.addCustomHeaderProperty("OrderId", orderId)
    // Shown in the monitor as the message's Application ID.
    message.setHeader("SAP_ApplicationID", orderId)
    return message
}

iFlow 間で受け渡すべき値については、ProcessDirect と JMS の header に関する記事で、それぞれのリンクで何が渡るのかを説明しています。

デザイナーから任意のメッセージを開く

  1. デザイナーで「Kitegra ツール」ボタンをクリックし、「メッセージログ」を選びます。ログビューアーが新しいタブで開きます。ビューアーはデザイナーのタブを通じて SAP を読み取るので、デザイナーのタブは開いたままにしてください。
  2. 「Message ID または Correlation ID」と書かれた欄に ID を貼り付け、「検索」を選びます。tenant のどの iFlow のメッセージでもここで開けます。
  3. タブでメッセージを確認します。「概要」、「Body とヘッダー」、「アダプター」、「永続化」、「添付ファイル」です。
  4. 「タイムライン」タブを開くと、同じ Correlation ID を持つすべてのメッセージが、iFlow、ステータス、開始時刻、所要時間とともに一覧表示されます。トレースは不要です。
  5. 一覧から探す場合は、iFlow(または「すべての iFlow」)、ステータス、「開始日」と「終了日」の時刻で絞り込みます。

開いている iFlow の「メッセージ」パネルでは、「ID をコピー」でメッセージの ID をコピーでき、「SAP のメッセージモニターで開く」で SAP 自身のページを開けます。見つけたメッセージをトレースするには メッセージをステップごとにトレースするを、意図的にメッセージを作るには サービスキーで HTTPS iFlow をテストするを参照してください。

Kitegra でできること

ログビューアーは、Kitegra の Message Monitor の一部です。メッセージの内容はページ内に表示されるだけで、保存も Kitegra への送信もされません。

Helper、Message Monitor、iFlow Inspector、iFlow Docs は、それぞれ使用した iFlow の数をカウントします。Kitegra アカウントなしではモジュールごとに 5 つ、Free プランでは 50、Starter では 100、Pro では 300 です。Startup Team はメンバーごとに 300、Growth Team と Scale Team は上限なしです。Toolbox とワークスペースの追加機能は iFlow をカウントしません。Kitegra のローンチ期間中は、Free プランを含め、サインインしているすべての人がすべてのツールを使えます。プランを比較する。

次の iFlow で試してみましょう

Kitegra が SAP Integration Suite のデザイナーに何を加えるのかを読むか、Kitegra のほかの Chrome 拡張機能と並べて確認できます。

よくある質問

SAP CPI の Message ID と Correlation ID の違いは何ですか?

Message ID は 1 つのメッセージ処理ログを識別します。Correlation ID は、ProcessDirect や JMS をまたぐものなど、互いに関連するメッセージのログが共有します。

HTTPS 呼び出しの Message ID はどこで見つかりますか?

レスポンス header です。HTTPS センダーは SAP_MessageProcessingLogID を呼び出し元に返します。

モニターで Message ID が見つからないのはなぜですか?

たいていは期間が狭すぎます。メッセージが実行された時刻を含むように期間を広げるか、API でログを読み取ってください。

自社の注文番号で SAP CPI のメッセージを検索できますか?

できます。ただし、iFlow がそれを SAP_ApplicationID やカスタム header プロパティとしてログに書き込んでいる場合に限ります。

ログビューアーにはトレースが必要ですか?

いいえ。メッセージの検索、概要、タイムラインはトレースなしで使えます。各ステップの前のボディと header を見るには、過去 1 時間以内に TRACE で実行されたメッセージが必要です。

開いたメッセージは Kitegra に見えますか?

いいえ。メッセージの内容はページ内に表示されるだけで、保存も Kitegra への送信もされません。

デザイナーを離れずに iFlow を操作

Kitegra を Chrome または Microsoft Edge に追加しましょう。アカウント不要で無料で始められます。