サービス・メッセージ・オブジェクト (SMO) は、 拡張された サービス・データ・オブジェクト (SDO) です。SMO は、サービス間で交換されるメッセージを処理し、取り扱うための抽象化層を提供します。
このすべての情報は SDO DataObject としてアクセスされます。 さらに、SMO の全体的な構造を指定するスキーマ宣言があります。このスキーマは、 WebSphere Integration Developer によって生成されます。
すべての SMO は同一の基本構造を持ちます。 この構造は、ServiceMessageObject と呼ばれるルート・データ・オブジェクトから構成されています。ServiceMessageObject にはヘッダー、本体、およびコンテキスト・データを表す他のデータ・オブジェクトが含まれています。 SMO 本体にはメッセージ・ペイロードが含まれています。 ヘッダーにはある特定のインポートまたはエクスポート・バインディングを発信元とする情報が含まれています。 例えば、JMS バインディングから発信された情報などが含まれます。
SMO は、メッセージ・ヘッダーおよびメッセージ ・ペイロードにアクセスし、変更するためのインターフェースを提供します。 SMO は、さまざまなタイプのメッセージの論理内容を表現できます。
WebSphere ESB は、対話エンドポイント間でやり取りされるメッセージに働きかけます。 WebSphere ESB 内では、 メディエーション・フローはメッセージを SMO として処理します。
WebSphere ESB は SMO オブジェクトを作成します。この SMO オブジェクトはメディエーション・フローで使用可 能になります。
ランタイムによって作成された SMO オブジェクトの一部は、 ランタイムによって提供されるクラスにより実装されています。 例えば、ServiceMessageObject クラスは WebSphere ESB によって提供されます。 SMO ヘッダー・クラスのなかには、ランタイムによって提供されるものもあります。 ランタイムによって作成されたその他の SMO は、 開発者が作成したクラスによって実装されています。
メディエーション・フローを作成するときに、 WebSphere Integration Developer は、終了 (入力、出力または障害) ごとにメッセージ本体のタイプを指定し、 さらにオプションとしてコンテキスト情報のタイプを指定します。 WebSphere ESB は、この情報を使用して、 指定されたタイプの SMO オブジェクトにメッセージを変換します。