Scala的EMF/UML和OCL API

Scala的EMF/UML和OCL API,scala,uml,eclipse-emf,metamodel,ocl,Scala,Uml,Eclipse Emf,Metamodel,Ocl,我在Scala中开发的应用程序的一部分需要读取和解析EMF/UML模型以及在这些模型上定义的OCL表达式。我的OCL表达式基本上是在这些EMT/UML模型上定义的查询表达式 我的问题是: 1) 读取和解析EMF/UML模型的API选项是什么 2) 在EMF/UML模型上解析和评估OCL表达式(查询)的API选项有哪些 要开始使用EMF和UML,您至少需要依赖于以下JAR: org.eclipse.emf.common org.eclipse.emf.ecore org.eclipse.uml2

我在Scala中开发的应用程序的一部分需要读取和解析EMF/UML模型以及在这些模型上定义的OCL表达式。我的OCL表达式基本上是在这些EMT/UML模型上定义的查询表达式

我的问题是:

1) 读取和解析EMF/UML模型的API选项是什么

2) 在EMF/UML模型上解析和评估OCL表达式(查询)的API选项有哪些


要开始使用EMF和UML,您至少需要依赖于以下JAR:

  • org.eclipse.emf.common
  • org.eclipse.emf.ecore
  • org.eclipse.uml2.uml
然后,您可以使用以下代码加载第一个EMF模型:

File file = new File("path")
ResourceSet resourceSet = new ResourceSetImpl();

// Register the various metamodels that will be used, here we are using UML
resourceSet.getPackageResgitry().put(UMLPackage.NS_URI, UMLPackage.eINSTANCE);

// Load the resource
URI uri = URI.createFileURI(file.getAbsolutePath());
Resource resource = resourceSet.getResource(uri, false);

// Iterate on the content of the whole resource
TreeIterator<EObject> iterator = resource.getAllContents();
while (iterator.hasNext()) {
    EObject eObject = iterator.next();
}
File File=新文件(“路径”)
ResourceSet ResourceSet=new ResourceSetImpl();
//注册将要使用的各种元模型,这里我们使用的是UML
resourceSet.getPackageResgitry().put(UMLPackage.NS_URI,UMLPackage.eINSTANCE);
//加载资源
URI=URI.createFileURI(file.getAbsolutePath());
Resource=resourceSet.getResource(uri,false);
//迭代整个资源的内容
TreeIterator迭代器=resource.getAllContents();
while(iterator.hasNext()){
EObject=iterator.next();
}
在EObjects(EMF基本元素)上解析和评估OCL代码会有点复杂,您可以查看OCL文档和wiki以了解更多信息: