为现有模型中存在的子Epackes生成单独的ecore文件

时间:2016-06-27 04:45:38

标签: eclipse eclipse-plugin emf eclipse-emf-ecore eclipse-sirius

问题:我有一个ecore文件,其中包含子E包。使用这个模型我试图使用Sirius创建GUI部分。但Sirius的问题在于它不支持包含sub-E Packages的ecore文件。因此,我们必须将这些子E包提取为单独的ecore文件。但是每个子E包都与其他子E包有关。那么我们如何提取这些子E包以分离ecore文件,以便在提取它们之后,单独的ecore文件之间仍然存在关系。

由于

2 个答案:

答案 0 :(得分:1)

通过提取它们,ecore编辑器将遗失信息,这意味着一些额外的工作...... 我遇到了与天狼星和子电子包相同的问题,导致天狼星经常崩溃图表。 以下是我如何解决提取子包装的问题:

  1. 首先为您想要的子包创建一个新的.ecore文件。
  2. 使用Sample打开两个.ecore文件(主文件和新文件) ecore模型编辑器(treeview)。
  3. 将Package属性复制到新的epackage节点(ns,praefix, uri)你需要手动完成这个。
  4. 然后拖放整个内容(不包括紫色包装) 节点)从您的子包到新的Epackage
  5. 保存并确保新文件中没有错误。
  6. 点击"加载,将新的.ecore文件加载到主文件中 资源"现在你的主文件知道你的子包中有两种EClasses,它们的名字是相同的,但它们的uri是 不同。
  7. 您现在可以简单地用所有出现的子包装 - eclass替换所有出现的子包装 - eclasses,或更智能,更安全

    1. 替换etype一次(实际使用root包中的etype)
    2. 将主.ecore文件作为文本打开,您将看到etype值全部 有一个像eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EObject"这样的路径然后你需要知道你的etype路径(来自你的子包装和你的新路径)是如何不同的,所以你可以简单地将它们全部替换为你的好处。
    3. 最后删除子epackage
    4. 希望这有帮助

答案 1 :(得分:0)

在eclipse ecore编辑器中,您可以使用"加载资源"在弹出菜单中加载任何ecore文件并使用它中的对象。