Frage

Ich habe zwei verschiedene Versionen eines EMF-Plugins, das eine bestimmte .xmi lädt.Die letztere Version wurde geändert, so dass das xmi der vorherigen Version nicht kompatibel ist.Was ich tun möchte, ist, die XMIs mit dem ersten Plugin zu laden und dann programmgesteuert ein Modell mit dem neueren Plugin zu erstellen, um ältere Modelle zu migrieren.Sie sind bis auf einige Änderungen innerhalb eines EMF-Modells identisch.

Wie lade ich diese Plugins?Ist es möglich?Gibt es bessere Strategien?

War es hilfreich?

Lösung

Ich schlage vor, die ID der alten Version (und möglicherweise den EMF-Paket-URI) zu ändern, damit Sie die beiden Codes und Modelle gleichzeitig haben können.

Da Sie sowohl alte als auch neue Klassen im selben Plug-In (dem Migrator) behandeln müssen, können beide nicht funktionieren.

Sie sollten sich jedoch die dynamische EMF-Technologie ansehenSie können das alte Modell ohne die generierten Pakete öffnen (andererseits müssen Sie die reflektierende API verwenden).Mit dieser Methode können Sie einen Konverter schreiben, der das alte Modell mithilfe der EMF Reflective API öffnet und manuell in Ihre neue Modellversion übersetzt.

Andere Tipps

Entschuldigung, aber das ist nicht möglich, da diese Plug-Ins Singletons sind.Und Sie können die Plug-Ins während der Migrationen nicht wechseln, da die Java-Basisklassen Ihnen im Weg stehen.

Eine mögliche Lösung ist die Verwendung der EDapt -Technologie.Mit dieser Technologie können Sie Ihr Modell beim Laden automatisch migrieren.Ich habe COPE - den Vorgänger von EDapt - in zwei verschiedenen Projekten mit großem Erfolg eingesetzt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top