特定の .xmi をロードする EMF プラグインの 2 つの異なるバージョンがあります。後者のバージョンは、以前のバージョンの xmi と互換性がないように変更されています。私がやりたいことは、最初のプラグインで xmi をロードし、新しいプラグインを使用してプログラムでモデルを構築し、古いモデルを移行することです。これらは、EMF モデル内のいくつかの変更を除いて同一です。
これらのプラグインをロードするにはどうすればよいですか? 出来ますか?より良い戦略はありますか?
特定の .xmi をロードする EMF プラグインの 2 つの異なるバージョンがあります。後者のバージョンは、以前のバージョンの xmi と互換性がないように変更されています。私がやりたいことは、最初のプラグインで xmi をロードし、新しいプラグインを使用してプログラムでモデルを構築し、古いモデルを移行することです。これらは、EMF モデル内のいくつかの変更を除いて同一です。
これらのプラグインをロードするにはどうすればよいですか? 出来ますか?より良い戦略はありますか?
2 つのコードとモデルを同時に使用できるように、古いバージョンの ID (および場合によっては EMF パッケージ URI) を変更することをお勧めします。
古いクラスと新しいクラスの両方を同じプラグイン (移行ツール) で処理する必要があるため、両方を機能させる方法はありません。
ただし、生成されたパッケージなしで古いモデルを開くことができる動的 EMF テクノロジを検討する必要があります (一方で、反射 API を使用する必要があります)。この方法を使用すると、EMF Reflective API を使用して古いモデルを開くコンバーターを作成し、それを手動で新しいモデル バージョンに変換できます。
申し訳ありませんが、これらのプラグインはシングルトンであるため、これは不可能です。また、Java ベース クラスが邪魔になるため、移行中にプラグインを切り替えることはできません。
考えられる解決策の 1 つは、EDaptテクノロジを使用することです。このテクノロジーにより、ロード時にモデルを自動的に移行できます。私は、EDapt の前身である COPE を 2 つの異なるプロジェクトで使用し、大きな成功を収めました。