一种基于 EMF 模型的在 GEF 中判断创建连接线有效性的方法
2010-04-02 00:00:00 来源:WEB开发网表1中列出了 A 和 B 之间是否允许创建连接线的真值表,可以很清楚地看出满足什么条件下 A 和 B 之间才可以建立连接线。 本文的最后给出了对连接线进行 Schema 验证的详细步骤。
表 1. 创建连接线真值表
首先建一个 ConnectionCreateCommand 类,内部创建一个成员方法 boolean validateConnection( ),该类继承了 GEF 的 Command 类。根据以上的真值表,把验证过程分为三个部分:判断 A 是否包含 B、判断 A 和 B之间是否存在连接线、判断 B 在 A 中出现的次数限制。
判断 A 是否包含 B
获取连接线两端的模型对应的Java类,即 ATypeImpl 和 BTypeImpl;
获取 ATypeImpl 类(包括其父类)的所有方法名中包含 “set” 或者 “get” 字符串的成员方法集合,并循环判断方法集合中是否含有 “void setB(B)” 或者 “EList getB( )” 方法;
如果2)中的条件成立则说明 A 包含 B,否则说明 A 不包含 B。
判断 A和 B之间是否存在连接线
在 ATypeImpl 中调用 getSourceConn( ) 方法返回一个从 A 出发的连接线的集合;
获取该集合中的每个元素(连接线),判断其目的端对应类的名称是否为 BTypeImpl;
如果2)中的条件成立则说明 A 和 B 之间已经存在连接线,否则说明不存在连接线。
判断 B在 A中出现的次数限制
同 “判断 A是否包含 B” 中的一样,获取 ATypeImpl 类(包括其父类)的所有方法名中包含 “set” 或者 “get” 字符串的成员方法集合;
循环判断方法集合中是否含有 “void setB(B)” 或者 “EList getB( )” 方法;
如果含有 “void setB(B)” 方法,说明 B 在 A 中最多出现一次;
如果含有 “EList getB( )” 方法,说明 B 在 A 中可以出现多次。
由以上三个判断,并且参照表1,可以确定 A 和 B 之间是否可以创建连接线,即确定validateConnection( ) 方法的返回值。 在 ConnectionCreateCommand 的回调函数 execute( ) 中判断 validateConnection( ) 方法的返回值,如果为 false 的话,则不创建该连接线;反之如果为 true 的话,则创建该连接线,并且
在 ATypeImpl 中调用 getSourceConn( ) 方法返回一个从 A 出发的连接线的集合,然后向该集合中添加一个刚才创建的连接线;
在 BTypeImpl 中调用 getTargetConn( ) 方法返回一个目的点是 B 的连接线的集合,然后向该集合中添加一个刚才创建的连接线。
这样整个验证过程就结束了,保证了后台生成的 XML 文件的规范性。
结束语
本文在 GEF 和 EMF 来进行建模和图形化开发的基础上,提出了对创建的连接线有效性验证的方法。将其用于业务流程设计中能提高规范化设计的效率。 由于本文中所讨论的模型都是由 EMF 导入的,具体的验证方法也都是依赖于 EMF 生成的 Java 代码的特定格式,因此如果模型对应的 Java 代码采用其它的格式时,该验证方法就不能适用。如何提出一种通用的连接线验证机制有待于更进一步的研究。
- ››基于IP地址的vsftp服务器
- ››基于MySQL 水平分区的优化示例
- ››基于CentOS5的Linux下pptp和openvpn的搭建及配置
- ››基于JavaScript的网页版塔防游戏
- ››基于Android平台 QQ大战360手机游戏爆红
- ››基于Windows Azure的云计算应用设计
- ››基于AES算法实现对数据的加密
- ››基于SoPC目标板Flash编程设计的创建及应用
- ››基于SolidWarks齿轮机构的运动分析与仿真
- ››基于Windwos Server 2008故障转移群
- ››基于JavaScript的REST客户端框架
- ››基于JavaScript和CSS的Web图表框架横向对比
更多精彩
赞助商链接