xiaoxiaoleemin

天道酬勤,小小加油
posts - 19, comments - 12, trackbacks - 0, articles - 0

GMF:基于Reference的连接

Posted on 2007-05-06 23:15 xiaoxiaoleemin 阅读(1180) 评论(4)  编辑  收藏 所属分类: GMF
    GMF中的Link有两个,分别是基于Type的和基于Reference的。对于前者,在ecore模型中有一个类对应这个连接,创建一个连接即创建了该类的一个实例,试想,如果一个模型比较复杂,有很多连接时,这种方法要在模型中要为连接建立很多与业务无关的类,使得模型非常复杂;对于后者,没有必要为每个连接在ecore中建立一个类,而是设置该连接对应的Reference即可。下面用一个school的模型来说明基于Reference的连接的建立方法,这个模型非常简单,如下图(用gmf插件生成的对应school.ecore的school.ecore_diagram):一个学校里边有很多老师和学生,每个老师会指导多个学生,这里的指导关系是Teacher类的一个Reference,名字为tutoringStudents,我们打算在GMF编辑器中用Node来表示老师和学生,老师对学生的指导关系用Link来表示。

    该模型命名为school.ecore, 然后生成school.genmodel,再按照常规方法建立school.gmfgraph, school.gmftool.
    最后建立最关键的school.gmfmap,首先为mapping元素建立两个Top Node Reference,分别对应Teacher和School,然后建立代表老师指导学生关系的link mapping,其属性页中各项按照下图指定值:
   
    注意,Domain meta information中前三项都空着,只在最后一项中指定代表该连接的Reference即可。Validate无错后,生成school.gmfgen,在生成Diagram code,最后运行效果图如下:

      看一下保存semantic model的school文件: 
<?xml version="1.0" encoding="UTF-8"?>
<School:School xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:School="http://example.School">
  
<teachers name="ProfessorLi" tutoringStudents="//@students.0 //@students.1"/>
  
<students name="Tom"/>
  
<students name="Mary"/>
</School:School>

   

Feedback

# re: GMF:基于Reference的连接  回复  更多评论   

2007-05-13 19:18 by zhanglei
谢谢lz的讲解~~
我也正在学习GMF
现在做了一个UML时序图的GMF应用

欢迎交流~~ 一起学习GMF

zhanglei07@sei.pku.edu.cn

# re: GMF:基于Reference的连接[未登录]  回复  更多评论   

2007-05-15 14:10 by xiaoxiaoleemin
呵呵,四楼的

# re: GMF:基于Reference的连接  回复  更多评论   

2008-04-18 15:21 by start
如果节点有3个以上,怎么可以创建一个连接可以连接他们中的任意两个呢?

# re: GMF:基于Reference的连接  回复  更多评论   

2010-04-08 10:28 by 徐栋
请问怎样用gmf做一个时序图啊,我现在做出一个类似的,但是生命线是斜的,怎样能做成垂直的呢?@zhanglei

只有注册用户登录后才能发表评论。


网站导航: