1

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

谢谢

4

2 回答 2

1

不幸的是,通过提取它们,ecore 编辑器将丢失信息,这意味着一些额外的工作......我在 Sirius 和 sub e-packages 上遇到了同样的问题,导致 Sirius 不断地崩溃图表。这是我解决提取子电子包的方法:

  1. 首先为所需的子包创建一个新的 .ecore 文件。
  2. 使用示例 ecore 模型编辑器(树视图)打开两个 .ecore 文件(您的主文件和新文件)。
  3. 将包属性复制到新的 epackage 节点(ns、praefix、uri),您需要手动执行此操作。
  4. 然后将您的全部内容(不包括紫色包节点)从您的子包拖放到新的 Epackage
  5. 保存并确保新文件中没有错误发生。
  6. 通过单击“加载资源”将新的 .ecore 文件加载到主文件中 现在您的主文件知道您在子包中拥有的 2 种 EClass,它们的名称相同但它们的 uri 不同。

您现在可以简单地将所有出现的子 epackage-eclass 替换为更新的或更智能和更安全的

  1. 一次替换一个 etype(实际使用根包中的 etype)
  2. 以文本形式打开您的主 .ecore 文件,您将看到 etype 值都有一个类似的路径,eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EObject"然后您需要知道您的 etype 路径(来自您的子 epackage 和新的)有何不同,因此您可以简单地将它们全部替换并你的好。
  3. 最后删除子epackage

希望这可以帮助

于 2016-06-29T08:49:02.073 回答
0

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

于 2016-06-28T06:18:20.923 回答