メッセージ検証の制御
ASTM ドキュメント以外の仮想ドキュメントの場合は、InterSystems IRIS® では、不正なメッセージを処理するビジネス・ホストを追加するためのオプションを使用したメッセージ検証を利用できます。必要に応じて、検証ロジックを上書きすることもできます。この章では、その詳細について説明します。
メッセージ検証の概要
ASTM ドキュメント以外の仮想ドキュメントでは、1 つ以上の特殊なビジネス・ホスト・クラスに [検証] 設定が含まれており、ビジネス・ホストで受信したメッセージを処理する前に検証する方法を指定するために使用します。
メッセージが検証に合格した場合は、ビジネス・ホストがそのメッセージを指定された標準ターゲット (複数可) に送信します。
ドキュメントが検証に合格しなかった場合は、ビジネス・ホストの種類によって詳細が異なります。
-
ビジネス・サービスまたはビジネス・オペレーションはどこにもメッセージを送信しません。
-
ルーティング・プロセスには、ビジネス・ホストの名前にすべき [不正なメッセージ・ハンドラ] という追加の設定が含まれています。ドキュメントが検証に合格しなかった場合は、この設定の指定に従って、ルーティング・プロセスがそのドキュメントを不正メッセージ・ハンドラに転送します。不正メッセージ・ハンドラが存在しない場合は、ルーティング・プロセスがドキュメントを転送せずに、ログにエラーを書き込みます。ルーティング・プロセスには、アラートの送信を可能にする設定を含めることもできます。
基本検証オプションとロジック
このトピックでは、[検証] 設定の許容値と InterSystems IRIS によるメッセージの検証方法について説明します
値 | 意味 |
---|---|
d | ドキュメントの DocType プロパティを調べ、値が指定されているかどうかを確認します。 |
m | ドキュメントのセグメント構造が適切に構築されており、ドキュメントの DocType プロパティで識別されたスキーマを使用して解析できることを確認します。 |
dm | d と m の両方が適用されます。 |
(空白文字列) | ビジネス・ホストが検証を省略し、すべてのドキュメントをルーティングします。ほとんどの仮想ドキュメント形式において、これがデフォルト設定です。 |
d 検証フラグ
d フラグが [検証] 文字列に含まれている場合は、(ビジネス・サービスによって設定された) メッセージ内で指定された [スキーマ・カテゴリ] が検査され、メッセージの DocType と比較されます。メッセージ内の [スキーマ・カテゴリ] が空の場合は、自動的に、そのメッセージが不正として宣言されます。ただし、[スキーマ・カテゴリ] が空白ではないが、メッセージの DocType と一致しない場合は、m などの別の [検証] フラグが定義されていれば、検証が続行されます。
m 検証フラグ
m フラグが [検証] 文字列に含まれている場合は、メッセージを検証する方法と不正として宣言する方法のどちらかが検索されます。詳細は、仮想ドキュメント・タイプによって異なります。
検証ロジックの上書き
仮想ドキュメント・ルーティング・プロセス (EnsLib.MsgRouter.VDocRoutingEngineOpens in a new tab) とそのサブクラスを通して、デフォルトの検証ロジックが提供されます。特殊な仮想ドキュメントのビジネス・サービス・クラスとビジネス・オペレーション・クラスのほとんどでも検証ロジックが提供されます。この検証ロジックは上書きすることができます。そのために、該当するクラスのサブクラスを作成して使用します。
ルーティング・プロセス・クラス内の検証ロジックの上書き
InterSystems IRIS Interoperability クラスのサブクラスを作成してから、OnValidate() メソッドを上書きする場合は、次の手順を実行する必要があります。
-
[検証] 設定で受け入れられた値のリストを拡張または置換すること。
-
ルーティング・プロセスによるドキュメントの検証方法を決定すること。[検証] のオプションで制御できます。
OnValidate() メソッドをオーバーライドする場合は、同じサブクラス内の [検証] プロパティの定義もオーバーライドできます。以下のような詳細情報に注意してください。
-
InitialExpression 値は、[検証] 構成設定のデフォルトを指定します。
-
[検証] プロパティ定義に先行するコメントは、[検証] 設定のツール・ヒントとして使用されます。/// 規則を使用し、最後のコメントとプロパティ定義の間には空白行を残さないでください。これにより、管理ポータル・ユーザは入力されたコメントをツール・ヒントとして表示できます。
ビジネス・サービス・クラスまたはビジネス・オペレーション・クラス内の検証ロジックの上書き
仮想ドキュメントのビジネス・サービス・クラスとビジネス・オペレーション・クラスのそれぞれで、上書きが可能な Validation プロパティと OnValidate() メソッドが提供されます。デフォルトで、このプロパティがいずれかのビジネス・サービスまたはビジネス・オペレーションの設定として公開されることはなく、これらのクラス内で OnValidate() アクティビティが実行されることはありません。ドキュメントを、いつものようにルーティング・エンジンで検証するのではなく、インタフェースの受信側または送信側で検証する場合は、この動作を変更できます。変更を実行するには、以下の手順に従います。
-
上記の [検証] プロパティと OnValidate() メソッドをオーバーライドするための手順を実行します。
-
ユーザが検証のタイプを選択できるようにする場合は、Validation プロパティも設定として追加します。"プロダクションの開発" の “設定の追加と削除” を参照してください。
不正メッセージ・ハンドラの定義
ルーティング・プロセスには、[不正なメッセージ・ハンドラ] という設定があります。この設定の目的は、ビジネス・プロセスの不正メッセージ・ハンドラに従って、不正なことが判明したメッセージをプロセスから送信するビジネス・ホストを指定することです。不正メッセージ・ハンドラを定義するには、まず、不正なメッセージの処理方法を決定します。通常は、ビジネス・オペレーションを作成します。このビジネス・オペレーションは以下のどちらかまたは両方を実行できます。
-
(ファイル・アダプタ経由) メッセージの内容をファイルに書き込みます。
-
(構成設定によって異なる) 不正なメッセージが見つかったときにアラートをトリガします。
ビジネス・プロセスは、検証されたメッセージの通常のターゲットの代わりに、このビジネス・ホストに不正なメッセージを送信することに注意してください。
メッセージが不正で、[不正なメッセージ・ハンドラ] 設定が指定されていない場合は、ルーティング・プロセスが検証シーケンスを停止して、メッセージを送信しません。