快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
ot;, "Validation Failed",  results);   }

实时验证模式则用来实时地对对象内的属性(值)变更进行校验。和批量验证模式不同的 是,它的输入是属性(值)变更的通知消息,清单 2 就是实时验证模式的代码示例。

清单 2. 实时验证模式的代码示例

List notifications = transaction.getChanges();   IValidator validator = ModelValidationService.getInstance().   newValidator(EvaluationMode.LIVE);   IStatus results = validator.validate(notifications);   if (!results.isOK()) {    ErrorDialog.openError(null, "Validation", "Validation Failed",  results);   }

约束绑定(Constraint Binding)

定义了这么多的约束,具体的应用又是如何选择约束来完成任务呢?约束绑定就是设计来 完成这个任务的 ,通过 org.eclipse.emf.validation.constraintBindings扩展点,应用可 以明确出它拥有的对象,绑定到它所需要的约束。这样验证操作就能够确保对象符合了相应 的约束了。在下面的章节将会详细介绍如何进行约束绑定。

使用 EMF Validation Framework 来“保护”library 模型

EMF Validation 是一个非常容易使用的框架,本节将通过一个简单的例子来说明如何使 用 EMF Validation Framework 来保护您的模型。简单起见,我们使用 Java 编程语言来定 义模型约束。

第一步 准备 Library 模型

为了容易理解,我们就使用 EMF 相关文章中最常见的 Library 样例作为被保护的模型, 如图 3 所示,Library 模型很简单,仅仅包含三个类:Library, Writer, Book,以及一个 BookCategory 枚举类型。

图 3. Library 模型

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

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

我们在 Eclipse 中创建一个 Java 项目,在"New Java Project"向导中,将工程的名称 设置为 test.emf.validation,并选择分离源代码目录和输出目录。在新建好的 test.emf.validation 项目中建立一个新的 model 目录,并将 library.ecore 文件保存到 这个目录中。

为了生成模型的 Java 实现,我们首先需要利用 EMF 提供的向导将 .ecore 模型转化为 .genmodel 模型。这可以通过如图 4 所示的"New EMF Generator Model"向导来进行。

图 4. 使用新建向导生成 Library.genmodel 模型

我们将 Library.genmodel 生成到 model 目录下,并双击其进行编辑。如图 5 所示,在 .genmodel 的编辑器中,我们选择 Library 包,并修改其"Base Package"属性为 emf.model 。这个属性会影响生成的 Java 代码的包名称。

图 5. 修改 Library 模型的 Base Package 属性

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

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

接下来,我们就可以生成 Library 模型的 Java 实现了。如图 6 所示,在 Library 包 上单击右键,并在弹出菜单中选择 Generate Model Code 项,在 test.emf.validation 项 目中生成 Library 的 Java 实现。

图 6. 生成 Library 模型的 Java 实现

同样地,选择 Generate Edit Code 菜单项和 Generate Editor Code 菜单项可以生成 Library 模型的编辑器代码。在进行完迄今为止的这些步骤之后,我们可以开始编写代码来 利用 EMF Validation Framework“保护”Library 模型了。

第二步 定义 batch constraint

前面提到过,用 JAVA 实现的约束都需要扩展 AbstractModelConstrain,实现 validate() 方法。在清单 3 的代码中,我们定义了一个 constraint 用来验证图书馆,书 籍,作者三者的名字都不能为空,这个方法通过输入的验证上下文(IValidationContext) 获取目标对象,

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号