イベント・インスタンス・メタデータへのアクセスは、Java ベースの Eclipse Modeling Framework によって実行されます。
イベント・オブジェクトを使用する場合に必要となるクラスおよび インターフェースを提供する org.eclipse.hyades.logging.events.cbe パッケージは、Eclipse Modeling Framework (EMF) に基づいています。EMF とは、構造化されたデータ・モデルに基づいてアプリケーション・コードを生成するときに使用される Java フレームワークのことです。 また、EMF は、データ・モデルを記述するメタデータにアクセスするために使用するインターフェースも生成済みコード内に提供します (EMF について詳しくは、http://www.eclipse.org/emf にある Eclipse Modeling Framework 資料を参照)。
EMF と互換性のあるツールは、このインターフェースを使用して、データ・モデルに関する予備知識やインプリメンテーションへのアクセスなしで CommonBaseEvent イベント・データと対話できます。これにより、開発ツールで他のデータ・モデルのデータを CommonBaseEvent モデルに転送するコードを生成できます。 その後、アプリケーション開発者は、データを構築するコードではなくデータを使用するコードの作成に焦点を合わせることができます。
例えば、ネットワーク・イベントをモニターし、EMF で独自のデータ・モデルを記述するイベント・ソースがあると仮定します。両方のデータ・モデルへのアクセスによって、開発ツールには、イベント・ソース・データ・モデルのフィールドとともに CommonBaseEvent データ・モデルのフィールドが表示されます。次に開発者は、グラフィカル・インターフェースを使用して、イベント・ソース・モデルのフィールドから CommonBaseEvent モデルのフィールドへのマップ方法を示すことができます。例えば、イベント・ソース・データ・モデルの Workstation.name というフィールドは、CommonBaseEvent データ・モデルの CommonBaseEvent.sourceComponentId.location フィールドに対応します。どちらのデータ・モデルも標準の EMF インターフェースを使用して記述されているので、ツールにより、2 つのモデル間でのデータ転送を処理するコードを生成することができます。
以下のコード・フラグメントは、開発ツールがどのように EMF インターフェースを使用して CommonBaseEvent データ・モデルに関する情報を照会し、この情報を使用してイベント・インスタンスと対話するかを示す例です。 この例は、単純なイベント・コンシューマーの一部と見なすことができます。 イベント・コンシューマーは、イベント・インスタンスのすべてのフィールドを繰り返し処理し、フィールドごとに、すべてのフィールドの名前と値を出力します。
// event is a valid CommonBaseEvent instance // Get list of event instance structural features (fields) List features = event.eClass().getEAllStructuralFeatures(); // iterate through list; print names and values for (int i = 0 ; i < features.size() ; i++) { EStructuralFeature feature = (EStructuralFeature)features.get(i); Object value = eObj.eGet(feature); System.out.println(feature.getName() + ":" + value); }
CommonBaseEvent データ・モデルは、EMF ファイル cbe.ecore および cbe.genmodel に記述されています。これらのファイルは、Common Event Infrastructure SDK に組み込まれています。ユーザーは、Eclipse ベースの開発環境にこれらのファイルをインポートし、EMF を使用して CommonBaseEvent オブジェクトと対話するコードを生成できます。
(c) Copyright IBM Corporation 2005, 2006.
本製品では Eclipse テクノロジーが採用されています。(http://www.eclipse.org)