我有一个问题:
在我的建模工具(企业架构师)中,我已经建模元模型(基于UML)。现在,我想将元模型转换为Ecore。但我不知道该怎么做。
在Enterprise Architect中,我可以将元模型导出为UML XMI。有人知道是否可以将生成的XMI转换为Ecore XMI吗?!
谢谢
发布于 2012-04-26 05:23:36
有人知道是否可以将生成的XMI转换为Ecore XMI吗?!
是的,这是可能的-至少在大纲上是可能的。你可以把这个问题分成两部分:
语义映射
我假设你的元模型关注的是静态结构。除了声明EOperations之外,ECore不支持动态概念。如果这是相关的,下面会有更多关于动态的内容。
我不是特别了解EA,也不知道它支持哪个版本的XMI。然而,它将是核心概念的一些变体:类、属性、操作、关联、AssociationEnd等。eCore有一个similar (if smaller) set of concepts:EClass、EAttribute、EDataType、EReference、EOperation等。
所以这里的映射应该是直接的。基本上,为每个ECore概念创建一个UML等价物的实例。
关系不是很明显,但仍然是可行的。ECore不直接支持关系;EReference是唯一类似的概念。然而,合成关联是相当容易的,例如:
EReference关联变成了具有最小和最大基数的单个EReferences,每个方向一个。您还应该设置EOtherEnd属性,该属性实际上表示两个EReferences是同一个association.的一部分
希望这能给你带来灵感。
Implementation
定义了你的概念映射之后,有很多关于如何做的选择。所有这些通常都遵循相同的基本模型:
Parse Source --> Map Source Concepts to Target Concepts -->生成目标文本。
您可以使用xslt (因为它只是一个XML->XML转换)。您还可以使用许多可用的模型到模型(M2M)和/或模型到文本(M2T)工具包中的一个。例如,参见eclipse建模项目(M2M,M2T)。您还可以使用EA API读取模型,而不是生成和解析XMI,从而直接从EA转到EA。您选择哪一个将取决于您的环境、技能集等。
如果你想看看它在实践中会是什么样子,你可以看看MagicDraw。它提供开箱即用的ECore导出。(请注意,这是一个付费工具-但eval是可用的)。
直接问Sparx可能也是值得的:如果EA没有可用的ECore导出插件/插件,我会有点惊讶。
hth。
动态
如果您的模型具有动态性(状态、模型等)那么你就有更多的问题了。ECore根本没有涵盖这些概念。扩展ECore是可能的,这可能是一个选择--但这可能需要更多的工作,因为使用ECore的工具不太可能理解您的扩展。
发布于 2012-04-25 06:39:07
你可以很容易地从Ecore转到UML,但另一种方法是不可能的。你有几个插件,但当你尝试使用它们时,它不起作用。
https://stackoverflow.com/questions/10303280
复制相似问题