パーサーとは、着信メッセージの物理ビット・ストリームを解釈し、そのメッセージの内部論理表現をツリー構造で作成するプログラムです。 パーサーは、内部メッセージ・ツリー表現からの発信メッセージ用のビット・ストリームも再生成します。
入力メッセージを表すビット・ストリームが、ブローカーが処理できる内部形式に変換されると、パーサーが呼び出されます。このようなパーサーの起動を解析と呼びます。 内部形式、すなわち論理ツリー構造については、論理ツリー構造 に説明されています。 これがツリーとして説明されているのは、メッセージが通常は、構造内の階層になっているからです。 この構造の良い例が XML です。 パーサーがビット・ストリームを解釈する方法はパーサーに固有のものであるため、ビット・ストリームから作成される論理メッセージ・ツリーはパーサーごとに異なります。
呼び出されるパーサーは、メッセージの構造によって異なります (メッセージの構造のことをメッセージ・テンプレート といいます)。 メッセージ・テンプレート情報は、メッセージのメッセージ・ドメイン、メッセージ・セット、メッセージ・タイプ、および物理形式から成っています。 これらの値はあわせて、メッセージが含むデータの構造を示します。
出力メッセージを表す論理ツリーがビット・ストリームに変換されるときにも、パーサーが起動されます。 パーサーによるこのアクションを書き込み といいます。 通常は、メッセージ・フローの最後に、出力ノードによって出力メッセージが生成されます。 ただし、出力ノードにさらにノードを接続して、メッセージの処理を続けることができます。
メッセージ・ドメインは、メッセージ・インスタンスの解析および書き込みで使用するパーサーを識別します。 メッセージ・テンプレートの残りの部分 (メッセージ・セット、メッセージ・タイプ、物理形式) はオプションであり、 MRM パーサーなどのモデル駆動型パーサーによって使用されます。
メッセージの論理構造は通常、メッセージの業務内容にマップします。 例えば、顧客名、アドレス、およびアカウント番号がそれに含まれます。 物理的特性が重要で、それがビット・ストリームの構造に影響するのは、接続を介してメッセージを送信するときだけです。
ブローカーは、入力メッセージと出力メッセージが属するすべてのメッセージ・ドメインについて、パーサーへのアクセスを必要とします。 さらに、ブローカーは、入力または出力メッセージに組み込まれる、すべての識別可能なメッセージ・ヘッダーに対して、パーサーを必要とします。 パーサーは、メッセージ・フローが必要とした時点で呼び出されます。
WebSphere® Message Broker は、メッセージ本体パーサーを提供することによって、次のメッセージ・ドメイン内のメッセージに対して組み込みサポートを提供します。
どのような環境で、どのメッセージ本体パーサーを使用するかの詳細は、どの本体パーサーを使用すべきかを参照してください。
作成されるメッセージ・ツリーについては、メッセージ・ツリー構造に説明されています。 その正確な形は、ノードが何をしているかによって、メッセージ・フローを進行していくにつれて変化することがあります。
メッセージ・ツリーのルート・エレメントの最後の子エレメントは、そのツリーを作成した本体パーサーの名前にちなんで命名されます。 例えば、「メッセージ・ドメイン」プロパティーを MRM に設定した場合、ルートの最後の子エレメントは MRM という名前になります。これは、そのメッセージ・ツリーが MRM パーサーによって所有されていることを示します。
本体パーサーの中には、モデル駆動型のものもあります。その意味するところは、解析および書き込みの際に、メッセージ・セットからの事前定義メッセージが使用されるということです。 MRM、SOAP、DataObject、IDOC、および (オプションとしての) XMLNSC パーサーは、モデル駆動型パーサーです。 これらのパーサーを使用するには、メッセージ・セット内でメッセージをモデル化し、WebSphere Message Broker Toolkit からブローカーにデプロイする必要があります。
それ以外の本体パーサーはプログラマチックです。つまり、解析して書き込むメッセージは、自己定義メッセージであり、メッセージ・セットは必要ないということです。 事前定義および自己定義メッセージを参照してください。
モデル駆動型パーサーを使用する場合、「メッセージ・セット」と、判断しだいで「メッセージ・タイプ」および「メッセージ形式」を指定する必要があります。その指定によって、パーサーは、メッセージの解析または書き込みのガイダンスとなるデプロイ済みメッセージ定義を見つけることができます。
メッセージ・ビット・ストリームを解析するために、通常は、メッセージを受信する入力ノードの「メッセージ・セット」、「メッセージ・タイプ」、および「メッセージ形式」プロパティーを設定します。 また、ESQL で解析操作を開始する場合は、CREATE ステートメントの SETTYPE、および FORMAT 節を使用します。 この情報は、メッセージ・ツリーの「プロパティー」フォルダーにコピーされます。
メッセージを書き込むために、ブローカーは所有する本文パーサーを呼び出して、メッセージ・ツリーからメッセージ・ビット・ストリームを作成します。 パーサーがモデル駆動型パーサーである場合は、「プロパティー」フォルダー内の MessageSet、MessageType、および MessageFormat フィールドを使用します。
「メッセージ・タイプ」または「メッセージ形式」が必要かどうかは、メッセージ・ドメインによって決まります。
本体パーサーがモデル駆動型でなくても、WebSphere Message Broker Toolkit 内でメッセージ・セットを作成して使用するのが得策です。なぜなら、それによって、メッセージ・セットがブローカーの実行時環境にデプロイされなくても、メッセージ・フロー・アプリケーションの開発が簡単になるからです。 メッセージ・セットを作成することの利点については、メッセージをモデル化する理由を参照してください。
また、WebSphere Message Broker は、ご使用のアプリケーションが入力メッセージまたは出力メッセージに組み込むことのできる、次のメッセージ・ヘッダーに対して、パーサーを提供します。
すべてのヘッダー・パーサーはプログラマチックであり、解析または書き込み時にメッセージ・セットを使用しません。
提供されたパーサーが処理しないメッセージ本体データまたはヘッダーの解析または書き込みを行うには、WebSphere Message Broker ユーザー定義パーサー・プログラミング・インターフェースを使用して、ユーザー定義パーサーを作成します。