Model to Text工具Acceleo使用教程(三)——一個簡單的代碼生成模塊


  前面對Acceleo的知識背景和基本架構進行了講解,接下來就將開始模型到代碼的生成了。本講將逐步講解一個簡單的代碼生成模塊(UML to Html)。Acceleo的代碼生成是基於模板的,所以有了輸入模型(如UML)后,需要建立對應模型的模板,然后生成代碼。原理如圖1所示。

圖1 基於模板的Acceleo

1、新建項目

  首先,切換到Acceleo視圖,新建generator project。此處,我們可以命名為“acceleo.uml2.gen.xhtml”。接下來,我們需要輸入模型。

2、建立模型

  目前,可用的建模工具有很多,Acceleo提供了很好的機制來兼容這些不同的建模工具,可以兼容ArgoUML, Poseidon, Umbrello or Rational Rose等。更多兼容工具請參考點擊此處

  此處,我們暫時用Topcased新建了一個UML2模型,可以點擊下載WebLog_fr.uml

  注意:Acceleo也兼容UML1.3/1.4,用戶可以通過Acceleo-->Convert EMF轉為將其轉換為UML2。

3、建立模板

  有了模型之后,我們就需要建立模板來將模型轉換成代碼了。通過 Empty Generator新建空的模板。

  因為我們的源模型是UML2,所以我們在Registry values選擇UML2的URI(統一資源標識符),假設此處我們想要為每個class生成一個文件,需要在type values選擇uml.class。完成后就生成了一個空的模板,如圖2所示。

圖2 空的UMl2模板

4、生成代碼

  在生成代碼之前,先介紹acceleo的一種特殊的編輯器 reflective editor,它提供了一種模型的樹狀結構視圖,並集成了Acceleo的幾乎所有功能。我們將在此編輯器下將UML2模型生成HTML。在acceleo中,可以通過 Open As->Acceleo XMI打開此編輯器。

  接下來比較重要的一步,就是將模型與模板綁定,即指定模型用哪個模板。在reflective editor下,任意選擇一個目標結點,通過Acceleo -> Select Template為此模型結點指定模板,當指定成功后,在outline視圖中,相應結點(如此處的class)會變成帶右箭頭的圖標,如圖3所示。圖3表示class的模板綁定成功,可以將class生成代碼。

圖3 模板綁定成功后,相關結點圖標變成箭頭

  當然,前面我們建立的模板是空的,所以class生成的代碼也是空的。所以需要將模板寫全,圖4是寫全后的模板,可以點擊此處下載sample template from UML2 to XHTML。關於的模板的更多語法,大家可以參考documentation section 和 sample generator modules

圖4 UML to HTML的模板

  當模板寫全並保存后,通過Acceleo -> Reload Template 更新模板。如此反復,直到模板能夠滿足自己的要求。

  最后也就是最重要的一步,就是生成代碼了。通過Acceleo -> Generate files可以將代碼生成到文件中(此處,我們設置文件保存在doc文件夾下)。我們可以看到,acceleo為每個class生成了一個文件,如圖5所示。

圖5 class模板生成的html代碼

5、批量代碼生成

  上面完成了單個模板到代碼的生成,如果模型很多呢?不用擔心,acceleo提供了批量生成的功能,即鏈文件(chain files)。

  • 新建項目:New -> Project -> Simple -> Simple Project
  • 新建鏈:New -> Chain
  • 定制元模型,如第3步所示。
  • 選擇鏈的模型、模板和名字。
  • 在新建的.chain文件下,右擊執行Launch,文件即自動生成了。

6、總結

  本講從一個簡單的代碼生成器(UML to HTML)開始,介紹了其使用流程,並講了批量模型生成的情況,下一講我們開始介紹acceleo模板的語法,以便大家設計自己需要的模板。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM