xiaoxiaoleemin

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

          GMF:基于Reference的連接

          Posted on 2007-05-06 23:15 xiaoxiaoleemin 閱讀(1203) 評論(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
          主站蜘蛛池模板: 营口市| 乌苏市| 康保县| 广安市| 筠连县| 习水县| 贺州市| 方山县| 孟州市| 墨脱县| 姜堰市| 阳信县| 甘肃省| 青海省| 龙江县| 和龙市| 大姚县| 呼和浩特市| 渝北区| 惠东县| 荆州市| 抚顺县| 五常市| 墨江| 绥阳县| 武鸣县| 呼玛县| 循化| 巫溪县| 敦化市| 兰州市| 富锦市| 昌都县| 新民市| 东莞市| 图木舒克市| 重庆市| 福泉市| 乳源| 龙江县| 西峡县|