快速业务通道

XDE中模式驱动的设计与开发(三) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
这些方法有如下的三种:

· User:缺省值。在选择了这种参数输入方法后,意味着在应用模式时,用户必须从现有的模型中选择一个类型相符的元素来作为传递给这个参数的值。

· Generated:这个值意味着在应用模式时参数值将被自动的创建。用户只需要提供一个字符串作为生成的参数值的名字即可。

· Collection:从一个给定的元素中派生出一个值或者值集,来为目标参数赋值。这个给定的元素,被称为Collection的宿主元素(Owning Element),它可以是任何的模型元素。在指定了宿主元素的名称后,可以为其创建过滤器,来选择需要从中派生的内容,即Collection。一个简单的例子,你可以选择一个类的所有公有的属性作为一个Collection,然后将这些属性值传递给目标参数。

这些方法可以被单独的使用,也可以被组合使用来给用户提供多种选择的方法。

XDE中为某些类型的模版参数提供了一种值集的机制,来限定模版参数的取值。比如可以为Integer类型的模版参数提供一个值集,在应用模式的时候,这个模版参数的取值就只能够从给定的集合中选取。有些时候这种技巧是很有用的,可以约束用户的取值范围,不会出现不合法的结果。

4.用约束创建可选元素

XDE中可以通过约束来创建一个可选的元素。这个元素是否在模式展开的时候被生成,取决于给定约束的值:如果约束的值为true,它就会被生成;反之,就不会被生成。这种约束可以被应用到模型中任何的元素上。约束的条件,通常取决于某一元素属性的取值。比如,判断一个类的可见性是不是public什么。也可以通过AND,OR,NOT来连接单个的属性判断,来构造更为复杂的约束。

例如,下面的表达式:

Model1::Package2::Class1.Visibility = "PUBLIC"

就是一个约束,用来判断Model1::Package2::Class1的可见性(可以是PUBLIC,PRIVATE,PROTECTED或者PACKAGE)是否为PUBLIC。如果是,约束表达式返回值为true,否则,返回值为false。如果 Model1::Package2::Class1不存在,表达式指出有错误存在。

在XDE的模式定义中可以有两种约束存在:

1、 属性约束(Property constraints):是对模型元素的元模型属性的约束。上面的例子即为属性约束。

2、 关系约束(Relationship constraints):用来判断模型元素之间的特定关系。例如,两个类之间的继承关系,类和接口之间的实现关系,等等。

你可以不用去记得到底某个类型的元模型中到底有哪些属性,某两个类之间到底有哪些方法,在XDE中,有一个约束编辑器来帮助你构建约束,所有的工作只需要用鼠标选择即可。

5.Callouts

模式的Callouts用来响应一些事件,比如在应用模式之前,或者在应用模式之后,分别对应着PreApply和PostApply这两个Callouts。在发生这些事件的时候,相对应的Callout中定义的脚本被调用。

并非所有的模式都需要使用到Callouts,它只是用来对付一些用一般的模式机制难以解决的问题。Callouts 能够定义在模式或者模版参数上。 如下图:

XDE中模式驱动的设计与开发(三) - 编程入门网

在创建一个Callout的时候,通常需要使用到Javascript来进行一些处理。在XDE中,有一个全局的EAEventData对象,它提供对模式引擎以及XDE中其它部分的编程接口。但是,关于它的细节,因为文档不全,我们尚未得知,估计在以后的XDE版本中会有披露。一个简单的例子如下:

EAEventData.AddOutputMessage("Test message");

在EAEventData对象的AddOutputMessage方法可以在output视图中添加一行的字符串数据。

因为Callouts提供了对模式引擎和XDE的借口,理论上来讲,它可以来完成任何模式引擎能够完成的功能。因而它是非常强大的。但是,我们还是应当尽量的避免使用它,因为它太复杂而且具体的接口尚未被标准化。在考虑使用Callouts之前,应该先查找模式设置的其它地方,

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