EMF提供了两类三种方式来校验EMF模型。
1> EMF ECore规则校验
2> Live校验
3> Batch校验
· EMF校验代码
这里用到的代码可以在EMF提供的例子中查看到。Example->EMF Validation Framework Plug-ins->General Validation Example)
· EMF ECore规则校验
主要由org.eclipse.emf.ecore.util.EObjectValidator来完成,主要校验EFeature和EAttribute(EXTLibraryPackageImpl.initializePackageContents())
或者,通过EOperation/EAnnotation添加操作来实现自定义[1]的校验。
如果在Ecore中设置的属性,需要有特殊的考虑,可以通过实现自定义的EValidator来代替EMF默认的EObjectValidator。注册方式如下:
// Register package validator EValidator.Registry.INSTANCE.put (theEcorePackage, new EValidator.Descriptor() { public EValidator getEValidator() { return EcoreValidator.INSTANCE; } });
可以通过下面两种方式来注册:
1) 在初始化ModelPackage时实现: org.eclipse.emf.ecore.impl.EcorePackageImpl.init()
2) 通过StartUp扩展点来实现: org.eclipse.ui.startup [2]
· Batch模型校验 & Live实时校验 [3][4]
主要是通过扩展点来注册,实现AbstractModelConstraint(#validate)校验类,并把该类添加到扩展点的constraint节点上:
需要注意的是,constraintProvider的package的Uri需要和模型中的package-uri对应。如图所示:
参考文章:
[1] 八进制-模型的验证 http://www.cnblogs.com/bjzhanghao/archive/2006/08/09/472607.html
官方EMF Validation Overview http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.emf.doc%2Freferences%2Foverview%2FEMF.Validation.html
[2] EMF Validation Adapter http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.emf.validation.doc/tutorials/validationAdapterTutorial.html
[3] 使用 EMF Validation 框架来验证 EMF 模型 http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-emfvldt/index.html
Validator Service http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.emf.validation.doc/tutorials/validationAdapterTutorial.html
相关推荐
- **模型验证**: EMF支持模型的验证机制,可以确保模型数据的正确性和一致性。 - **模型转换**: EMF还支持模型之间的转换,这对于集成不同的系统非常有用。 #### 六、EMF的安装与使用 1. **安装EMF**: 在Eclipse中...
**EMF Validation Framework Programmer's Guide** 阐述了如何利用 EMF 的验证框架来确保模型数据的有效性。 - **定义验证规则**: EMF 支持定义复杂的验证规则,这些规则可以检查模型数据是否符合特定的标准或业务...
#### 一、EMF框架概述 EMF(Eclipse Modeling Framework)是Eclipse项目中的一个子项目,它提供了一套用于构建模型驱动的开发工具和应用程序的框架。EMF的主要目标是简化元数据驱动应用的开发过程,通过将模型与...
EMF(Eclipse Modeling Framework)是Eclipse基金会提供的一种强大的模型化框架,它主要用于构建基于模型的应用程序。在处理XML数据时,EMF提供了一种高效且灵活的方式,能够将XML文档转换为可操作的对象模型,进而...
这个更新包包含了对EMF框架的增强以及对XSD处理的改进,旨在提供更强大的模型驱动开发支持。 【描述】中提到的“EMF,安装eclipse插件所需要jar包,含xsd等完整包”,意味着这个压缩包内包含了运行Eclipse插件所需...
- **验证(Validation)**:通过元模型定义的约束,EMF可以进行模型的静态验证,确保模型的正确性。 - **代码生成与逆向工程(Code Generation & Reverse Engineering)**:从元模型生成Java代码,反之亦可将Java...
EMF是Eclipse建模工具栈的重要组成部分,它不仅用于构建模型驱动的软件,还可以用于生成代码、执行验证和进行数据交换。 在压缩包中包含的文件名“eclipse”可能指的是Eclipse IDE的相关文件或配置,这通常意味着该...
此外,EMF提供了丰富的API,允许动态修改模型,实现模型的加载、保存和验证。 **高级话题** EMF支持许多高级特性,例如: 1. **逆向工程**:可以从现有的Java代码反向生成EMF模型。 2. **动态模型**:在运行时动态...
EMF提供了一整套工具和服务,包括模型的序列化、反序列化、验证和转换,使得开发基于模型的系统变得更加高效。 在EMF中,模型通常以Ecore(Eclipse Core Meta-Object Facility)的形式存在,这是一个元模型定义语言...
EMF是Eclipse项目的一部分,它提供了一个用于构建基于模型的应用程序的框架和工具。在这一版本的更新中,开发者可能引入了新的功能、修复了已知问题或提升了性能。 【描述】提到的“EMF-runtime-2.7.1.zip”是EMF...
EMF是Eclipse平台中的一个重要组件,它为构建模型驱动的软件开发工具提供了一套强大的框架和库。在这个场景中,“Merge”可能指的是将不同的代码生成配置或模型进行整合,以实现更灵活的代码生成流程。 首先,我们...
EMF(Eclipse Modeling Framework)是Eclipse基金会推出的一个开源框架,主要用于构建基于模型的软件系统。它提供了元数据框架,使得开发人员可以利用模型驱动的开发方法来创建、管理和编辑复杂的软件项目。SDO...
本书是针对 Eclipse 建模框架(EMF)的全面修订版本,为读者提供了深入的指导、洞察力以及实际应用案例,帮助开发者利用 EMF 构建高效的应用程序。 #### 二、EMF 的核心概念与技术 1. **模型定义**: - **Java**...
EMF runtime支持这样的编辑器,因为它提供了模型的底层实现,包括解析、验证和转换模型数据。 在"emf-runtime-2.5.0.zip"的压缩包内,"eclipse"目录可能包含了用于集成到Eclipse IDE的插件和库文件。这些插件可能...
EMF(Eclipse Modeling Framework)是Eclipse基金会推出的一个开源框架,主要用于构建基于模型的软件应用程序。它提供了元数据的概念,允许开发者定义自己的数据模型,并且可以生成与这些模型对应的Java类,使得代码...
【EMF XSD SDK】是Eclipse平台下用于XML Schema Definition (XSD) 支持的软件开发工具包,它提供了强大的模型驱动框架(Model-Driven Framework, MDF)和可扩展标记语言(XML)相关的服务。这个SDK是Eclipse ...
3. org.eclipse.emf.validation_1.7.0.201306111341.jar:这是EMF验证框架的实现,提供了一种机制,可以在模型元素创建或修改时进行一致性检查和约束验证,确保设计的BPMN流程符合预设规则。 当在Eclipse中安装...