WPAI メディエーターは、異機種混合のデータ・ソース全体で固有の
データ・プログラミング・モデルを提供します。
このモデルは、JSR 235 - サービス・データ・オブジェクト (SDO) および
メディエーターに基づいています。
SDO は、データ・ソース全体の統一性を提供するだけでなく、次のことを行う
プログラミング・モデル用の仕様です。
- 共通アプリケーション・パターンに対する堅固なサポートを提供する
- アプリケーション、ツール、およびフレームワークが、より簡単にデータを照会、バインド、表示、更新、およびイントロスペクトすることを可能にする
SDO の詳細は、
http://www.eclipse.org/emf にあります。
メディエーターは、特定のデータ・ソース・タイプへのアクセスを可能にするコンポーネントです。
バックエンドからデータを読み取ってから、データ・グラフへの更新をバックエンドに
伝搬することによって、SDO データ・グラフを作成します。 必要な機能を
提供するには、メディエーターを構成する必要があります。この構成情報は、
メディエーターの
メタデータ と呼ばれます。メタデータには、
次のようなさまざまな情報が含まれています。
- アクセスされるソース固有のデータ成果物
- アプリケーションが通常使用するフィールドの選択
- 検索可能なデータに選択基準を適用するフィルター
- データ・ソースで実行するアクション
アプリケーション・コントロール・フロー
アプリケーションは、
メタデータ・オブジェクトをバックエンドの接続情報とともに使用して、
メディエーター・オブジェクト (またはコマンド) をインスタンス化します。
メディエーター・インスタンスは、そのメタデータを使用して、入力として
(SDO データ・グラフとして) 受け取るパラメーター、および (再び、SDO データ・
グラフとして) 生成する照会結果を判別します。メディエーターを使用すると、
照会結果を変更して、バックエンドに変更を適用してから、変更に関する情報を
SDO データ・グラフとして提供することができます。上述したステップのいずれかで、
バックエンドが例外をスローする場合は、エラー情報が含まれた障害データ・グラフが
提供されます。
プログラミング・モデルのエレメント
- メタデータ: (さまざまなデータ・ソース・タイプの) すべての
メタデータ・オブジェクト・タイプが、基本タイプ (つまり com.ibm.wps.mediator.CommandMediatorMetaData) から
派生します。
個々のメタデータ・オブジェクトは、名前と名前空間から構成される修飾名によって
一意的に識別されます。これは、通常、メタデータ・オブジェクトが構成されるときに
ユーザーによって指定されます。
メディエーター: すべてのコマンドが、基本タイプ (つまり
com.ibm.wps.mediator.CommandMediator) から派生します。
CommandMediator オブジェクトは、CommandMediatorMetaData オブジェクトを
使用してインスタンス化されます。CommandMediator は、ステートレス・オブジェクト
(むしろステートレス・サービス) です。これは、ユーザーが同じパラメーターまたは
別のパラメーターを使用して同一タスクを呼び出す必要がある場合に、再利用可能です。
サポートされるすべてのバックエンド・データ・ソース・タイプが、
アプリケーションが CommandMediatorMetaData オブジェクトからコマンドを
インスタンス化できる CommandMediatorFactory インターフェース
(com.ibm.wps.mediator.CommandMediatorFactory) を実装します。
また、CommandMediatorFactory インターフェースのメソッドは、データ・ソースの
接続情報を含む他のパラメーターを受け取ります。
以下では、CommandMediator インターフェースの
重要なメソッドについて説明します。これらのメソッドの一部は、特定のバックエンドでは
有効ではない場合があることに注意してください。
- getParamDataGraph() - 空のパラメーター・データ・グラフを取得するために
使用されます。取得されるパラメーター・データ・グラフには、特定の照会の
パラメーターの値が入力されます。
- getDataGraph() - 照会の結果または関数の出力引数を取得するために
使用されます。このメソッドは、照会のパラメーターまたは関数の入力引数を
含むパラメーター・データ・グラフをオプションで取ります。
- getEmptyDataGraph() - 新規オブジェクトのデータが取り込まれる空の
メイン・データ・グラフを取得するために、CommandMediator の CREATE タイプで
使用されます。空のデータ・グラフに適切な値を取り込んだ後は、applyChanges メソッドへの
呼び出しによって、バックエンドで新規オブジェクトが作成されます。
- applyChanges() - アプリケーションがメイン・データ・グラフに加えた
すべての変更を伝搬するために使用されます。情報の検索のみを行うタイプなどの
CommandMediator タイプでは、バックエンドに変更が伝搬されないため、このメソッドは
実装されません。
- SchemaMaker: 重要な別のインターフェースは、SchemaMaker
(com.ibm.wps.mediator.SchemaMaker) です。SchemaMaker は、渡された
CommandMediatorMetaData オブジェクトから次のデータ・グラフの形状を判別する
オブジェクトです。
- 照会へのパラメーター、または関数への入力引数など、パラメーター・データ・
グラフによって呼び出された入力としてメディエーターが受け取る SDO データ・
グラフの構造。
- メディエーターが照会の結果または関数呼び出しの出力引数として生成する
SDO データ・グラフの構造。これは、メイン・データ・グラフです。
- メディエーターがメイン・データ・グラフに行った変更を保管するための
ユーザー要求の結果として生成する SDO データ・グラフの構造。これは、
出力データ・グラフと呼ばれます。
- メディエーターがバックエンドとの対話時に例外の結果として生成する
SDO データ・グラフの構造。これは、障害データ・グラフと呼ばれます。
障害データ・グラフは、メディエーターによってスローされる MediatorException
(com.ibm.wps.mediator.MediatorException) に組み込まれています。
データ・グラフの構造は、データ・グラフのルート・データ・オブジェクトの
EClass (Eclipse モデリング・フレームワークについて
詳しくは、http://www.eclipse.org/emf を参照してください) として表されます。