要求時の構文解析

要求時の構文解析 (部分構文解析) は、現在の参照に応答するために必要な程度だけ入力メッセージ・ビット・ストリームを構文解析するために使用されます。 入力メッセージの部分構文解析を実行できるパーサーは、DFDL、JSON、XMLNSC、XMLNS、および MRM パーサーです。

入力メッセージは任意の長さでかまいません。 メッセージ・フローのパフォーマンスを改善するには、メッセージの内容の一部に対する参照を解決する必要があるときにだけ、メッセージを構文解析するようにしてください。 メッセージ・フロー内でメッセージ内容が参照されていない場合 (例えば、メッセージ全体が データ更新 ノードによってデータベースに保管されているが、メッセージ内容の操作は行われていない場合)、メッセージ本体は解析されません。

パーサーが入力ビット・ストリーム全体を即時に構文解析するのではなく要求時に入力ビット・ストリームを構文解析できる場合は、メッセージ・フロー・ノード の「構文解析のタイミング」プロパティーがパーサーの要求時動作を制御します。

構文解析のタイミング」プロパティーは、 「要求時」 (デフォルト)、 「即時」、 または「完全」に設定できます。

「要求時」は、部分構文解析を行います。 メッセージ内のフィールドが参照される時点で、参照を完全に解決するために、必要なだけのメッセージが解析されます。 そのため、メッセージ・フロー内でのフィールドの構文解析が遅くなったり、まったく行われないこともあります。 この制限は、メッセージ本体とメッセージ・ヘッダーの両方に適用されます。

「即時」および「完全」はどちらも、部分構文解析をオーバーライドしてメッセージ・ヘッダーを含むメッセージ全体を構文解析します。ただし、ユーザーが内容を ESQL で解決する必要があるものなど MRM パーサーがその時点では解決できない、「構成」「選択」または「メッセージ」に設定された複合タイプのエレメントを検出した場合を除きます。 「構成」「選択」に設定されている場合は、データは未解決の項目としてメッセージ・ツリーに追加されて、構文解析は次のエレメントから続行します。 「構成」「メッセージ」に設定されている場合は、構文解析はそのポイントで終了します。 「即時」および「完全」で動作に違いがあるのは、MRM 妥当性検査が使用可能のときだけです。

さらに、「構文解析のタイミング」プロパティーは、 MRM メッセージの妥当性検査が部分構文解析と対話する方法を制御可能にします。 詳細については、 妥当性検査プロパティー を参照してください。

構文解析のタイミング」プロパティーは、 出力メッセージのシリアライゼーションには影響を与えません。