サービス・メッセージ・オブジェクト (SMO) は、拡張サービス・データ・オブジェクト (SDO) です。SMO は、サービス間で交換されるメッセージを処理および操作するための抽象化層を提供します。
この情報はすべて SDO DataObject としてアクセスされます。また、SMO の全体構造を指定するスキーマ宣言があります。このスキーマは WebSphere Integration Developer によって生成されます。
すべての SMO の基本構造は同じです。この構造は、ServiceMessageObject と呼ばれるルート・データ・オブジェクトで構成されており、ルート・データ・オブジェクト内にヘッダー、本体、およびコンテキスト・データを表す他のデータ・オブジェクトが格納されています。SMO 本体にはメッセージ・ペイロードが格納されます。 ヘッダーには、特定のインポートまたはエクスポート・バインディングから生じる情報が格納されます。例えば JMS バインディングなどです。
SMO は、メッセージ・ヘッダーおよびメッセージ・ペイロードへのアクセスおよび変更を行うためのインターフェースを提供します。SMO によって、さまざまなタイプのメッセージの論理コンテンツを表現できます。
WebSphere Process Server は、対話エンドポイント間で送信途中にあるメッセージを操作します。WebSphere Process Server 内部では、メディエーション・フローはメッセージを SMO として処理します。
動的ルーティングを提供するために、Websphere Service Registry and Repository (WSRR) を使用して対話エンドポイントを検索できます。WSRR による照会の結果は SMO に保管されます。
WebSphere Process Server は SMO オブジェクトを作成します。この SMO オブジェクトはメディエーション・フローに使用できます。
メディエーション・フローを作成するときに、WebSphere Integration Developer は各端末 (入力、出力、または失敗) のメッセージ本体のタイプと、オプションでコンテキスト情報のタイプを指定します。WebSphere Process Server は、この情報を使用してメッセージを指定のタイプの SMO オブジェクトに変換します。
control エレメントには、メッセージ本体を記述する Encoding、CodedCharSetId、および Format フィールドがあります。WebSphere MQ メッセージに何らかのメッセージ・ヘッダー (例えば、MQRFH2) が含まれる場合、ヘッダーを記述する Encoding、CodedCharSetId、および Format フィールドが header エレメントに組み込まれます。
header エレメントには、ヘッダーを記述する Encoding、CodedCharSetId、および Format フィールドが含まれます。特に Format フィールドは正確に設定する必要があります (例えば、MQRFH2 ヘッダーの場合は MQHRF2)。また、CodedCharSetId および Encoding フィールドは、型が不明なデータの場合は重要です。WebSphere MQ メッセージとして提供される場合、このフォーマット情報が直前の MQ ヘッダー (直前のヘッダーがない場合は MQMD) に書き込まれます。
header エレメントには、モデル化された各ヘッダー用のサブエレメント (rfh および rfh2)、モデル化されていない標準の MQ ヘッダー用のサブエレメント (opaque)、ユーザー提供の MQ ヘッダー用のサブエレメント (value) も含まれます。これらの 4 つのエレメントのうち、1 つのみを設定する必要があります。どのヘッダー・エレメントでも、これらのエレメントのうちの複数を設定するとエラーになります。value サブエレメントは、ユーザー提供のヘッダー・データ・バインディングによって使用される構造を保管します。残りの 3 つのエレメント (rfh、rfh2、および opaque) については後述します。
WebSphere MQ RFH ヘッダーには、名前と値のペアのストリングが含まれます。それぞれの名前と値は単純にテキスト・ストリングです。これは、SMO では、名前と値のエレメントを含む反復プロパティー・エレメントとして表されます。
WebSphere MQ RFH2 ヘッダーには、ゼロ個以上の名前付きフォルダーが含まれます。それぞれの名前付きフォルダーには、一連のプロパティーおよびグループが含まれます。プロパティーには、名前、オプションのタイプおよび値 (すべて string として表される) があります。グループには、名前があり、一連のプロパティーおよびグループが含まれます。RFH2 ヘッダーの SMO 表記にも、NameValueCCSID エレメントが含まれます。これは、WebSphere MQ メッセージのフォルダーをエンコードするための CCSID を決定します。
opaque エレメントは、標準構造を持つ任意の WebSphere MQ ヘッダーを表します。このようなすべてのヘッダー (StrucId、Version、および Flags) に共通のフィールドは、エレメントとして表されます。ヘッダーのモデル化されていない部分を hexBinary データとして含む data エレメントもあります。 通常、opaque エレメントを使用する場合は、データが破損しないようにするため、ヘッダーに関連付けられた正しい Encoding および CodedCharSetId 値を保持することが重要です。
WebSphere MQ ヘッダーのフィールドは、WebSphere MQ で使用されているのと同じタイプ・セットを使用して定義されます。MQLONG フィールドは int として表され、MQBYTEnn フィールドは長さが nn に制限された hexBinary データとして表され、MQCHARnn フィールドは長さが nn 文字に制限された string データとして表されます。
(c) Copyright IBM Corporation 2005, 2006. All rights reserved.
(c) Copyright IBM Japan 2006
このインフォメーション・センターでは、Eclipse テクノロジー (http://www.eclipse.org) が採用されています。