メッセージの表示、検索、および管理
プロダクション内のすべての通信は、メッセージ を使って行われ、管理ポータルには、メッセージを表示し、使用するためのツールが数多く用意されています。"他のプロダクションからのメッセージの表示" も参照してください。
メッセージに関する背景情報は、"概念" を参照してください。
メッセージの参照
プロダクションが送信またはキューに格納したメッセージに関する情報を表示できます。[Interoperability]→[表示]→[メッセージ] ページにメッセージが表示されます。メニューからこのページにアクセスするだけでなく、[プロダクション構成] ページの [メッセージ] タブの上部にある [メッセージ・ビューワに移動] を選択してアクセスすることもできます。
中央部にメッセージが一覧で表示されます。この部分を更新するには、[検索] ボタンをクリックします。左下部を使用してメッセージのリストをフィルタリングできます。詳細は、以下の節を参照してください。右側部には詳細が表示されます。"メッセージの詳細表示" および "関連メッセージのパスのトレース" を参照してください。
表示可能な情報
このページの上部には各メッセージに関する以下の情報が表示されます。
-
[ID] — メッセージの ID。"メッセージの基本設定" を参照してください。
-
[作成日時] — メッセージ作成のタイム・スタンプ。"呼び出しスタイルおよびメッセージタイム・スタンプ" を参照してください。
-
[セッション] — このメッセージに関連付けられたセッション ID。"セッション" を参照してください。
テーブルの任意の行の [セッション] の番号を選択すると、プロダクション内を移動するメッセージ・オブジェクトのビジュアル・トレースを表示できます。
-
[ステータス] — メッセージのステータスを示します。"メッセージ・ステータス" を参照してください。
-
[エラー] — メッセージを送信したビジネス・ホストに返された結果の簡単な概要を示します。
OK は正常動作を意味し、Retry はメッセージが失敗したが、それを送信したビジネス・ホストがそのメッセージを再試行するように構成されていることを意味します。Error はアクティビティのどこかでエラーが報告されたことを示します。Inactive はメッセージを送信したビジネス・ホストが [非活動タイムアウト] 設定より長い間アイドル状態だったことを意味します。診断が必要な場合があります。
-
[ソース] — メッセージの送信元のビジネス・ホスト。
-
[ターゲット] — メッセージの送信先のビジネス・ホスト。
[セッション] 列は、以下のように色を使っても表示されます。
背景色 | 意味 |
---|---|
赤 | メッセージにエラーが発生しました。 |
緑 | メッセージは、セッションの開始段階を示します。 |
銀 | メッセージは、タイムアウト後に到着しているので、破棄するメッセージに指定されています。 |
オレンジ | メッセージは一時停止状態です。 |
白と淡黄色 (交互の行) | これらのメッセージには問題は発生していません。またはキューに格納されています。 |
メッセージ・バンク・ビューワを使用している場合、検索するメッセージ・バンク・クライアントを指定するための追加オプションがあります。"エンタープライズ・メッセージ・バンクの使用法" を参照してください。
複数ページにわたるメッセージ表示
通常、メッセージは複数ページにわたって表示されます。すべてのメッセージを参照するには、以下のオプションがあります。
-
メッセージの次のページを表示できます。そのためには、[次] をクリックします。
-
より多くのメッセージを表示できます。そのためには、[ページサイズ] でより大きい値を選択し、再度 [検索] をクリックします。
メッセージのデフォルト数は 100 です。
-
メッセージの前のページを表示できます。そのためには、[前] をクリックします。
-
メッセージのソート方法を変更できます。そのためには、[ソート順序] で異なる値をクリックします。
また、[時刻形式] を使用して、時刻のみを表示するか、日付と時刻を表示するかを指定することもできます。デフォルトは [日付と時刻] です。
読み取り専用の [ページ] フィールドは、リストのどのページが表示されているかを示します。
メッセージのフィルタリング
さらに簡単に特定のメッセージを見つけるために、[Interoperability]→[表示]→[メッセージ] ページに表示されるメッセージをフィルタリングできます。基本的な手順は以下のとおりです。
-
フィルタ条件を指定します。通常、以下の異なる 2 通りの方法で実行できます。
-
[検索] をクリックします。ページが再表示され、指定したフィルタ条件に一致するメッセージのリストが表示されます。検索がまだ完了していない場合は、[キャンセル] をクリックして検索を中断できます。
また、[リセット] をクリックすると、デフォルトの条件がリストアされます。
-
検索結果が表示可能数を超えた場合、[次] ボタンがアクティブとなり、使用できるようになります。また、表示可能数を多くするには、[ページサイズ] で大きい値を選択し、再度 [検索] をクリックします。さらに、フィルタ条件を調整し、検索を絞り込みます。
-
必要に応じて、[保存] または [名前を付けて保存] をクリックし、後で再使用するために検索条件を保存します。検索条件の名前を入力するフィールドが表示されます。値を入力し、チェック・マークをクリックします。
この操作によって、以前に同じ名前で保存された条件がある場合、上書きされます。
保存されている検索を削除するには、[検索条件の保存] リストで名前をクリックしてから、赤い [X] をクリックします。
タイム・アウト — 特に大きなメッセージ・バンクを検索している場合、結果を返す前に検索がタイム・アウトする可能性があります。このタイム・アウトは、Web ゲートウェイの [サーバ応答タイムアウト] パラメータを大きくすることで回避できます。[サーバ応答タイムアウト] パラメータを大きくする方法の詳細は、"既定のパラメータの構成" を参照してください。パラメータのデフォルト値は 60 秒です。
基本条件によるフィルタリング
[Interoperability]→[表示]→[メッセージ] ページに表示されているメッセージをフィルタリングするには、[基本条件] 領域で以下のフィールドの一部またはすべてを指定します。
-
[ステータス] — ドロップダウン・リストから値を選択します。"メッセージ・ステータス" を参照してください。
-
[タイプ] — ドロップダウン・リストから値を選択します。選択肢は、[セッション開始]、[リクエスト]、[レスポンス]、または [すべて] (デフォルト) のいずれかです。
-
[開始時刻] — 必要なメッセージが作成されたタイム・スタンプのうち最も早い時間を入力します。"呼び出しスタイルおよびメッセージタイム・スタンプ" を参照してください。
-
[開始Id] — 必要なメッセージ ID のうち最小の値を入力します。
-
[終了時刻] — 必要なメッセージが作成されたタイム・スタンプのうち最も遅い時間を入力します。
-
[終了Id] — 必要なメッセージ ID うち最大の値を入力します。
-
[ソース] — メッセージの送信元のビジネス・ホスト。リストから選択します。
-
[ターゲット] — メッセージの送信先のビジネス・ホスト。リストから選択します。
メッセージ・バンク・ビューワを使用している場合、検索を 1 つのメッセージ・バンク・クライアントに制限する追加フィルタがあります。"エンタープライズ・メッセージ・バンクの使用法" を参照してください。
拡張条件によるフィルタリング
[拡張条件] 部分を使用すると、さらに限定した条件で表示メッセージをフィルタリングできるようになります。詳細フィルタは、論理演算子 AND および OR で組み合わせた、1 つ以上の条件から成ります。各条件には、メッセージに格納されているあらゆる情報、豊富なセットから比較演算子、および任意の式を使用できます。組み合わせた条件のすべてを満たすメッセージのみが表示されます。
この部分を使用するには、[拡張条件] の横にある三角形をクリックします。以下のいずれかを実行します。
-
条件を追加するには、[条件の追加] をクリックします。最初のサブセクションを参照してください。
-
OR を追加するには、[OR の追加] をクリックします。デフォルトでは、条件を AND で組み合わせます。このオプションを使用し、隣接した条件を AND ではなく、OR で組み合わせます。"条件の組み合わせ方法" を参照してください。
これらの項目を追加すると、[拡張条件] のリストに選択内容が表示されます。以下に例を示します。
希望どおりに選択したら、[検索] をクリックします。[メッセージ・ビューワ] ページに、指定したフィルタ条件すべてに一致するメッセージのリストが表示されます。
条件の追加
条件を追加するには、[条件の追加] をクリックします。以下のようなウィザードが表示されます。
以下の値を指定します。
-
[条件の有効化] — 選択してこの検索を有効にします。
-
[条件タイプ] — リストから値を選択します。次の項を参照してください。
-
[クラス] — リストからクラス名をクリックします。"クラス" の項を参照してください。
-
[条件] — 論理文のフィールドと値を指定できます。"条件" の項を参照してください。
-
[値の表示] — 指定したい値を追加し、テーブルに表示させることができます。選択した値が、テーブルの右側に表示されます。
[OK] をクリックし、この条件を保存すると、[拡張条件] リストに追加されます。
条件タイプ
必要に応じて、[条件タイプ]で、ドロップダウン・リストから値を選択します。以下のテーブルには選択項目が表示され、これらの項目がその次の [クラス] フィールドと [条件] フィールドの選択項目に与える影響が示されています。
タイプ | [クラス] と [条件] の参照先 |
---|---|
本文のプロパティ | 標準のプロダクション・メッセージ本文オブジェクトのプロパティ。 |
ヘッダ・フィールド | 標準のプロダクション・メッセージ・ヘッダ・オブジェクトのフィールド。 |
OR | (2 つのフィルタ条件を論理 OR で適用する場合に使用します) |
SearchTable フィールド | このネームスペース内で定義した検索テーブル・クラスのエントリ。検索テーブル・クラスは、仮想ドキュメントを操作するために作成する特殊なツールです。 |
VDoc セグメントのフィールド | 仮想ドキュメントのメッセージ・セグメント内のフィールド。標準と興味のあるセグメントを指定します。次に、そのセグメントのフィールド・リストから選択するよう求めるプロンプトが表示されます。 |
VDoc のプロパティのパス | 仮想ドキュメントのメッセージ・セグメントのフィールド。標準を指定してから、その標準に有効なメッセージ・セグメントとフィールドを指定する仮想プロパティのパスを入力します。 |
[追加条件] インタフェースの VDoc フィールドについての背景情報は、"プロダクション内での仮想ドキュメントの使用法" を参照してください。プロダクションであるタイプの仮想ドキュメントをルーティングしない限り、これらのフィールドを使用する必要はありません。
クラス
必要に応じて、[クラス]で、ドロップダウン・リストから値を選択します。選択された [条件タイプ] に適したすべてのクラスが一覧で表示されます。以下に例を示します。
タイプ | クラス名 |
---|---|
本文のプロパティ | このネームスペース内のすべてのメッセージ・クラスから選択します。 |
ヘッダ・フィールド | — |
OR | — |
SearchTable フィールド | このネームスペース内のすべての検索テーブル・クラスから選択します。 |
VDoc セグメントのフィールド | このネームスペース内のすべての仮想ドキュメント・クラスから選択します。 |
VDoc のプロパティのパス | このネームスペース内のすべての仮想ドキュメント・クラスから選択します。 |
フィルタ条件
[条件] で、左から順に論理文のフィールドと値を、以下のように指定します。
-
1 つ目のセルでは、ドロップダウン・リストから値を選択します。リストにはこのコンテキストに適した選択項目がすべて含まれています。詳細は、以下の最初のテーブルを参照してください。
-
2 つ目のセルで、ドロップダウン・リストから比較演算子を選択します。以下の 2 つ目のテーブルを参照してください。
-
3 つ目のセルには、選択した演算子を使用して一致させるリテラル文字列を入力します。
この文字列の前後に二重引用符を使用しないでください。
[条件] パネルの選択項目は、[タイプ] での選択に応じて異なります。以下のテーブルで、選択項目について説明します。
タイプ | 条件 |
---|---|
本文のプロパティ | [クラス名] のメッセージ・クラスにあるすべてのプロパティから選択します。 |
ヘッダ・フィールド | — |
OR | — |
SearchTable フィールド | [クラス名] の検索テーブル・クラスで定義されたすべての検索テーブル・エントリから選択します。 |
VDoc セグメントのフィールド | [セグメント・タイプ] で値を選択してから、[フィールド名]に値を選択します。(または、該当する値がわかれば、タイプの値)
一部のスキーマについては、名前よりも数字参照を使用したい場合に、例えば、[5]、[18.1]、または 2.3.1:[3().1] など数字参照を入力できます。カテゴリ参照およびコロン接頭語は削除できますが、角かっこおよびそのコンテンツはそのままにしておきます。 角かっこは中かっことは異なり、segment:field の組み合わせを囲みます。この場合、含まれるドキュメント構造を識別する必要がありません。 |
VDoc のプロパティのパス | [ドキュメントタイプ] で値を選択してから、[プロパティ・パス]で値を選択します。(または、該当する値がわかれば、タイプの値)
左側の [条件] フィールドに表示するオプションを選択する代わりに、このフィールドに仮想プロパティのパスを入力できます。ただし、正しい構文を使用するように注意してください。中かっこの構文には、識別のため、特定のメッセージ構造が必要です。 |
[条件] の文の 2 つの値の間の比較演算子は、以下のいずれかになります。
演算子 | 条件が真となる左側の値の状況 |
---|---|
= | 右側の値と等しくなります。 |
!= | 右側の値と等しくなりません。 |
> | 演算子の右側の値より大きくなります。 |
>= | 右側の値より大きいか、または等しくなります。 |
< | 右側の値より小さくなります。 |
<= |
右側の値より小さいか、または等しくなります。 >、>=、<、または <= の条件に文字列が含まれている場合、それらはアルファベット順に並べ替えられ、結果が決定されます。記号と数字はアルファベットよりも前に並べられます。 |
Contains |
右側のサブ文字列を含む文字列です。 Contains 演算子では、大文字と小文字が区別されます (検索テーブル・フィールド内の場合は除く)。左側の値が Hollywood, California で、右側の値が od, Ca の場合は一致と見なされますが、値が Wood の場合は一致と見なされません。 検索テーブル・フィールドでの Contains 演算子は、特定の検索テーブル・クラスの実装に応じて、大文字と小文字の区別の有無が異なります。 |
DoesNotContain | 右側のサブ文字列を含まない文字列です。 |
DoesNotMatch | 右側に指定された文字列のパターンに一致しない文字列です。このパターンでは、ObjectScript の ? というパターン・マッチング演算子に適した構文が使用されます。詳細は、"パターン・マッチング (?)" リファレンスページを参照してください。 |
In | 右側のカンマ区切り文字列内の項目の 1 つと同じです。 |
NotIn | 右側のカンマ区切り文字列内の項目のいずれとも同じではありません。 |
StartsWith | 右側のサブ文字列で始まる文字列です。 |
DoesNotStartWith | 右側のサブ文字列で始まらない文字列です。 |
Like |
SQL の LIKE 述部のルールに従って、右側に指定されたサブ文字列のパターンに一致する文字列です。 Like 条件および NotLike 条件のマッチングでは、_ の文字は任意の 1 文字に一致し、% はゼロ個以上の任意の文字列に一致します。したがって、左側の値にパターン %Com_ が含まれ、選択された演算子が Like の場合、TransCom1 と UltraCom2 の値は一致しますが、UltraCom17 と Foxcom8 の値は一致しません。 |
Matches |
右側に指定された文字列のパターンに一致する文字列です。このパターンでは、ObjectScript の ? というパターン・マッチング演算子に適した構文が使用されます。詳細は、"パターン・マッチング (?)" のリファレンス・ページを参照してください。 |
NotLike | SQL の LIKE 述部のルールに従って、右側に指定されたサブ文字列のパターンに一致しない文字列です。 |
InFile | 右側に指定された完全パスを持つテキスト・ファイル内に見つかります。 |
NotInFile | 右側に指定された完全パスを持つテキスト・ファイル内に見つかりません。 |
InterSystems IRIS は、仮想ドキュメントをインデックス付け (つまり、検索テーブルに追加) すると、縦棒 (|) をプラス記号 (+) に置き換えます。検索テーブルを使用して内容を検索する際には、このことを考慮してください。例えば、my|string という文字列を含むメッセージを検索するには、検索条件として my+string を使用します。
条件の再配置および変更
[拡張条件] セクションに複数の項目がある場合、上向き矢印と下向き矢印のアイコンをクリックして順序を調整できます。
項目を編集するには、その項目の編集ボタン をクリックします。
項目を削除するには、[X] をクリックします。
条件の組み合わせ方法
[拡張条件] に複数の条件が表示されている場合、これらの条件は AND で暗黙的に結合されます。例えば、3 つの文が表示されていると想定します。
Logical Statement 1 Logical Statement 2 Logical Statement 3
この場合、フィルタは次のように機能します。
Logical Statement 1 AND Logical Statement 2 AND Logical Statement 3
このロジックを変更するには、必要に応じて、[OR の追加] を使用し、OR の配置を変更することもできます。OR 行と 4 つ目の論理文を上記のリストに追加したとします。[拡張条件] パネルは、以下のようになります。
Logical Statement 1 Logical Statement 2 Logical Statement 3 OR Logical Statement 4
その結果として、ロジックは以下のようになります。
Logical Statement 1 AND Logical Statement 2 AND Logical Statement 3 OR Logical Statement 4
演算子 AND は OR よりも結合が強いので、上記シーケンスの結果は実際には以下のようになります。
(1 AND 2 AND 3) OR 4
メッセージの詳細表示
InterSystems IRIS では、メッセージがどのように作成され、送信されたかに関する詳細をメッセージごとに確認できます。複数の場所から関連ページにアクセスできます。以下に例を示します。
-
[Interoperability]→[表示]→[メッセージ] ページにアクセスします。
-
メッセージを選択します。
右ペインに以下のタブが表示されます。
-
[ヘッダ] — "メッセージ・ヘッダのフィールド" が表示されます。
-
[本文] — "メッセージ本文のフィールド" が表示されます。
-
[コンテンツ] — 適切な形式で "メッセージ本文のコンテンツ" が表示されます。
-
[トレース] — プロダクション内を移動するメッセージと関連メッセージの小さなビジュアル・トレースが表示されます。拡大版 ([ビジュアル・トレース] ページ) を表示させるには、[完全なトレースを表示] をクリックします。
次の項では、[ヘッダ]、[本文]、[コンテンツ] のタブについて説明します。
[トレース] タブには、拡大版の[ビジュアル・トレース] ページで参照できるデータとオプションのサブセットが表示されます。[ビジュアル・トレース] ページは、次の項に記載されています。
メッセージ・ヘッダ・フィールド
[ヘッダ] タブでは、プロダクション・メッセージ・ヘッダに標準フィールドが表示されます。
-
[オブジェクトId] — メッセージ・ヘッダの ID (およびメッセージ ID。"メッセージの基本設定" を参照してください)。
-
[ターゲット構成名] — メッセージを受信する予定のビジネス・ホストの名前。
-
[タイプ] — メッセージの種類。[要求] または [応答] です。
-
[呼び出し] — メッセージがどのように送信されたかを示します。"呼び出しスタイルおよびメッセージタイム・スタンプ" を参照してください。
-
[関連メッセージId] — 要求メッセージの場合、このフィールドに対応する応答 (存在する場合) のメッセージ ID が含まれるか、空白となります。応答メッセージの場合、このフィールドには、対応する要求のメッセージ ID が含まれます。
-
[セッションID] — このメッセージに関連付けられたセッション ID。"セッション" を参照してください。
-
[ソース構成名] — メッセージの送信元のビジネス・ホスト。
-
[SourceBusinessType] — [BusinessService]、[BusinessProcess]、[BusinessOperation]、または [不明] のいずれか。
-
[TargetBusinessType] — [BusinessService]、[BusinessProcess]、[BusinessOperation]、または [不明] のいずれか。
-
[BusinessProcessId] — 実行された各ビジネス・プロセスにはインスタンスがあり、ここにはそのインスタンスのオブジェクト ID が表示されます。メッセージが要求であれば、このフィールドでは、メッセージが作成されたビジネス・プロセスのコンテキスト (送信者) を指定します。メッセージが応答であれば、このフィールドでは、返されるビジネス・プロセス (受信者) を指定します。このフィールドは、エラーが発生した場合など、さまざまな状況で空白になります。
-
[ターゲットキュー名] — メッセージの送信先 “アドレス”。そのメッセージはどこに送られるのかを表します。
-
これが名前の場合、Ens.ActorOpens in a new tab などのパブリック・キューを指定します。
-
これが数字の場合、ビジネス・ホストの専用キューに関連付けられたジョブ ID を指定します。
-
-
[戻りキュー名] — メッセージの返信 “アドレス”。そのメッセージはどこから送られたのかを表します。
-
これが名前の場合、Ens.ActorOpens in a new tab などのパブリック・キューを指定します。
-
これが数字の場合、ビジネス・ホストの専用キューに関連付けられたジョブ ID を指定します。
[ReturnQueueId] の値は、応答の予定がない、または応答が必要でない種類の要求メッセージの場合でもリストされます。
-
-
[MessageBodyClassName] — メッセージ本文のクラス名。
-
[メッセージ・ボディId] — メッセージ本文の ID。このフィールドは、[メッセージ本文] テーブルの [<ObjectId>] フィールドと一致します。
-
[説明] — メッセージの説明のテキスト。InterSystems IRIS ビジネス・プロセス言語 (BPL) により、メッセージが生成される BPL アクティビティのタイプに基づき、このフィールドにテキストが自動的に入力されます。
-
[スーパーセッション] — HTTP を介してプロダクション間で送信されるメッセージの ID。詳細は、"SendSuperSession" を参照してください。
-
[再送信] — これが再送信メッセージかどうかを示します。
-
[優先度] — InterSystems IRIS のメッセージング・エンジンで割り当てられる、キューにおけるメッセージの相対的な優先度。"メッセージの優先度" を参照してください。
-
[TimeCreated] — メッセージ作成のタイム・スタンプ。"呼び出しスタイルおよびメッセージタイム・スタンプ" を参照してください。
-
[処理時間] — メッセージ使用のタイムスタンプ。InterSystems IRIS は、メッセージがキューから取得されるときにこのフィールドを設定しますが、このメッセージの処理中にこれを現在の時刻にリセットします。一般的に、完了したメッセージでは、これはメッセージ処理完了時刻を表します。
-
[ステータス] — メッセージのステータスを示します。"メッセージ・ステータス" を参照してください。
-
[エラー判定]— 1 の値は、メッセージにエラーが発生したことを示します。0 の値は、メッセージでエラーが発生しなかったことを示します。
-
[エラーステータス] — [エラー判定] が 1 の場合、エラーに関連するテキストが表示されます。[エラー判定] が 0 の場合、[エラーステータス] の文字列は “OK” となります。
-
[Banked] — このメッセージがメッセージ・バンクの一部かどうかを示します。
メッセージ本文フィールド
メッセージ本文情報は、[本文] タブに表示されます。以下のフィールドがあります。
-
フィールド・リストの上にあるメッセージ本文クラス名。
-
メッセージ本文が標準のプロダクション・メッセージ本文オブジェクトである場合は、テーブルに以下の情報が表示されます。
-
[<ObjectId>] — メッセージ本文のオブジェクト識別子。このフィールドは、[ヘッダ] タブの [メッセージ・ボディId] フィールドと一致します。
-
[メッセージ・タイプ] のクラスの各プロパティの名前と値。
メッセージ本文がその他のタイプである場合、画面に追加のフィールドはありません。
-
メッセージ・コンテンツ
メッセージ本文のフォーマットされたコンテンツが、[コンテンツ] タブに表示されます。
標準のプロダクション・メッセージの本文が、以下の例のように色分けされた XML 形式で表示されます。
仮想ドキュメントはセグメント形式で表示されます。1 行につき 1 つのセグメントが表示されます。
大規模な仮想ドキュメントのすべてのコンテンツを確認するには、下部のスクロール・バーを右端までドラッグすることが必要になる場合があります。メッセージの表示を広くするには、[全部の内容を表示] リンクまたは [未加工のコンテンツを表示] リンクをクリックします。[全部の内容を表示] では、フィールド単位の形式でメッセージが表示され、[未加工のコンテンツを表示] では、未処理のメッセージの内容が表示されます。これは簡単にコピーしてテキスト・エディタに貼り付けることができます。背景情報は、"プロダクション内での仮想ドキュメントの使用法" を参照してください。
[コンテンツ] タブでの XML メッセージの文字制限の変更
管理ポータルの [メッセージ] ページでメッセージを選択してから [コンテンツ] タブをクリックすると、デフォルトでは、メッセージの最初の 20,000 文字のみが表示されます。この文字制限によって、レコード・マップによって解釈されるバッチ・ファイルなどのきわめて大きなメッセージをレンダリングする際に、管理ポータルが無応答になることを防止できます。ただし、InterSystems IRIS では、以下のいずれかのグローバル・ノードを設定することによってこの文字制限を変更できます。
^EnsPortal.Settings("All","MessageContents","OutputSizeLimit")
^EnsPortal.Settings("All","MessageContents","OutputSizeLimit",<MessageBodyClassname>)
<MessageBodyClassname> は、制限を適用するメッセージ・ボディのクラス名を指定するオプションのノードです。両方のノードを設定した場合、<MessageBodyClassname> ノードの値が使用されます。
これらのノードは、0 以上の値に設定できます。0 は、制限なしを意味します。正の値は、[コンテンツ] タブに表示される文字数を表します。例えば、Demo.Loan.Msg.CreditRatingResponse サンプル・メッセージ・ボディ・クラスに対して、[コンテンツ] タブの文字制限を 30,000 文字に引き上げるには、ターミナルで以下のコマンドを発行します。
set ^EnsPortal.Settings("All","MessageContents","OutputSizeLimit","Demo.Loan.Msg.CreditRatingResponse") = 30000
OutputSizeLimit ノードが、[すべてのコンテンツを表示] ページまたは [未加工の内容を表示] ページの動作に影響を与えることはありません。メッセージの [コンテンツ] タブの [すべてのコンテンツを表示] リンクまたは [未加工の内容を表示] リンクをクリックすると、InterSystems IRIS はメッセージ全体の表示を試みます。いずれかのページに文字制限を設定するには、&LIMITSIZE=limit をページの URL に追加します。limit は、表示する最大文字数です。例えば、[未加工の内容を表示] ページの文字制限を 30000 に設定するには、このページの URL をインスタンスの <baseURL> を使用して変更します。
http://<baseURL>/csp/proddemo/EnsPortal.MessageContents.zen?HeaderClass=Ens.MessageHeader&HeaderID=3&RAW=1&LIMITSIZE=30000
関連メッセージのパスのトレース
[ビジュアル・トレース] ページを使用すると、ビジネス・ホスト間の一連の関連メッセージのパスを視覚的にトレースできます。複数の場所からこのツールにアクセスできます。以下に例を示します。
-
[Interoperability]→[表示]→[メッセージ] ページにアクセスします。
-
メッセージを選択します。
-
[トレース] タブを選択すると、小型のトレースが表示されます。
-
[完全なトレースを表示] を選択します。
[ビジュアル・トレース] ページの左側の領域には、メッセージを処理するビジネス・ホストごとに 1 行ずつのメッセージ・アクティビティの視覚的表現が表示されます。ビジネス・ホストは、ビジネス・サービス、ビジネス・プロセス、およびビジネス・オペレーションにグループ分けされています。
1 つ以上のビジネス・サービスとビジネス・オペレーションに関する [アーカイブIO] 設定を有効にすると、[ビジュアル・トレース] にはプロダクション・メッセージのほかに入力データと出力データも表示されます。以下に例を示します。
このツールで呼び出しを表示すると、長期実行型のビジネス・プロセスからの同期呼び出しが非同期であるかのように表示されます。呼び出しが実際は同期であることに変わりはありません。これは、同期呼び出しの返りを待っている際に InterSystems IRIS でシステム・リソースの解放に使用される内部追跡メカニズムの副次的な影響です。
メッセージがある項目から次の項目に送られると、角が丸くなったボックス内で、それら 2 つの項目が矢印によって接続されます。
-
円でマーキングされたソース項目は、メッセージを送信する項目です。
-
ターゲット項目は、角が丸くなった長方形でマーキングされます。矢印は、ソース項目からこの項目を指します。
どちらの場合も、列の上部でビジネス・ホストの名前を参照できます。
これらの角が丸くなったボックスそれぞれが 1 つのメッセージに対応し、次のような情報が表示されます。
-
左ボックスの外側の角かっこ内の数字がメッセージの識別子です。
-
矢印の上にあるボックス内の日時は、メッセージ作成タイム・スタンプを示しています。"呼び出しスタイルおよびメッセージタイム・スタンプ" を参照してください。
-
矢印は色で表示されています。通常の要求メッセージの矢印は青で、応答は緑です。メッセージにエラーがあると矢印は赤になります。
-
矢印の下のテキストはメッセージ名です。
その他の行には、指定されたビジネス・ホストがメッセージを受信し、後でメッセージを送信する日時が表示されます。
完全なトレースで表示されるメッセージが多い場合は、フィルタを使用して表示対象メッセージを制限することが役立つ場合があります。この方法は、ACK メッセージまたはアーカイブ IO メッセージに関連するメッセージを見つけようとしている場合にも役立ちます。[フィルタの適用] ドロップダウンを使用して、以下の方法で表示対象メッセージを制限できます。
-
特定のメッセージについて一致する要求または応答のみが表示されるようにフィルタリングするには、そのメッセージを選択し、[フィルタの適用] ドロップダウン・メニューから [対応するメッセージ] を選択します。このオプションを選択すると、表示されるメッセージが以下に制限されます。
-
選択したメッセージのソースにターゲットが設定されたすべての先行メッセージ。
-
要求メッセージが選択された場合は、対応する応答メッセージ。
-
応答メッセージが選択された場合は、対応する要求メッセージ。
-
ACK または IOLog メッセージが選択された場合は、対応する要求または応答。
-
-
メッセージのソースまたはターゲットとして特定のコンポーネントを持つすべてのメッセージが表示されるようにフィルタリングするには、そのコンポーネントの列を選択し、[フィルタの適用] ドロップダウン・メニューから [ホスト] を選択します。このオプションを選択すると、選択したコンポーネントのソースまたはターゲットを持つメッセージのみが表示されます。
-
特定のメッセージと同じソースおよびターゲットを持つすべてのメッセージが表示されるようにフィルタリングするには、そのメッセージを選択し、[フィルタの適用] ドロップダウン・メニューから [ホスト] を選択します。このオプションを選択すると、選択したメッセージと同じソースおよび同じターゲットを持つメッセージのみが表示されます。
フィルタを適用すると、メッセージ・トレースには、そのトレースで適用されているフィルタが表示されます。以下に例を示します。
Filter = SourceHost:MsgRouter250, TargetHost:TCPOp001
フィルタを適用したら、[フィルタの適用] ラベルが [フィルタの再適用] に変わります。ドロップダウン・メニューの選択値を変更した場合は、[フィルタの再適用] を選択してフィルタを変更する必要があります。
存在するメッセージ数が 1 ページに表示される数を上回っている場合は、[ページあたりのアイテム数] ドロップダウンを使用して表示アイテムの数を調整できます。[アイテムに移動] ドロップダウンを使用するか、[前のページ] および [次のページ] リンクを使用して、ページ間を移動できます。
右側の領域には、トレースで選択されたメッセージの詳細が表示されます。[ヘッダ]、[本文]、および [コンテンツ] の各タブには、[相互運用性]→[表示]→[メッセージ] ページと同じ情報が表示されます。"メッセージの詳細表示" を参照してください。
[凡例] を選択すると、次のような追加情報が記載されたポップアップ・ガイドが表示されます。
メッセージが発信 HTTP アダプタから別の相互運用対応ネームスペースに送信されると、受信メッセージには新しい SessionID が割り当てられます。複数のネームスペース間で関係するメッセージを関連付けるには、SendSuperSession 設定を使用できます。この設定が発信 HTTP アダプタに指定されると、アダプタは HTTP ヘッダで SuperSession プロパティを設定します。このヘッダ・プロパティは受信 HTTP アダプタにより保持され、プロダクション全体を通じて保持されます。詳細は、"SendSuperSession" を参照してください。
メッセージの再送信
メッセージの配信に失敗した場合、失敗の原因となった問題を修正してから、メッセージを再送信できます。
以下のセクションで説明しているように、メッセージの再送信は、管理ポータルから、またはプログラムによるソリューションを使用して行えます。一度に 100 件以上のメッセージを再送信する場合は、プログラムによるソリューションの方が効率的です。
管理ポータルからのメッセージの再送信
-
[Interoperability]→[表示]→[メッセージ] ページにアクセスします。
-
左の列のチェックボックスにチェックを付けて、メッセージを選択します。または、表示内容を適切にフィルタリングしてから、左の列の上部にあるチェックボックスにチェックを付けます。
メッセージの再送信の前に編集する必要がある場合は、1 つのメッセージを選択します。このページで複数のメッセージを選択した場合、後述の[編集して再送] オプションを使用できません。
-
[メッセージ再送] を選択します。
-
左の列の上部にあるチェック・ボックスにチェックを付け、選択したメッセージが複数のページにわたっている場合は、以下のメッセージが表示されます。
指定の検索条件に一致したメッセージは多いため、すべてを表示できません。このページに表示されていないものも含めて、指定条件に一致するメッセージをすべて再送信する場合、[OK] をクリックします。選択したメッセージのみを再送信するには、[キャンセル] をクリックします。
ここで、以下のいずれかを実行します。
-
選択されたすべてのメッセージで続行する場合、[OK] を選択します。
-
最初のページに表示されている選択メッセージのみで続行する場合、[キャンセル] を選択します。
いずれの場合も、このアクションを後でキャンセルできます。
-
-
選択されたメッセージの詳細が表示されます。このテーブルに表示される情報は以下のとおりです。
-
[セッション] — 各メッセージが属するセッションここをクリックすると、プロダクション内を移動する基本メッセージ・オブジェクトの "ビジュアル・トレース" を表示できます。"セッション" を参照してください。
-
[ヘッダ] — メッセージ・ヘッダの ID (およびメッセージ ID)。ここをクリックすると、この特定メッセージの "ビジュアル・トレース" を表示できます。"メッセージの基本設定" を参照してください。
-
[メッセージボディ] — メッセージ本文の ID。ここをクリックすると、"メッセージのコンテンツ" を表示できます。
-
[作成] — メッセージ作成のタイム・スタンプ。"呼び出しスタイルおよびメッセージタイム・スタンプ" を参照してください。
-
[ソース] — メッセージの送信元のビジネス・ホスト。
-
[ターゲット] — メッセージを受信する予定だったビジネス・ホストの名前。このフィールドは、プロダクションのターゲットが実行されていないかどうかも示します。指定したターゲットが実行されていない場合、メッセージは再送信できないことに注意してください。ここをクリックすると、ターゲットのメッセージ・キューのコンテンツが表示されます。
メッセージを 1000 個以上選択した場合、最初の 1000 個しか表示されませんが、選択した合計数がページに示されます。
-
-
必要に応じて、新しいターゲットのビジネス・ホストを選択します。そのためには、[新ターゲット] で値を選択します。
-
必要に応じて、[キューの先頭で再送信] を選択します。
選択した場合、再送信されるメッセージがターゲット・キューの先頭部に配置されます。これは、メッセージの順序が重要な場合に、先入れ先出し法 (FIFO) 処理を維持するのに役に立ちます。
Important:このオプションを使用する前に、まずターゲット・コンポーネントを一時的に無効にしてください。これにより、プロダクションは予期された順序でキューを構築できるため、再送するすべてのメッセージの追加が完了する前にターゲットがメッセージを取得することがなくなります。
-
以下のいずれかをクリックします。
-
[キャンセル] — このアクションをキャンセルする場合。
-
[再送信] — 指定したとおりにメッセージを再送信する場合。
-
[編集して再送] — 指定したとおりにメッセージを編集して再送信する場合。詳細は、次の項を参照してください。
-
複数のメッセージを再送する場合は、最も古いものから順に再送されます。
メッセージを再送信する場合、ページに[再送ステータス] 列が追加されて再表示されます。[OK] 以外のステータスは、再送信操作が失敗したことを示しています。再送信メッセージは、同じ[セッション] の識別子を保持し、同一のメッセージ本文を送信しますが、新しい一意の ID を持つ新しいメッセージ・ヘッダも取得するので、元の送信とは別の通信としてプロダクションで認識されます。"ビジュアル・トレース" には、元のメッセージの送信と、それと同じメッセージを使用した再送信操作の両方が示されます。メッセージ・ヘッダの説明には、このメッセージが再送信されたことを示すテキストが記述されています。この説明には、ヘッダ・オブジェクトの元の識別子のほか、それ以降の識別子も記述されています。
エディタの再送信
メッセージ・ビューワで再送信の対象として選択したメッセージが 1 件のみの場合は、そのメッセージ本文を編集してからメッセージを送信できます。
-
[編集して再送] をクリックして、[再送エディタ] ページを表示します。
-
入力フィールドを使用してメッセージ本文のデータを編集します。フィールドは、メッセージに応じて異なります。そのメソッドにプロパティがない場合は、何も表示されません。
仮想ドキュメント・メッセージを編集する場合、メッセージ・コンテンツのデータを編集できます。また、コンテンツ・ボックスの下のボックスでオブジェクトのプロパティを編集することもできます。
-
[再送信] をクリックして、編集済みメッセージ本文を持つメッセージ・ヘッダの新規コピーをターゲットに送信します。
-
再送信が正常に終了すると、ページが更新され、[ヘッダ] と [メッセージ本文] が新しい識別子となったテキストが表示されます。[トレース] をクリックして、再送信メッセージのビジュアル・トレースを表示します。
プログラムによるメッセージの再送信
メッセージを大量に再送信する場合は、[メッセージ・ビューワ] ページよりもプログラムによるソリューションの方が効率的です。SQL カーソル、および Ens.MessageHeaderOpens in a new tab の ResendDuplicatedMessage()Opens in a new tab メソッドを使用してクラスを作成し、一度に 100 件以上のメッセージを再送信できます。以下に例を示します。
Class Sample.Resender Extends %RegisteredObject
{
ClassMethod Resend()
{
//Resend all messages sent from 'FromComponent' to 'ToComponent' between 2016-06-15 and 2016-06-20
&sql(DECLARE C1 CURSOR FOR
SELECT ID INTO :id FROM Ens.MessageHeader
WHERE SourceConfigName='FromComponent' AND TargetConfigName='ToComponent'
AND TimeCreated BETWEEN '2016-06-15' AND '2016-06-20')
&sql(OPEN C1)
&sql(FETCH C1)
set tSC = $$$OK
while (SQLCODE = 0) {
//id holds the id for one message. Resend it
set tSC = ##class(Ens.MessageHeader).ResendDuplicatedMessage(id)
quit:$$$ISERR(tSC)
&sql(FETCH C1)
}
&sql(CLOSE C1)
quit tSC
}
}
メッセージ・ビューワで使用される SQL クエリの表示
デバッグ用に、メッセージ・ビューワで現在使用される SQL クエリを表示する場合があります。そのためには、以下のように操作します。
-
ターミナルを起動し、作業用のネームスペースに変更し、次のコマンドを入力します。
Set ^Ens.Debug("UtilEnsMessages","sql")=1
このコマンドには、ユーティリティ・デバッグのグローバルでコードを設定します。
-
[Interoperability]→[表示]→[メッセージ] ページにアクセスします。
このページには[クエリ表示] ボタンが含まれていますが、このボタンは前述したグローバルが設定されている場合のみ表示されることに注意してください。
-
[クエリ表示] を選択します。
一時停止メッセージの管理
ビジネス・オペレーションは、失敗したメッセージのステータスを一時停止に設定できます。また、同期メッセージが処理される前にプロダクションが停止すると、そのメッセージは一時停止されます。メッセージは手動で一時停止することもできます。
すべての [一時停止] メッセージは、特別なキューに自動的に格納され、管理ポータルの [Interoperability]→[表示]→[一時停止のメッセージ] ページに表示されています。このページを使用して、失敗した理由を判断し、問題を修正した後、メッセージを再送信することができます。例えば、外部の宛先が稼動していないことに問題がある場合は、そのサーバとの通信を再確立するための変更が可能です。接続を再確立した後、中断中のメッセージをこのページから外部サーバに再送信できます。または、メッセージを破棄または削除できます。
一時停止のメッセージを管理するには、以下の操作を行います。
-
[Interoperability]→[表示]→[一時停止のメッセージ] ページに移動します。
-
現在実行中のプロダクション内のメッセージが一時停止されている場合、そのメッセージは、以下の情報と共に、テーブルに表示されます。
-
[ID] — メッセージの ID。"メッセージの基本設定" を参照してください。
-
[作成日時] — メッセージ作成のタイム・スタンプ。"呼び出しスタイルおよびメッセージタイム・スタンプ" を参照してください。
-
[セッション] — このメッセージに関連付けられたセッション ID。"セッション" を参照してください。
-
[エラーの有無]— メッセージを送信したビジネス・ホストに返された結果の簡単な概要。
OK は正常動作を意味し、Retry はメッセージが失敗したが、それを送信したビジネス・ホストがそのメッセージを再試行するように構成されていることを意味します。Error はアクティビティのどこかでエラーが報告されたことを示します。Inactive はメッセージを送信したビジネス・ホストが [非活動タイムアウト] 設定より長い間アイドル状態だったことを意味します。診断が必要な場合があります。
-
[ソース構成名] — メッセージを送信したビジネス・ホスト。
-
-
左の列のチェックボックスにチェックを付けて、メッセージを選択します。
-
次に、以下のボタンのいずれかを使用します。
-
[再サブミット] — これをクリックしてメッセージを再送信します。正常に再送信されたメッセージごとに、以下のようなメッセージが表示されます。
Resubmit suspended message ID '7' completed.
再送信するメッセージでは、前回の送信時と同じセッション識別子が保持され、同様に同じヘッダ・オブジェクトが送信されます。メッセージ・ヘッダの説明には、これが "再送信" メッセージであることを示すテキストが記述されています。
-
[編集して再送] — ここをクリックして、1 件のメッセージを編集してから再送信します。このコマンドは、選択したメッセージが 1 件のみである場合に有効です。詳細は、以下の項 を参照してください。
-
[破棄] — ここをクリックして、このページのリストからメッセージを削除します。メッセージには [メッセージ・ビューワ] から引き続きアクセスでき、そのステータスは、ここでは [破棄されました] となります。
-
[削除] — ここをクリックすると、InterSystems IRIS データベースからメッセージのすべてのレコードが削除されます。
WARNING:[破棄] や [削除] の操作を元に戻すことはできません。
-
編集して再送信するメッセージでは、前回の送信時と同じ[セッション]識別子が保持され、同じ[ヘッダ]・オブジェクトが含まれますが、[メッセージボディ] オブジェクトは新しい識別子を保持します。元のメッセージ・ヘッダの説明には、このメッセージが再送信されたものであることを示すテキストと元の Msg Body オブジェクトの識別子が記述されています。
メッセージを再送信するための再送信エディタ
[Interoperability]→[表示]→[一時停止のメッセージ] ページから再送信の対象として選択したメッセージが 1 件のみの場合は、そのメッセージ本文を編集してからメッセージを再送信できます。
-
[編集 & 再送信] を選択して、[再送エディタ] ページを表示します。
-
入力フィールドを使用してメッセージ本文のデータを編集します。このフィールドは、メッセージのメソッド・シグニチャに応じて異なります。そのメソッドにプロパティがない場合は、何も表示されません。
仮想ドキュメント・メッセージを編集する場合、メッセージ・コンテンツのデータを編集できます。また、コンテンツ・ボックスの下のボックスでオブジェクトのプロパティを編集することもできます。
-
[再サブミット] を選択すると、メッセージ・ヘッダは元のままで編集済みメッセージを本文のコンテンツとしたメッセージがターゲットに再送信されます。
-
再送信が正常に終了すると、Header 識別子と Msg Body 識別子を示したテキストでページが更新されます。[トレース] をクリックして、再送信メッセージのビジュアル・トレースを表示します。
メッセージのエクスポート
メッセージ・ビューワの [エクスポート] ボタンを使用して、複数のメッセージをローカル・マシンにダウンロードできます。メッセージ・ビューワには [Interoperability]→[表示]→[メッセージ] からアクセスします。[エクスポート] ボタンをクリックすると、ダイアログ・ボックスが表示され、エクスポート・ファイルの名前、ファイル内でメッセージを区切る方法、および使用する文字セットを指定できます。エクスポート・ファイルは、ブラウザの組み込みダウンロード機能を使用してローカル・マシンにダウンロードされます。メッセージをエクスポートするには、%Ens_MessageExport リソースの USE 許可が必要です。
大量のメッセージのエクスポート
膨大な量のメッセージを誤ってエクスポートしないように、大量のメッセージをエクスポートするプロセスはより複雑になっています。すべてのメッセージを選択したときに、検索によって返されたメッセージが結果ページに収まらない場合、エクスポート・プロセスを完了するには、ワークフロー受信トレイに対するアクセス権を持っている必要があります。管理者がワークフロー受信トレイに対するアクセス権をユーザに付与する手順については、"ユーザへのワークフロー受信トレイに対するアクセス権の付与" を参照してください。
大量のメッセージをエクスポートする手順は次のとおりです。
-
[Interoperability]→[表示]→[メッセージ] に移動し、エクスポートするメッセージを検索します。
-
検索結果ページのヘッダにあるチェック・ボックスにチェックを付けて、すべてのメッセージを選択します。
-
[エクスポート] をクリックします。
検索結果ページに表示されるメッセージよりも多くのメッセージを選択したことを示すダイアログ・ボックスが表示されます。
-
[OK] をクリックします。
-
ダウンロード・ファイルの名前、ファイル内でメッセージを区切る方法、および使用する文字セットを指定します。
-
[OK] を 2 回クリックします。
-
InterSystems IRIS のホーム・ページに移動します。
-
[Analytics]→[ユーザ・ポータル] に移動します。この手順を完了するには、現在のネームスペースで Analytics が有効になっている必要があります。
-
[ワークフロー受信トレイ] をクリックします。
-
ワークフロー受信トレイでメッセージを選択し、メッセージの本文で [確認] をクリックします。
-
[エクスポートされたファイルをダウンロードできます] というタイトルの新しいメッセージがワークフロー受信トレイに表示されるまで待ち、そのメッセージを選択します。
-
メッセージの本文で [ダウンロード] をクリックします。
-
ブラウザによってファイルが正常にダウンロードされたら、[ダウンロード完了] をクリックして、一時ファイルをサーバから削除します。
%SYS(“TempDir”, namespace) で指定されたディレクトリのディスク空き容量の 50% をメッセージが超える場合、メッセージをダウンロードすることはできません。
ユーザへのワークフロー受信トレイに対するアクセス権の付与
次に示す手順を完了するには、適切な認証情報が必要です。ネームスペースで Analytics が有効になっていない限り、ユーザがワークフロー受信トレイにアクセスすることはできません。
-
[Interoperability]→[管理]→[ワークフロー]→[ワークフロー・ユーザ] に移動します。
-
[名前] ドロップダウン・リストからユーザの名前を選択します。
-
[有効] を選択します。
-
[保存] をクリックします。
-
[Interoperability]→[管理]→[ワークフロー]→[ワークフロー・ロール] に移動します。
-
[名前] フィールドに「%ProductionMessageExport」と入力し、[保存] をクリックします。
-
リストから新しいロールを選択し、[追加] をクリックします。
-
[ユーザ名] ドロップダウン・リストからユーザの名前を選択し、[OK] をクリックします。
ユーザが複数のメッセージのダウンロードを確認する必要があるかどうかを変更する場合や、エクスポートを確認する必要があるユーザを変更する場合、EnsLib.Background.Process.ExportMessageSearch クラスをプロダクションに追加し、[ワークフロー設定] を編集します。
メッセージ表示の監査
%SMPExplorer/ViewContents イベントを監査している場合、ユーザが管理ポータルでメッセージを表示していると、システムはデータをイベント・ログに書き込みます。監査ログに書き込まれるデータの種類を拡張する場合、EnsCustom.Util.DTL.Audit.MessageView というカスタムのデータ変換を定義できます。イベントの監査の詳細は、"監査" を参照してください。