EMF(Eclipse Modeling Framework)建模框架能够帮助我们将模型 (UML, XSD 等 ) 转 换成为健壮且功能丰富的 Java 代码。使用 EMF 来搭建应用程序,不但能极大的提高开发效 率,而且还能利用 EMF 提供的很多特性来保证模型的健壮和完善,主要包括模型变化通知机 制,模型的持久化以及模型验证框架。本文将要介绍的 EMF Validation Framework,是 EMF 的一个重要部分,通过使用 EMF Validation Framework,我们能方便的对定义的 EMF 模型 添加验证约束,以保证模型数据遵从于用户自定义的约束。
EMF Validation Framework 提供了对 EMF eObjects 的校验框架,和 EMF EValidator API 相比
它能提供更复杂全面的验证并且易用易扩展。EMF Validation Framework 提供了灵活的 验证定义方式,支持两种验证触发机制:Batch 和 Live。它支持用 JAVA 和 OCL 语言来实 现约束,此外它还支持自定义验证时的模型扫描算法,并提供了一个 Validation Client Context 来规避不必要的验证。
EMF Validation Framework 的实现原理
在 EMF Validation Framework 框架中有几个重要的概念,这些概念构成了验证框架的基 本部分,我们在下面对其逐一介绍:
约束(constraints)
所有的约束必须实现 IModelConstraint 接口,定义了验证执行的逻辑(validate()), 并拥有一个约束描述符(一个实现 IConstraintDescriptor 接口的类),该描述符包含了这 个约束的源信息,例如,验证模式是 live 还是 batch,验证的目标对象等,图 1 可以给您 一个基本的概念。
图 1. 约束