メッセージ・フロー・ノードおよびMRM パーサーおよびドメインに関する概念トピックに目を通しておきます。
ブローカーは、事前定義メッセージのためのメッセージ辞書に基づいた妥当性検査を提供します。 したがって、妥当性検査は、MRM ドメインに対してモデル化および定義したメッセージにのみ適用します。
ブローカーは、自己定義メッセージの妥当性検査は提供しません。 XML DTD または XML スキーマに対して直接メッセージの妥当性検査を行うことはできません。 代わりに、Message Brokers Toolkit を使用して XML DTD または XML スキーマをインポートすることにより、同等のモデルを MRM ドメインに作成します。
メッセージ・フローは、特定の規則に合致するメッセージを変換して経路を定めるように設計されています。 デフォルトでは、MRM パーサーはメッセージに対して妥当性検査を実行しますが、これは構文解析操作の完全性を保証するだけのものです。 しかしながら、メッセージ・フロー内の特定のノード上に妥当性検査オプションを指定することによって、メッセージ・ディクショナリー内に含まれるメッセージ・モデルに対する、より厳重なメッセージの妥当性検査を実行することができます。
次のメッセージの妥当性検査を行うオプションを使用することができます。
これらの妥当性検査オプションは、メッセージ・フローに入るデータとそこから出るデータの妥当性を保証することができます。 このオプションは、以下の目的で実行される妥当性検査に対する、ある程度の制御をユーザーに提供します。
また、妥当性検査が失敗した場合に行うアクションを指定することもできます。
メッセージ妥当性検査には、メッセージ・ツリーをナビゲートし、その妥当性を検査することが含まれています。 これは、メッセージの構文解析時には、ツリー作成の延長であり、出力メッセージの書き込み時には、ビット・ストリーム作成の延長です。
妥当性検査オプションは、以下のノード上で使用できます。
ノード・タイプ | 妥当性検査オプションを持つノード |
---|---|
入力ノード | MQInput、SCADAInput、HTTPInput、JMSInput、TimeoutNotification |
出力ノード | MQOutput、MQReply、SCADAOutput、HTTPReply、JMSOutput |
その他のノード | Compute、Mapping、JavaCompute、Validate、ResetContentDescriptor、MQGet、HTTPRequest |
妥当性検査オプションは、ESQL CREATE ステートメントおよび ASBITSTREAM 関数でも指定できます。
入力データで受け取った入力メッセージを妥当性検査するには、入力ノードで妥当性検査プロパティーを指定します。 その後入力メッセージは、メッセージ・ビット・ストリームが構文解析されてメッセージ・ツリーを形成するときに妥当性検査されます。
このときにメッセージ全体が構文解析されて妥当性検査されるのか、それともメッセージ内の個々のフィールドが参照されるときにのみ構文解析され妥当性検査されるのかを制御するために、入力ノードの「構文解析のタイミング」プロパティーを使用することもできます。
Compute ノード、Mapping ノード、または JavaCompute ノードによって作成される出力メッセージを妥当性検査するには、それらのノード自体で妥当性検査プロパティーを指定するか、またはメッセージを送信する出力ノードで妥当性検査プロパティーを指定するかのいずれかを行います。 妥当性検査は、出力ノードによってメッセージ・ツリーからメッセージ・ビット・ストリームが作成される際に行われます。
別の方法として、Validate ノードを使用して、メッセージ・フローの特定の箇所でメッセージ・ツリーを妥当性検査することもできますし、あるいは Compute、Filter、または Database ノード内で ESQL ASBITSTREAM 関数を使用することもできます。
ただし、妥当性検査オプションを使用して、もっと徹底したメッセージの妥当性検査を要求することもできます。 例えば、次のうちのいずれか 1 つ以上の条件を妥当性検査して例外をスローさせたり、エラーをログに記録したりすることができます。
の例は、これらの妥当性検査オプションのいくつかを例示しています。
「構文解析のタイミング」について詳しくは、MRM ドメインのメッセージの妥当性検査プロパティーを参照してください。
各種のプロパティーを使用しての妥当性検査の制御方法については、MRM ドメインのメッセージの妥当性検査プロパティーを参照してください。