我有两个不同版本的EMF插件,可加载特定的.xmi。后一个版本已更改,因此前一个版本的xmi不兼容。我想做的是先用第一个插件加载xmi,然后使用更新的插件以编程方式构建模型,从而迁移较旧的模型。除了EMF模型中的某些更改外,它们是相同的。

如何加载这些插件?是否有可能?有更好的策略吗?

有帮助吗?

解决方案

我建议更改旧版本的ID(并可能更改EMF包URI),以便您可以同时拥有两个代码和模型。

由于您需要在同一个插件(迁移器)中同时处理旧类和新类,因此无法同时使用这两个类。

但是,您应该查看动态EMF技术,您可以在没有旧模型的情况下打开旧模型(另一方面,您必须使用反射API)。使用这种方法,您可以编写一个转换器,使用EMF反射API打开旧模型,然后手动将其转换为新模型版本。

其他提示

对不起,但这是不可能的,因为这些插件是单例的。而且,由于Java基类妨碍了您的迁移,因此您无法在迁移期间切换插件。

一种可能的解决方案是使用 EDapt 技术。这项技术使您可以在加载模型时自动迁移模型。我曾在两个不同的项目中使用过EDapt的前身COPE,并取得了巨大的成功。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top