XML スキーマ (XSD) を使用した EMF モデルの生成

最終更新日: 2004 年 6 月 29 日

このチュートリアルでは、XML スキーマから EMF モデルを作成して、 そのモデル用の単純なモデル・エディターを生成するプロセスを段階的に説明します。 このチュートリアルに従うと、XML スキーマによる単純なモデル定義から そのモデルの完全な機能エディターに至るまで、EMF がいかに簡単かが分かります。

スクリーン・ショットは、Eclipse SDK のバージョン 3.0 および EMF の バージョン 2.0 を使用したものです。

このチュートリアルで使用する XML スキーマ・ファイルは、 こちら (library.xsd) にあります。後で使用するために、 このファイルをご使用のワークステーションの任意のロケーションに保管してください。

XML スキーマから Ecore への基本的なマッピング規則は、以下の通りです。

モデリングの観点から見ると、XML スキーマは Ecore ほど表現力はありません。XML スキーマでは、 参照ターゲットの型を指定できず、双方向の参照を定義することもできません (ただし、EMF の独自の方法を用いてこれらの制限を解消することが可能です)。


目次

ステップ 0: 前提条件
ステップ 1: XML スキーマからのモデルのインポート
ステップ 2: EMF モデル・コードの生成
ステップ 3: モデルのエディターの生成
ステップ 4: 生成されたエディターの実行


 目次

ステップ 0: 前提条件

このチュートリアルでは、EMF ランタイム・パッケージ (EMF 生成プログラムと関連プラグインを含む) と、XML スキーマ Infoset モデル (XSD) ランタイム・パッケージの両方が必要となります。 この XSD ランタイム・パッケージには XML スキーマの EMF モデルが用意されており、EMF はスキーマを読み込む場合にこのモデルに依存します。手順を簡略化するために、EMF と XSD を結合した SDK パッケージが用意されています。これらのパッケージ (複数可) をインストールした後、Eclipse 環境で、それらのパッケージが使用可能であることを確認します。

上図では強調表示されていない追加 EMF プラグインおよび XSD プラグインは、 このチュートリアルでは必須ではありません。 これらは、インストールするパッケージによっては、表示されない場合もあります。


 目次

ステップ 1: XML スキーマからのモデルのインポート

以下の操作を行い、ワークスペースに新規 EMF プロジェクトを作成します。


 目次

ステップ 2: EMF モデル・コードの生成

生成プログラム・モデル genmodel は、モデルの全体を表すルート・オブジェクトを表示します。 このモデル・オブジェクトには、そのパッケージを表す子があります。 パッケージの子には分類 (クラスおよび、列挙型を含むデータ型) が表示されます。 クラスの子は、クラス属性、参照、およびオペレーションで、 列挙型の子は Enum リテラルです。

ほとんどの場合、プロパティーはデフォルト値から変更する必要はありませんが、 これらのオプションは、生成されるコードにおいて多くの制御を提供することができます。 現在のところは、幾つかの異なる生成プログラム・モデル・オブジェクトを選択し、そのプロパティーを眺めてください。

生成プログラム・モデルは、コード生成を開始する場所でもあります。 モデルのオブジェクトを右クリックすることによって、そのオブジェクトのコードを生成することができます。

生成した後、クラス・インターフェースおよび Enum クラスが作成されるか、 パッケージ自体およびそのファクトリーに対してインターフェースの新規ペアが作成されます。 接尾部「impl」および「util」が付いた 2 つの新規パッケージもあり、 これらには、インターフェースおよび追加ユーティリティー・クラスの実装、 および、そのモデル・プラグインの「plugin.xml」マニフェスト・ファイルが含まれます。

モデルを変更する場合は、再生成を行うことができ、 コードに対して行われた手動による変更と、モデルの変更はマージされます。 パッケージ、クラス、または enum オブジェクトを右クリックし、ポップアップ・メニューから 「モデル・コードの生成」を選択することによって、モデル・コードのサブセットだけを選択的に生成することもできます。


 目次

ステップ 3: モデルのエディターの生成

任意のモデルに対して、完全機能の Eclipse エディターを生成することもできます。 デフォルトでは、2 つのプラグインに分割されます。「edit」プラグインには、 構造化されたビューを提供してモデル・オブジェクトのコマンド・ベースの編集を実行するアダプターが含まれ、 「editor」プラグインは、エディターおよびウィザードの UI を提供します。

一般的に、モデル、編集、およびエディター・プラグインを一回のステップで生成する場合は、 ポップアップ・メニューから「すべて生成」を選択することによって実行することができます。

このコードは、生成される際に自動的にコンパイルされ、 変更が行われると再コンパイルされます。ワークベンチ設定で自動ビルドを使用不可にした場合、 手動でコンパイルを開始することができます。


 目次

ステップ 4: 生成されたエディターの実行

新規プラグインをテストするには、Eclipse の 2 つ目のインスタンス (ランタイム・ワークベンチと呼ばれます) を起動する必要があります。プラグインはこのワークベンチで実行されます。

これで、「Library Model」ウィザードを使用して、モデルの新規インスタンスを作成することができます。

このエディターのルート・オブジェクトは、「My.library」リソースに対応します。 その下に、ウィザードでモデル・オブジェクトとして選択されたオブジェクトであるライブラリーが一つあります。


目次