我正在通过 EMF 中的 Ecore 定义领域特定建模语言的元模型。因此,我从相关的 genmodel 生成一个编辑器,我可以使用它来创建符合元模型的模型。我想对元模型的某些元素可以假设的值指定一些 OCL 约束。如果我可以在 Ecore 模型中指定这些约束并让相关检查自动生成编辑器 Java 代码,那就太好了。
有没有标准的方法来做到这一点?
我正在通过 EMF 中的 Ecore 定义领域特定建模语言的元模型。因此,我从相关的 genmodel 生成一个编辑器,我可以使用它来创建符合元模型的模型。我想对元模型的某些元素可以假设的值指定一些 OCL 约束。如果我可以在 Ecore 模型中指定这些约束并让相关检查自动生成编辑器 Java 代码,那就太好了。
有没有标准的方法来做到这一点?
第一步是决定如何将约束添加到您的 ecore(元)模型。目前我知道有两种方法,你可以这样做:
1-在ecore模型的注释元素中嵌入ocl表达式。
2- 在 ecore 旁边的单独文件中包含 OCL 表达式。
有关第一种方法的更多信息,请查看OCLInEcore,第二种方法请查看OCLComplete。似乎他们提供了一些 API 来检查给定模型的 OCL 约束(一致性检查)。
出于您的目的,OCLInEcore 似乎是合适的。您可以将您的 ocl 嵌入到 ecore 中,并且您可以使用 OCLInEcore 提供的 API 来检查给定模型是否满足 ocl 约束。
希望这可以帮助。
您应该使用“Ecore 中的 OCL”查看 Eclipse 中 OCL 项目的最新工作,或者您可以尝试其他方法之一,将 OCL 与OCL Juno 文档中指定的 Ecore 集成。