質問

特定の.xmiをロードするEMFプラグインの2つの異なるバージョンがあります。後者のバージョンは、前のバージョンのxmiに互換性がないように変更されています。私がやりたいのは、最初のプラグインでxmiをロードしてから、新しいプラグインを使用してプログラムでモデルを構築し、古いモデルを移行することです。これらは、EMFモデル内のいくつかの変更を除いて同一です。

これらのプラグインをロードするにはどうすればよいですか?出来ますか?より良い戦略はありますか?

役に立ちましたか?

解決

2つのコードとモデルを同時に使用できるように、古いバージョンのID(および場合によってはEMFパッケージURI)を変更することをお勧めします。

同じプラグイン(移行プログラム)で古いクラスと新しいクラスの両方を処理する必要があるため、両方を機能させる方法はありません。

ただし、動的EMFテクノロジーを確認する必要があります。生成されたパッケージなしで古いモデルを開くことができます(一方、リフレクティブAPIを使用する必要があります)。このメソッドを使用すると、EMFリフレクティブAPIを使用して古いモデルを開き、手動で新しいモデルバージョンに変換するコンバーターを作成できます。

他のヒント

申し訳ありませんが、これらのプラグインはシングルトンであるため、それは不可能です。また、Java基本クラスが邪魔になるため、移行中にプラグインを切り替えることはできません。

考えられる解決策の1つは、 EDapt テクノロジーを使用することです。このテクノロジーを使用すると、モデルをロードするときにモデルを自動的に移行できます。私は2つの異なるプロジェクトでCOPE(EDaptの前身)を使用して大成功を収めました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top