2

假设我有人 EMF 模型。我创建了这个模型 bob.person 和 mike.person 的 2 个实例。有没有办法在我的工作区中创建所有模型的集合,这些模型是 Person 并使用 OCL 或 EMF Query 查询它们?

4

1 回答 1

3

当然是。

首先,使用 Eclipse 资源 API 在工作区中创建某种类型的所有模型的集合。

IResourceVisitor 

将派上用场,搜索具有特定扩展名的文件,并将它们放入集合中。它们可以通过以下方式加载到资源集中:

ResourceSet personSet = new ResourceSetImpl();
for (IResource res : foundIResources) {
  personSet.getResource(URI.createFileUTI(res.getFullPath(), true);
} 

接下来,您应该针对结果集执行查询。您可以使用以下方式收集资源集的所有根元素:

Set<EObject> roots = new HashSet<EObject>;
for (Resource res : personSet.getResources()) {
  roots.addAll(res.getContent());
}

或创建一个

IEObjectSource

具有类似功能,可与 FROM EMF 模型查询语句一起使用。

于 2012-07-19T05:49:11.223 回答