我想做双向 Model2Model 转换。两种型号均基于 EMF / eCore。实际上,我希望一个模型是另一个模型的可编辑视图。
我有哪些选择?哪些工具和转换语言可用,它们有什么限制?
我想做双向 Model2Model 转换。两种型号均基于 EMF / eCore。实际上,我希望一个模型是另一个模型的可编辑视图。
我有哪些选择?哪些工具和转换语言可用,它们有什么限制?
EMF 的转换工具比你想象的要多,有点疯狂……
对于模型不太相似的元模型到元模型的转换:
如果元模型非常相似,并且您只需要调整一些东西,那么就有针对该类型迁移/更新的工具:
您也可以随时使用 EMF Java API 直接操作元模型和模型。
我要补充一点,如果您正在做任何真正的 EMF 工作,您将需要获取并阅读EMF:Eclipse Modeling Framework。它也可以在Safari中使用。我强烈推荐 Safari,每月只需 39 美元,您就可以获得几乎所有可以使用的开发电子书。
M2M 是最难的。行业力量工具很少见,很多学术界的东西。如果您对 M2M 语言一无所知,请查看 ATL,它也应该支持 ecore。否则你可以看看 Xtend,它是为模型到文本而设计的,但你可以滥用它,它应该比普通的 java 更舒适。如果您的研究可以在这里查看基于 Scala 的转换
如果您坚持进行双向 M2M 转换(所谓的 Bxs),那么请知道有一个活跃的研究人员社区正在更新该 wiki:http ://bx-community.wikidot.com 。如果你访问它,你会发现他们列出了一堆适合 Bx 转换的工具http://bx-community.wikidot.com/relatedtools。
我过去使用过 ECHO,它提供了基于 KodKod 约束求解器的 QVT-R 实现。
绝对值得一试。
由于您特别要求进行双向模型转换,因此我必须说您别无选择。为了更清楚,除了您从 Ed Willink 得到的答案之外,现有的 M2M 转换语言 (AFAIK) 都不支持双向模型转换。如果您仍然对此感兴趣,QVTr 和 QVTc 执行引擎的工作开始看起来很有希望:QVTd 项目。