AndroMDA:概貌和工作原理

AndroMDA:概貌和工作原理

当你使用CASE工具画出包,类,属性,方法和关系时,AndroMDA的“概貌”就形成了。然后,你把模型保存为XMI格式,并用AndroMDA和XDoclet产生整个组件模型的Java源代码。AndroMDA和XDoclet都可以和著名的构建工具Ant进行集成。你通常会使用Ant的命令行版本,但也可以在IDE如Eclipse或JBuilder中使用Ant。无论是哪一种方式,你都要使用自己定制的Ant构建脚本,并在脚本中把AndroMDA定义为其中的一个Task。 在CASE工具中用UML建模 你可以使用UML的图形符号为现实世界中的事物建模。例如,考虑一个汽车租赁系统,用于管理客户,司机,汽车和租赁合同。这个系统UML模型的类图可能是如下的样子:


    将模型保存为XMI格式。某些CASE工具把这称为“export”,用于区别它本身私有的格式。 代码生成器 从XMI模型中产生代码,Ant构建脚本经过以下的步骤:

  • Ant Task读入XMI格式的UML模型,并在内存中生成抽象的语法树(abstract syntax tree),其中包含包,类,属性,方法和关系的信息。
  • 然后,使用Velocity模板处理引擎来处理entity bean,session bean,Hibernate类或别的代码生成模板,所有的模板都基于从CASE工具中产生的抽象语法树。它使用一个脚本helper facade来屏蔽UML元模型的复杂性,因此模板的开发者可以使用容易理解的API来为脚本写代码。这些步骤会产生一些源代码文件。
  • 最后,Ant脚本调用XDoclet中的<ejbDoclet>或<hibernateDoclet> Task。对于EJB,XDoclet task读入所有的bean类信息并生成bean的接口和部署配置文件。对于Hibernate,XDoclet生成包含持久层映射信息的XML文件。

    使用Cartridges定制输出 到此为止,你可能以为AndroMDA是一个EJB或Hibernate JavaBean的生成器。其实,AndorMDA可以生成任何东西! 事实上,AndroMDA对于它生成的东西一无所知。它拥有一个称为“cartridges”的可插入模块。一个Cartridge由一套定义生成格式的模板文件组成。目前,AndroMDA包括四个cartridge:

  • andromda-java - 生成一般的Java源代码。
  • andromda-ejb - 生成EJB。
  • andromda-hibernate - 生成Hibernate ORM工具的持久层类。
  • andromda-struts - 生成Jakarta Struts的web页面,form bean和action类。

    你可以选择使用哪一个cartridge来产生你的应用框架。你也可以编写你自己的cartridge - 一旦你理解了cartridge的基础知识及其XML描述文件,编写一个新的cartridge非常容易! AndroMDA核心自动检测安装在类路径下的cartridge。如需要了解更多cartridge的信息,请参见本网站的其他文档。 EJB Cartridge生成代码的例子 从上面汽车租赁系统模型的客户模型部分,AndroMDA(使用andromda-ejb)和XDoclet将为你产生下面的代码。Bean类使用 标记,其他类使用 标记。你可以点击文件名查看文件的内容。

Customer.java Local interface
CustomerBean.java Bean class
CustomerBeanCMP.java Container-managed persistent attributes
CustomerBeanImpl.java Implementation class
CustomerData.java Value object class
CustomerLocalHome.java Local home interface
CustomerUtil.java Utility class to find home interfaces
CustomerService.java Remote interface
CustomerServiceBean.java Bean class
CustomerServiceBeanImpl.java Implementation class
CustomerServiceHome.java Home interface
CustomerServiceUtil.java Utility class to find home interfaces
Driver.java Local interface
DriverBean.java Bean class
DriverBeanCMP.java Container-managed persistent attributes
DriverBeanImpl.java Implementation class
DriverData.java Value object class
DriverLocalHome.java Local home interface
DriverUtil.java Utility class to find home interfaces

    编写业务方法 你可能知道,使用代码生成器并没有完成了所有的工作。编写Bean的主体即业务逻辑是留给你的工作。AndroMDA为你构建了一个应用框架,你需要往里面填充代码。这些所谓的“implementation classes”来自bean类,是类继承结构树上的叶子。AndroMDA一次性地产生这些代码并不再修改它们。这能够确保手工编写的代码不被代码生成器覆盖。 因此,在实现类中实现你的业务方法,并启动Ant构建脚本用于编译Java文件的其他task,并把编译好的class文件打包到一个ejb-jar文件中。jar文件当然也包含了生成的部署配置文件。 最后的工作 最后的工作当然是发布到应用服务器上。以JBoss为例,只需简单地将jar文件复制到JBoss的部署路径中即可。

你可能感兴趣的:(AndroMDA:概貌和工作原理)