【问题标题】:Generating the separate ecore files for the sub-Epackes present in the existing model为现有模型中存在的子 Epack 生成单独的 ecore 文件
【发布时间】:2016-10-29 00:03:46
【问题描述】:
问题:我有一个包含 sub-E 包的 ecore 文件。使用这个模型,我正在尝试使用 Sirius 创建 GUI 部分。但是 Sirius 的问题是它不支持包含 sub-E Packages 的 ecore 文件。所以我们必须提取那些子 E 包来分离 ecore 文件。但是每个 sub-E Packages 都与其他 sub-E Packages 有关系。那么我们如何才能将这些子E包提取到单独的ecore文件中,使得提取它们之后单独的ecore文件之间仍然存在关系。
谢谢
【问题讨论】:
标签:
eclipse
eclipse-plugin
emf
eclipse-emf-ecore
eclipse-sirius
【解决方案1】:
在 eclipse ecore 编辑器中,您可以使用弹出菜单中的“加载资源”来加载任何 ecore 文件并从中使用对象。
【解决方案2】:
不幸的是,通过提取它们,ecore 编辑器将丢失信息,这意味着一些额外的工作......
我对天狼星和子电子包有同样的问题,导致天狼星不断地破坏图表。
这是我解决提取子电子包的方法:
- 首先为所需的子包创建一个新的 .ecore 文件。
- 使用示例打开两个 .ecore 文件(您的主文件和新文件)
ecore 模型编辑器(树视图)。
- 将包属性复制到新的 epackage 节点(ns、前缀、
uri) 您需要手动执行此操作。
- 然后拖放你的全部内容(不包括紫色包
node) 从您的子包到新的 Epackage
- 保存并确保新文件中没有错误发生。
- 通过单击“加载”将新的 .ecore 文件加载到主文件中
资源” 现在你的主文件知道你的子包中有两种 EClass,它们的名字是相同的,但它们的 uri 是
不同。
您现在可以简单地将所有出现的子 epackage-eclass 替换为更新的或更智能、更安全的类
- 一次性替换一个 etype(实际使用根包中的 etype)
- 以文本形式打开您的主 .ecore 文件,您将看到 etype 值为 all
有一个像
eType="ecore:EClass
../../org.eclipse.emf.ecore/model/Ecore.ecore#//EObject" 这样的路径然后你需要知道你的 etype 路径(来自你的子 epackage 和你的新的)有什么不同,这样你就可以简单地替换它们和你的好。
- 最后删除子epackage
希望对你有帮助