`
ww2
  • 浏览: 418261 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

围绕EMF探索(5)之深入Validation框架

阅读更多
前索引:围绕EMF探索(1)之存储和查询
前索引:围绕EMF探索(2)之再探查询组件
前索引:围绕EMF探索(3)之初探OCL 
前索引:围绕EMF探索(4)之Validation组件图

围绕EMF探索(5)之深入Validation框架

       在EMF的eCore框架中,本身提供了对Validation Framework的支持,而EMFT的Validation组件则是在这个基础上又扩展的大量的功能。如果大家采用Validator Adaptor方式,可能会更加体会到对Evalidator的应用。
 
              但是由于EValidator是在注册过程中,是依据EPackage来匹配的,针对一个ePackage一般只能注册一个Evalidator对象。这就限制的应用的扩展性。
EValidator.Registry.INSTANCE.put(
                            LibraryPackage.eINSTANCE, new LibraryValidator());
 
       而EMFT的Validation Framework则在这个基础之上进行了扩展,但是Validation Framework没有在EObjectValidator的基础上进行扩展,而是另辟蹊径,构造了自己的一套实现构架,甚至完全抛弃了EMF eCore所提供的DiagnosticChain机制,而是采用eclipse runtime IStatus对象来记录校验的结果。
 
       为了便于理解,绘制了一张EMFT Validation Framework的主要构思图:
 
       整个EMFT Validation Framework的核心就是两个概念:IValidator和Constraint。其中IValidator是有别于EMF eCore的EValidator。IValidator是一个验证执行器,为了支持对Batch和Live两种模式的支持,所以有不同的接口和实现类。Batch模式就是可以对批量对象进行验证,而Live模式则可以在对象值变更的时候相应验证。
       IValidator执行器会从Validation Service模块中获取所匹配的Constraint进行验证,当然,为了优化和便于管理,Validation Framework还提供了对Context、Binding、ProviderOperation等方面的支持。不论如何,最终的解决目的就是为了找出合适的Constraint进行验证。
       有关Constraint的代码,几乎占据了Validation Framework代码量的大部分,其实解决的目的就是为了可以方面的支持多种Constraint Model,目前支持三种方式:Java Code,EMF Model,以及OCL。
 
       在Validation Framework构架中,真正用于constraint validate是ImodelConstraint接口,不同的Constraint Model类型下会有不同的实现。
       因为Validation Framework这套构架依赖于在plugin.xml中公国描述和申明来注册相应的constrain实现,所以需要不同的Parser负责解析和管理。看看下面的类图,应该就比较清晰了。
 
       当然,在我们使用Validation Framework这套框架的过程中,是不会接触到 这些parser的,甚至根本不知道IModelConstraint的存在。
       比如,针对java模式,一般我们会继承一个AbstractModelConstraint类来实现。如下图所示:
 
 
       事实上,这是一个很简单的Adapter模式的应用,具体就没有必要细说了,类图已经很清晰的反映了一切。
 
 
 
分享到:
评论

相关推荐

    围绕EMF探索

    火龙果软件工程技术中心 围绕EMF探索(1)之存储 EMF(EclipseModelingFramework)的应用会越来越多,而围绕EMF的query,validate,transaction,persistency等等讲逐渐被大家使用,以及EMFeCore也有非常大的参考价值。...

    深入理解EMF&graphiti

    EMF(Eclipse Modeling Framework)和Graphiti是两个在Eclipse平台上用于建模和图形化表示的重要工具。...提供的教程资源将帮助你逐步探索和实践这两个框架的使用,从而提升你的建模和图形化编程技能。

    EMF建模框架

    ### EMF建模框架知识点详解 #### 一、EMF简介 EMF(Eclipse Modeling Framework)是Eclipse平台下的一个重要子项目,主要用于提供一种基于模型的开发方式。EMF的核心理念是支持模型驱动架构(MDA, Model Driven ...

    EMF 自学笔记5

    #### 一、EMF框架概述 EMF(Eclipse Modeling Framework)是Eclipse项目中的一个子项目,它提供了一套用于构建模型驱动的开发工具和应用程序的框架。EMF的主要目标是简化元数据驱动应用的开发过程,通过将模型与...

    org.eclipse.emf.validation-1.7.0.201306111341.jar

    Activiti2.0安装所需插件

    java EMF,图形开发框架。也可用作eclipse的插件开发

    Java EMF,全称为“Eclipse Modeling Framework”,是Java平台上的一款强大的模型驱动工程(Model Driven Engineering, MDE)框架,也是Eclipse IDE中的一个重要组成部分。EMF为开发者提供了构建和使用模型化软件的...

    org.eclipse.emf.validation_1.8.0.201405281429.jar

    实际测试,有效,实际测试,有效,

    深入浅出EMF与Graphiti

    本人自己写的,有大量的代码示例,深度讲解emf的内部机制与类库。最后使用Graphiti作为例子,完成整个emf的...内容丰富,想要深入学习emf的朋友不容错过。。另外graphiti也是制作Eclipse插件的图形化工具的不错的选择

    emf文件格式详解

    这个压缩包包含了深入理解EMF文件格式的资源,包括一份PDF文档、一个帮助文件和源代码。 **微软EMF文件格式详解.pdf**:这份文档很可能是微软官方或第三方专家提供的关于EMF格式的详细指南。通常,它会涵盖EMF的...

    emf eclipse

    【标题】"EMF Eclipse" 是一个与Eclipse集成的元建模框架,它允许开发者创建、编辑和操作复杂的模型。EMF(Eclipse Modeling Framework)是基于OMG的MOF(Meta-Object Facility)标准,为开发人员提供了一种在...

    EMF.rar_emf

    - **验证(Validation)**:通过元模型定义的约束,EMF可以进行模型的静态验证,确保模型的正确性。 - **代码生成与逆向工程(Code Generation & Reverse Engineering)**:从元模型生成Java代码,反之亦可将Java...

    emf-runtime-2.7.2

    【标题】"emf-runtime-2.7.2" 是一个与Eclipse平台相关的软件组件,专注于模型化框架(EMF)的运行时环境。这个版本号2.7.2表明这是一个更新和优化过的版本,提供了对EMF框架在Eclipse开发环境中的支持。 【描述】...

    Eclipse Modeling Framework (EMF) Developer Guide

    **EMF Framework Programmer's Guide** 部分为开发人员提供了深入理解 EMF 核心框架所需的知识。这部分涵盖了如何定义 EMF 模型、模型的实现方式以及如何使用这些模型进行数据存储和读取等内容。 - **定义 EMF 模型...

    emf教程入门和插件

    EMF(Eclipse Modeling Framework)是Eclipse基金会推出的一个开源框架,主要用于构建基于模型的软件系统。它提供了一种统一的方式来表示、存储和操作复杂的结构化数据,是面向对象建模的强大工具。本教程旨在帮助...

    微软emf文件格式详解

    ### 微软EMF文件格式详解 #### 一、引言 EMF(Enhanced MetaFile)是一种在Windows操作系统中广泛使用的高级元文件格式。它作为WMF(Windows Metafile)格式的32位增强版,旨在解决WMF在印刷行业中的一些限制。EMF...

    EMF开发过程整合资料

    EMF(Eclipse Modeling Framework)是Eclipse基金会提供的一款强大的模型化开发框架,主要用于构建基于模型的应用程序。它建立在Java平台上,为开发者提供了一种高效的方法来处理复杂的软件建模任务,支持元数据驱动...

    Eclipse开发使用GEF和EMF(IBM 红皮书)中英文对照版

    《Eclipse开发使用GEF和EMF》是IBM红皮书系列中的一部经典著作,主要探讨了如何在Eclipse环境中利用GEF(图形编辑框架)和EMF( Eclipse模型框架)进行图形化应用程序的开发。这两项技术是Eclipse平台上的核心组件,...

Global site tag (gtag.js) - Google Analytics