サービス・メッセージ・オブジェクト (SMO) は、拡張サービス・データ・オブジェクト (SDO) です。SMO は、サービス間で交換されるメッセージを処理および操作するための抽象化層を提供します。
この情報はすべて SDO DataObject としてアクセスされます。また、SMO の全体構造を指定するスキーマ宣言があります。このスキーマは WebSphere Integration Developer によって生成されます。
すべての SMO の基本構造は同じです。この構造は、ServiceMessageObject と呼ばれるルート・データ・オブジェクトで構成されており、ルート・データ・オブジェクト内にヘッダー、本体、およびコンテキスト・データを表す他のデータ・オブジェクトが格納されています。SMO 本体にはメッセージ・ペイロードが格納されます。 ヘッダーには、特定のインポートまたはエクスポート・バインディングから生じる情報が格納されます。例えば JMS バインディングなどです。
SMO は、メッセージ・ヘッダーおよびメッセージ・ペイロードへのアクセスおよび変更を行うためのインターフェースを提供します。SMO によって、さまざまなタイプのメッセージの論理コンテンツを表現できます。
WebSphere Process Server は、対話エンドポイント間で送信途中にあるメッセージを操作します。WebSphere Process Server 内部では、メディエーション・フローはメッセージを SMO として処理します。
WebSphere Process Server は SMO オブジェクトを作成します。この SMO オブジェクトはメディエーション・フローに使用できます。
ランタイムが作成する SMO オブジェクトの一部は、ランタイムが提供するクラスによってインプリメントされます。例えば、ServiceMessageObject クラスは WebSphere Process Server によって提供されます。 SMO ヘッダー・クラスの一部もランタイムによって提供されます。ランタイムが作成するその他の SMO オブジェクトは、開発者が作成したクラスによってインプリメントされます。
メディエーション・フローを作成するときに、WebSphere Integration Developer は各端末 (入力、出力、または失敗) のメッセージ本体のタイプと、オプションでコンテキスト情報のタイプを指定します。WebSphere Process Server は、この情報を使用してメッセージを指定のタイプの SMO オブジェクトに変換します。