[测试]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的部署路径中即可。
- 解析MIS管理信息系统的开发
- 高端HPC管理工具正在进驻商业数据中心
- 使IT架构真正成为保障业务可管控的平台
- [测试] 如何利用PVCS进行项目文档管理
- [测试] 用Rational Rose给XML DTD造型
- [配置]JBCMIS配置管理信息系统介绍[组图]
- [测试]软件全生命周期支撑与量化质量测评管理系统Panorama++简介[组图]
- [测试]可执行模型
- [测试]国际自控软件设计的最新趋势(I):前言及仿真校验篇[图]
- [测试]国际自控软件设计的最新趋势(II):CASE工具篇及总结[组图]
- [测试]EA与Rose UML建模工具比较
- [测试]详解 Rational ClearCase中的lost+found目录
| 登录邮箱: 密码: 自动登录 注册 |
| 验证码:
|
| 寻找产品: | |||
| 姓 名: | 电 话: | ||
| 公 司: | E-mail: | ||
| 描 述: | |||









