メディエーション・フロー・コンポーネントは、サービス・コンポーネント間のメッセージ・フローに作用します。メディエーション・コンポーネントの機能は、メディエーション・プリミティブ によって実装されます。メディエーション・プリミティブは、標準のサービス・イン
プリメンテーション・タイプを実装します。
メディエーション・フロー・コンポーネントは、1 つ以上のフローを持っています。例えば、要求
用のフロー、応答用のフローなどです。
WebSphere® ESB
はメディエーション・プリミティブの、提供されたセットをサポートします。これは、WebSphere ESB 内にデプロイされたメディエーション・モジュールのための標準のメディエーション機能を実装します。特殊なメディエーション機能を必要とする場合は、独自のカスタム・メディエーション・プリミティブを開発することができます。
メディエーション・プリミティブは、サービス・メッセージ・オブジェクト (SMO) で表されるメッセージを処理するかまたは取り扱う 1 つの「イン」操作を定義します。メディエーション・プリミティブはまた、メッセージを別のコンポーネントまたはモジュールに送信する「アウト」操作も定義します。
図 1. 3 つのメディエーション・プリミティブから成るメディエーション・モジュール
WebSphere Integration Developer を使用して、メディエーション・プリミティブを構成し、そのプロパティーを設定できます。
これらのプロパティーのいくつかをプロモートすることにより、それらをランタイム管理者に対して表示することができます。
プロモート可能なメディエーション・プリミティブ・プロパティーは、すべて動的プロパティーにすることもできます。
動的プロパティーは、ポリシー・ファイルを使用して実行時にオーバーライドすることができます。
また、WebSphere Integration Developer を使用すれば、メディエーション・プリミティブを使用して、グラフィカルにメディエーション・フロー・コンポーネントをモデル化しアセンブルすることができ、またメディエーション・フロー・コンポーネントからメディエーション・モジュールをアセンブルすることができます。管理コンソールではメディエーション・モジュールを SCA モジュールと呼びます。
WebSphere Integration Developer により、モジュールやモジュールの従属ライブラリー内にサブフローを定義することもできます。
サブフローには、ポリシー解決メディエーション・プリミティブを除くすべてのメディエーション・プリミティブを定義することができます。サブフローは、要求フローや応答フロー、またはサブフロー・メディエーション・プリミティブを使用する別のサブフローから呼び出されます。サブフロー内のメディエーション・プリミティブからプロモートされたプロパティーは、サブフロー・メディエーション・プリミティブ上のプロパティーとして公開されます。
このプロパティーは、ランタイム管理者による変更が可能なモジュール・レベルに到達するまで、
再度プロモートすることができます。
サポートされるメディエーション・プリミティブ
以下の
メディエーション・プリミティブのセットは、
WebSphere ESB
によってサポートされます。
- ビジネス・オブジェクト・マップ
- メッセージを変換します。
- 再利用可能なビジネス・オブジェクト・マップを使用してメッセージ変換を定義します。
- ビジネス・オブジェクト・マップ・エディターを使用してメッセージ変換をグラフィカルに定義できます。
- メッセージの内容を変更できます。
- 入力メッセージ・タイプをさまざまな出力メッセージ・タイプに変換できます。
- カスタム・メディエーション
- 独自のメディエーション・ロジックを Java™ コードで実装できます。
カスタム・メディエーション・プリミティブは、ユーザー定義メディエーション・プリミティブの柔軟性と、事前定義メディエーション・プリミティブの簡潔性を組み合わせています。
以下のようにして、複雑な変換およびルーティング・パターンを作成できます。
- Java コードを作成する。
- 独自のプロパティーを作成する。
- 新規端末を追加する。
カスタム・メディエーション・プリミティブからサービスを呼び出すことはできますが、サービスを呼び出すためにはサービス起動メディエーション・プリミティブが設計されており、これは再試行などの追加機能を提供します。
- データ・ハンドラー
- メッセージの一部を変換できます。メッセージのエレメントを物理形式から論理構造に変換したり、論理構造から物理形式に変換したりするために使用します。プリミティブの主な使用目的は、JMS テキスト・メッセージ・オブジェクト内のテキスト・ストリングなどの物理形式を論理ビジネス・オブジェクト構造に、およびその逆方向に変換することです。このメディエーションは、一般に次の目的で使用されます。
- 入力メッセージのセクションを定義済み構造から別の構造に変換する - 一例として、SMO にコンマ区切りのストリング値が含まれており、この SMO を解析して特定のビジネス・オブジェクトにする場合が挙げられます。
- メッセージ・タイプを変更する - 例えば、JMS エクスポートで JMS 基本タイプト・データ・バインディングを使用するように構成されており、統合開発者がメディエーション・モジュール内でコンテンツを特定の BO 構造まで拡張することを指定する場合などです。
- データベース検索
- ユーザー提供のデータベースからの情報を使用して、メッセージを変更します。
- 使用するデータベース検索メディエーション・プリミティブ用の、データベース、データ・ソースおよびサーバー認証設定をセットアップする必要があります。管理コンソールを使用して、これを実行してください。
- データベース検索メディエーション・プリミティブは、1 つの表のみから読み取りを行う
ことができます。
- 指定されたキー欄が固有値を含んでいる必要があります。
- 値列のデータは、単純 XML スキーマ・タイプか、単純 XML スキーマ・データを拡張した XML スキーマ・タイプになっている必要があります。
- Endpoint Lookup
- リポジトリー内でサービス・エンドポイントを検索することにより、要求の動的ルーティングを可能にします。
- サービス・エンドポイント情報は、WebSphere Service Registry and Repository (WSRR) から取得されます。WSRR レジストリーは、ローカルまたはリモートにすることができます。
- WSRR 管理コンソールからレジストリーの変更を行います。
- WebSphere ESB は、使用するレジストリーを認識する必要があるため、WebSphere ESB 管理コンソールを使用して WSRR アクセス定義を作成する必要があります。
- イベント・エミッター
- イベントをメディエーション・フロー・コンポーネント内から送信できるようにして、モニターを拡張します。
- メディエーション・アクションは、チェック・ボックスを選択解除することによって中断できます。
- WebSphere ESB 上の Common Base Events (CBE) ブラウザーを使用して、イベント・エミッターのイベントを表示することができます。
- パフォーマンス上の理由で、メディエーション・フローの重要な時点でのみイベントを送信する必要があります。
- イベントに含まれるメッセージの部分を定義できます。
- イベントは Common Base Event (CBE) の形式で、Common Event Infrastructure サーバーに送信されます。
- イベント・エミッター情報を十分活用するために、イベント利用者が Common Base Event の構造を理解しておく必要があります。Common Base
Event には包括的なスキーマがありますが、このスキーマでは拡張データ・エレメントに含まれるアプリケーション固有のデータはモデル化されません。拡張データ・エレメントをモデル化するために、WebSphere Integration Developer のツール群により、構成済みのイベント・エミッター・
メディエーション・プリミティブごとに Common Event Infrastructure イベント・カタログ定義ファイルが生成されます。
イベント・カタログ定義ファイルは、ユーザーのサポート用に提供されるエクスポート成果物ですが、これらは WebSphere Integration Developer や WebSphere ESB ランタイムでは使用されません。
イベント・カタログ定義ファイルは、イベント・エミッターのイベントを利用するアプリケーションを作成するときに参照する必要があります。
- WebSphere ESB から、他のモニターを指定することができます。
例えば、インポートおよびエクスポートから送信されるイベントをモニターすることができます。
- 障害
- フロー内の特定のパスを停止して、例外を生成します。
- ファンイン
- メッセージの集約 (結合) に役立ちます。
- ファンアウト・メディエーション・プリミティブと組み合わせた場合のみ使用できます。
- ファンアウト・メディエーション・プリミティブとファンイン・メディエーション・プリミティブを一緒に使用して、データを 1 つの出力メッセージに集約できます。
- ファンイン・メディエーション・プリミティブは、決定ポイントに到達するまでメッセージを受信し、その後 1 つのメッセージが出力されます。
- 共用コンテキストは、集約データを保持するために使用する必要があります。
- ファンアウト
- メッセージの分割および集約 (結合) に役立ちます。
- ファンアウト・メディエーション・プリミティブとファンイン・メディエーション・プリミティブを一緒に使用して、データを 1 つの出力メッセージに集約できます。
- 繰り返すモードでは、ファンアウト・メディエーション・プリミティブにより、反復エレメントを含む単一の入力メッセージが繰り返されます。
反復エレメントが発生するたびに、メッセージが送信されます。
- 共用コンテキストは、集約データを保持するために使用する必要があります。
- HTTP ヘッダー・セッター
- HTTP メッセージ・ヘッダーを管理するためのメカニズムを提供します。
- HTTP メッセージ・ヘッダーを作成、設定、コピー、または削除できます。
- 複数のアクションを設定して複数の HTTP ヘッダーを変更できます。
- MQ ヘッダー・セッター
- MQ メッセージ・ヘッダーを管理するメカニズムを提供します。
- MQ メッセージ・ヘッダーを作成、設定、コピー、または削除できます。
- 複数のアクションを設定して複数の MQ ヘッダーを変更できます。
- SOAP ヘッダー・セッター
- SOAP メッセージ・ヘッダーを管理するためのメカニズムを提供します。
- SOAP メッセージ・ヘッダーを作成、設定、コピー、または削除できます。
- 複数のアクションを設定して複数の SOAP ヘッダーを変更できます。
- メッセージ・エレメント・セッター
- メッセージの内容を設定するための単純なメカニズムを提供します。
- メッセージ・エレメントを変更、追加、または削除することができます。
- メッセージのタイプは変更されません。
- 値列のデータは、単純 XML スキーマ・タイプか、単純 XML スキーマ・データを拡張した XML スキーマ・タイプになっている必要があります。
- メッセージ・フィルター
- メッセージを、メッセージの内容に基づいて、さまざまなパスにルーティングします。
- メディエーション・アクションは、チェック・ボックスを選択解除することによって中断できます。
- メッセージ・ロガー
- リレーショナル・データベース内に、またはユーザー独自のカスタム・ロガーによってメッセージをログに記録します。
メッセージは XML として保管されます。したがって、データは XML 対応アプリケーション
で後処理できます。
- メディエーション・アクションは、チェック・ボックスを選択解除することによって中断できます。
- Rational データベース・スキーマ (テーブル構造) は IBM によって定義されます。
- デフォルトでは、メッセージ・ロガー・メディエーション・プリミティブは共通データベースを使用します。
ランタイムは、jdbc/mediation/messageLog にあるデータ・ソースを共通データベースにマップします。
- ハンドラー実装クラスを設定して、カスタム・ロガーの動作をカスタマイズできます。オプションとして、フォーマッター実装クラス、フィルター実装クラス、またはその両方を設定して、カスタム・ロガーの動作をカスタマイズすることもできます。
- ポリシー解決
- リポジトリー内でサービス・エンドポイントおよび関連付けられたポリシー・ファイルを検索することにより、要求の動的構成を可能にします。
- ポリシー・ファイルを使用して、他のメディエーション・プリミティブのプロモートされたプロパティーを動的にオーバーライドできます。
- サービス・エンドポイント情報およびポリシー情報は、WebSphere Service Registry and Repository (WSRR) から取得されます。WSRR レジストリーは、ローカルまたはリモートにすることができます。
- WSRR 管理コンソールからレジストリーの変更を行います。
- WebSphere ESB は、使用するレジストリーを認識する必要があるため、WebSphere ESB 管理コンソールを使用して WSRR アクセス定義を作成する必要があります。
- サービス起動
- メディエーション・フローの終わりまで待機してコールアウト・メカニズムを使用する代わりに、メディエーション・フローの内部からサービスを呼び出します。
- サービスが障害を戻す場合、同じサービスを再試行するか、または別のサービスを呼び出すことができます。
- サービス起動メディエーション・プリミティブは強力なメディエーション・プリミティブで、単純なサービス呼び出し用に単独で使用したり、複雑なメディエーション用に他のメディエーション・プリミティブを組み合わせて使用することができます。
- メッセージ型の設定
- 統合開発時に、型付けの弱いメッセージ・フィールドを型付けの強いメッセージ・フィールドであるかのように扱えるようにします。
フィールドに複数のタイプのデータを入れることができる場合、それは型付けの弱いフィールドです。
フィールドのタイプと内部構造が既知の場合、それは型付けの強いフィールドです。
- 実行時に、メッセージ型の設定メディエーション・プリミティブでは、メッセージの内容が予期したデータ・タイプと一致するかどうか確認できます。
- 停止
- 例外を生成しないで、フロー内の特定のパスを停止します。
- タイプ・フィルター
- タイプに基づいて、フローの別のパスにメッセージを誘導できます。
- XSL 変換
- メッセージを変換します。
- Extensible Stylesheet Language (XSL) 変換を実行できるようにします。
- XSLT 1.0 変換を使用してメッセージを変換します。変換はメッセージの XML シリアライゼーションに作用します。