イベント・インスタンス・メタデータへのアクセスは、Java ベースの Eclipse Modeling Framework を介して実行されます。
イベント・オブジェクトを使用する作業に必要なクラスおよびインターフェースを提供する org.eclipse.hyades.logging.events.cbe パッケージは、Eclipse Modeling Framework (EMF) を基にしています。EMF は、構造化データ・モデルを基にしたアプリケーション・コードの生成に使用される Java フレームワークで、そのデータ・モデルを記述するメタデータへのアクセスに使用可能な生成済みコード内のインターフェースも提供します。(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 で記述されます。これらのファイルは 共通イベント・インフラストラクチャー SDK とともに組み込まれます。これらのファイルを Eclipse ベースの開発環境にインポートしてから、EMF を使用して、CommonBaseEvent オブジェクトと対話するコードを生成することができます。