快速业务通道

使用EMF Validation框架来验证EMF模型 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
ption>          <message>         The required feature ‘ name ’ of ‘ {} ’ must be  set.          </message>          <target class="Library"/>          <target class="Writer"/>          <target class="Book"/>        </constraint>       </constraints>     </constraintProvider>    </extension>

第四步 将定义好的 Constraint 绑定到应用程序

到目前为止,我们已经定义了一个约束并且将它注册到验证服务。接下来我们需要把这个 约束绑定到应用程序,让应用程序知道它的存在。清单 5 介绍了如何通过定义一个 constraintBindings 的扩展点来实现。

清单 5. 定义一个 constraintBindings 的扩展点

<extension       point="org.eclipse.emf.validation.constraintBindings">      <clientContext        default="false"        id="emf.validation.example.libraryContext">      <selector  class="emf.model.library.validation.constraints.ValidationDelegateClientSelector" />      </clientContext>      <binding        context="emf.validation.example.libraryContext"        category="emf.validation.example.library"/>    </extension>

可以看到,在进行约束绑定时我们首先要定义一个客户端上下文(client context),这 通过定义一个对象选择器(IClientSelector)来限定上下文所包含的模型对象集合。接下来 再定义用来检查这些模型对象数据的约束,也就是我们在前面所定义的用来检查图书馆对象 名称是否为空的约束。

使用EMF Validation框架来验证EMF模型(7)

时间:2011-04-23 IBM 仇璐 杨晓峰

第五步 通过 validation service 来调用 batch constraint

完成上面这些步骤后,我们可以通过验证服务来调用约束对模型进行验证,见清单 6 的 代码。

清单 6. 调用约束对模型进行验证

IBatchValidator validator = (IBatchValidator) ModelValidationService.getInstance()   .newValidator(EvaluationMode.BATCH);   validator.setIncludeLiveConstraints(true);   IStatus status = validator.validate(selectedEObjects);

第六步 运行前面创建的 constraint

在 Eclipse 中点击 Run->Run.., 在弹出的窗口中创建并运行一个 Eclipse Application。在新的工作平台中新建一个项目,然后通过如图 7 所示的“New Library Model”向导创建一个图书馆模型。

图 7. 创建模型项目

使用EMF Validation框架来验证EMF模型(8)

时间:2011-04-23 IBM 仇璐 杨晓峰

为了验证之前定义的约束是否生效,创建如图 8 所示的图书馆模型,可以看到该模型只 定义了一个没有名称的图书馆对象:

图 8. 图书馆模型

如图 9 所示,选中 library 对象,点击右键,选择 validate 菜单项。

图 9. validate 操作

使用EMF Validation框架来验证EMF模型(9)

时间:2011-04-23 IBM 仇璐 杨晓峰

如图 10 所示,一个验证失败的警告框弹出,点击 Details,可以看到验证失败的原因是 图书馆的名字属性没有设置。

图 10. 验证结构提示

第七步 把 batch constraint 转变成 live constraint

我们可以把之前定义的 batch constraint 修改成 live constraint,这样当模型指定的 属性(值)发生变化时验证服务会收到相

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号