• 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模板的语法,以便大家设计自己需要的模板。

     

     

     

  • 相关阅读:
    sharepoint JQ获取List列表的值
    微信修改域名回掉
    input设置只读
    MVC-AJAX-JSON
    sharepoint添加子网站
    sharepoint打开解决方案库
    前台获取参数值
    SQL查看表结构以及表说明
    JQ获取对象属性值
    bootstrap table样式
  • 原文地址:https://www.cnblogs.com/jpcflyer/p/2512036.html
Copyright © 2020-2023  润新知