<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    MDA之路

    MDA,UML,XML,Eclipse及Java相關的Blog
    posts - 53, comments - 494, trackbacks - 0, articles - 2
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    MTF(Model Transformation Framework),一日散記

    Posted on 2005-04-07 00:41 wxb_nudt 閱讀(1494) 評論(4)  編輯  收藏 所屬分類: 技術雜談

    一日散記:

    BLOG竟然壞了一天,補貼昨天的。

    上午

    OCL的研究終于告一段落,至于建立一個用OCL約束的UML工程的完整例子,要等輔導的那個學生學完OCL再進行。因此今天馬上投入模型轉換的研究。模型轉換的偽代碼看得多了,始終沒有試過一個可以run的工具,那么就從MTFModel Transformation Framework)開始吧,畢竟是IBM開發的,實力強大。況且阿飛說還不錯的。

    找到早早就保存的那個MTF主頁,http://www.alphaworks.ibm.com/tech/mtf,進入先看了一下介紹:

    What is the Model Transformation Framework?

    The Model Transformation Framework (MTF) is a set of tools that helps developers make comparisons, check consistency, and implement transformations between Eclipse Modeling Framework (EMF) models. The framework also supports persistence of a record of what was mapped to what by the transformation; this record can be used to support round-tripping, reconciliation of changes, or display of the results to a user.

     How does it work?

    The framework consists of the following:

    • a language for defining mappings between EMF models
    • a transformation engine capable of interpreting mapping definitions in order to check or enforce consistency between models
    • editor and debugger for mapping definitions
    • support for generating text documents from EMF models using templates.

    感覺還不錯的,雖然MTF主要是基于EMF做模型轉換,不過EMF作為目前最著名的開源平臺Eclipse的模型框架,前途也是不可限量。下載前要先登陸IBM國際網站,沒有ID的必須注冊一個,IBMID很奇怪,必須是電子郵件格式的,仔細看了說明才注冊成功。MTF不大,才1M多,一會就下載完了。

    安裝也很順手,就是一個典型的Eclipse插件。注意目前MTF1.0版本,需要Eclipse3.0或者3.0.1版本,以及EMF2.0XSD2.0,再加上EclipseUML2.0版本。不過這些東正好我都已經安裝好了。于是不到2分鐘順利搞定。

    到處找Readme,在MTF的主目錄下面就有一個,介紹了例子程序在哪兒。但是每個例子怎么run就包含在規則文件里面。MTF的主要代碼(轉換規則)存放在rdl文件(Rule Definition Language)里面。同時每個rdl文件里面有配置運行和代碼解釋。于是建立了一個EMF工程(java工程也行吧),importsample1.rdl,看了里面的說明,然后配置,run!

    未命名.JPG嗯,馬上一個模型就被轉換(創造?)出來了,可以用EclipseUML顯示出來。Rdl文件如下:

    import ecore "http://www.eclipse.org/emf/2002/Ecore"

    import emf "http:///com/ibm/mtf/model/emf.ecore"

    import ws "http:///com/ibm/mtf/model/workspace.ecore"

    // entry rule

    relate sample1(ws:IFile file)

    {

        createTopPackage [1] (match over file.resource.contents, "Sample1")

    }

     

     

    relate createTopPackage(ecore:EPackage pkg, ecore:EString name)

    {

        equals(pkg.name, name),

        createPackage [1] (match over pkg.eSubpackages, "SubPackage1"),

        createPackage [1] (match over pkg.eSubpackages, "SubPackage2"),

        createPackage [1] (match over pkg.eSubpackages, "SubPackage3"),

        createClass [1] (match over pkg.eClassifiers, "Sample1_class"),

        createDataType [1] (match over pkg.eClassifiers, "Sample1_datatype"),

        createEnum[1] (match over pkg.eClassifiers, "Sample1_enum"),

        createClassWithSuper [1] (match over pkg.eClassifiers, "Sample1_class2","Sample1_class")

    }

     

    relate createPackage(ecore:EPackage pkg, ecore:EString name)

         when equals( pkg.name, name)

     

    relate createClass(ecore:EClass class, ecore:EString name)

         when equals( class.name, name)

     

    relate createDataType(ecore:EDataType type, ecore:EString name)

         when equals( type.name, name)

         

    relate createEnum(ecore:EEnum enum, ecore:EString name)

         when equals( enum.name, name)

     

    relate createClassWithSuper (ecore:EClass class, ecore:EString name, ecore:EString superName)

         when equals( class.name, name)

    {

        ref createClass(match over class.eSuperTypes, superName) 

    }

    簡單來說,就是從“字符串”模型到ECORE模型的轉換,其實質是用字符串規定模型包、類等等的名字,然后生成一個Ecore模型!在接下來的sample2里面定義了一個簡單的轉換規則,將這個生成的模型轉換為另一個Ecore模型,其轉換規則如下:

    relate sample2(ws:IFile file1, ws:IFile file2)

    {

        mapPackages(over file1.resource.contents, over file2.resource.contents)

    }

    relate mapPackages(ecore:EPackage pkg1, ecore:EPackage pkg2 )

    {

        equals(pkg1.name, pkg2.name ),

        ordered mapPackages( over pkg1.eSubpackages, over pkg2.eSubpackages)

    }

    去掉了import部分。這個規則的含義是,將源模型EPackage轉換為目標模型中的EPackage,其他元素不管,轉換約束是源模型包的名稱要等于目標模型包的名稱。

    盡管理解不難(剛剛看過OCL嘛,哈哈),但是關鍵字還是很讓人模糊的。于是打開MTFUserGuide(兩個地方都有,pdf格式的在MTF的安裝目錄中;幫助文檔格式的已經集成到Eclipse的幫助文檔中了),開始研讀。

    下午

    中午草草一飽,便回來午睡,午睡是一個很好的習慣,一個小時的午睡足夠保證整個下午和晚上的精神狀態良好。

    再來看MTFUserGuide,說實話,這個UserGuide寫得并不好,因為它沒有指導用戶如何開始一個簡單的例子,然后由淺入深的講解。即使這些內容已經包含在rdl文件中,也應該花一章來寫一下嘛。不過它還是從整個系統的概念入手,慢慢引入各種關鍵字的用法,以及MTF中的各種概念。熟悉模型轉換技術的人已經很容易看懂吧。UserGuide不長,36頁,不過看長了也有點頭暈目眩了。

    陰天,還有會,每周二的定時籃球活動算是完蛋了。郁悶中去吃了晚飯。

    晚上

    晚上打開Gmail開始看信,Penggu在米國也和我一樣郁悶啊,都是PhD,都是那么難。兩年了一篇paper都沒有,慘!

    無意中找到了penggu的主頁,發現了一個鏈接,如獲至寶,呵呵http://www-2.cs.cmu.edu/afs/cs.cmu.edu/user/mleone/web/how-to.html。

    這是一個Advice on Research and Writing的站點,集合了很多著名的對于computer scienceadvice,特別是第一篇文章“How to Organize your Thesis”,被翻譯成多國文字,我很感激的看到有人把它翻譯為簡體中文。

    然后就接到了wife的電話,唉。兒女情長,英雄氣短。老老實實接受wife的教育改造,好好學習、天天向上、愛護老婆、尊敬師長。


    評論

    # re: 一日散記  回復  更多評論   

    2005-04-07 08:33 by dudu
    非常抱歉!服務器故障給您帶來不便, 請諒解!

    # re: MTF(Model Transformation Framework),一日散記  回復  更多評論   

    2005-04-07 14:38 by 八進制
    現在有沒有mtf的實際應用,比如是否可以把ecore模型對應到一個數據庫模式?
    您的文章對我很有用,只是我在瀏覽器里有很多字看不到,只能靠猜的。比如“模型轉換的研究”我就只能看到“模型 的研究”,是不是因為從word里貼過來的緣故?

    # re: MTF(Model Transformation Framework),一日散記  回復  更多評論   

    2005-04-07 15:08 by wxb_nudt
    1.MTF我也是剛剛接觸了兩天,實際應用我還沒有搜集資料。
    2.MTF的轉換目前僅限于ECORE,UML,XML,XMI之間的轉換。不過它是可以擴展的,轉換到數據庫模式應該是可行的。
    3.可能你的瀏覽器不是Windows下面的,所以看我的文檔有問題。我是用WORD編輯,然后生成Web文檔,再貼過來的。
    4.MTF我會繼續學習,告一段落時會再寫相關文檔。另外,最近還準備看看Kent大學開發的KMF(Kent Model Framework),全面支持OCL,也是基于Ecilpse和EMF做的。

    # re: MTF(Model Transformation Framework),一日散記  回復  更多評論   

    2007-09-12 14:44 by mtf
    正在搜uml2和ecore的轉換,看到你的文章,很有幫助,剛剛下了MTF,非常感謝!^_^
    主站蜘蛛池模板: 亚洲丁香婷婷综合久久| 日韩一区二区在线免费观看| 在线91精品亚洲网站精品成人| 亚洲国产成人久久精品动漫| 国产一区在线观看免费| 在线观看无码AV网站永久免费| 在线看片免费人成视频播| 日韩a毛片免费观看| 亚洲色偷偷色噜噜狠狠99网| 麻豆亚洲av熟女国产一区二| 亚洲精品国精品久久99热一| 免费在线观看视频a| 免费网站看v片在线香蕉| 99视频全部免费精品全部四虎| 亚洲免费人成在线视频观看| 一区二区三区在线免费 | 久久精品中文字幕免费| 国产精品综合专区中文字幕免费播放 | 久久综合亚洲鲁鲁五月天| 亚洲综合色成在线播放| 亚洲电影日韩精品| 全黄性性激高免费视频| 日产乱码一卡二卡三免费| 午夜成人免费视频| 午夜免费不卡毛片完整版| 毛片基地免费观看| 成人片黄网站A毛片免费| 在线观看免费人成视频色| 日韩在线免费视频| 免费看美女裸露无档网站| 美女视频黄免费亚洲| 国产精品入口麻豆免费观看| 日本人的色道免费网站| 国产又大又粗又长免费视频 | 国内精品久久久久影院亚洲| 亚洲另类小说图片| 日韩亚洲人成在线| 亚洲youwu永久无码精品| 国产亚洲精品成人久久网站| 羞羞视频网站免费入口| eeuss在线兵区免费观看|