当前页面: 开发资料首页 → Eclipse 专题 → 应用 RSA 实现 EMF 的开发
摘要: 开发EMF模型仅限于XML Schema、IBM Rational Rose、Java source或者EMF Ecore。IBM Rational Software Architect(RSA)使许多应用程序开发任务能够在与其他商业应用程序开发工具的协调中充分享受到UML模型的好处。RSA和EMF的结合将给商业性的或者开放源代码的开发者提供一个强有力的工具。
导言
本文探讨运用IBM? Rational? Software Architect(RSA)来开发一种可以被转换为Eclipse Modeling Framework(EMF)模型的模型。为什么您想要这样做呢?因为EMF为我们提供了许多有用的特性,其中包括:
于是您会问:“我为什么想要这些东西?”。因为由于RSA模型和EMF的结合,您能够方便快捷的创建一个数据模型并对其加以编辑。
在RSA中创建与平台无关的模型(PIMs)使您可以自由地将这些模型设定为特定平台的模型(PSMs)。这种重新定位目标可以通过应用UML概要文件和其他特定运行时的元数据更新发生在模型转换的过程中。这些模型同样可以被导出到其它格式以便别的应用程序使用,比如EMF和UML2。
这些转换不仅仅局限于RSA;它们同样可以发生在IBM? Rational? Software Modeler(RSM)中。如果您想获取RSA和RSM方面的更多信息,以及它们之间的不同之处,可以参阅资源部分。
思考RSA模型
RSA一瞥
RSA是一种综合性的设计和开发工具,它利用UML的模型驱动开发(MDD)来帮助您创建优良结构的应用程序和服务。请您参阅资源部分来了解关于RSA的产品简介和指南。
本文仅关注类图以及相关联的模型元素(类、包、关联、属性和枚举)。
一个简单的图书馆模型
这个简单的模型是基于EMF 指南中的IBM? Rational Rose?模型,并已经在RSA中被重新创建。它包含三个彼此间相互关联的类。图书馆既包含作者也包含图书,就像图1中显示的那样。正如您所期盼的,每本书拥有一个作者并且每位作者拥有一部书。“图书”这个类拥有一项枚举类型的属性。 请访问developerWorks RSA 专题。 在高层次上和与您将要创建的EMF模型的比较中来理解此模型时非常重要的。 创建EMF模型的可选方案
当您使用RSA模型化您的数据模型和应用程序时,必须先来看一下EMF为创建一个用于产生代码的EMF模型所提供的工具。EMF以XML Schema、Rational Rose、EMF Ecore和带注解的Java?为它的生成器模型提供了输入源,也就是我们所知道的 从RSA模型到EMF Core(Ecore)模型
RSA和EMF都提供一种表示模型的机制。RSA模型是基于UML2标准的,这种模型不仅可以建模一个系统的静态数据模型,而且还可以对行为进行建模。EMF的模型更多的是关注于数据模型,以及一个用于操作处理和访问的API。 从RSA到Ecore的转换是创建一个EMF模型的最佳途径,因为可以从“EMF模型和项目创建”向导中直接使用它。 对于一个RSA模型,您只需要点击File->Export然后选择Ecore Model选项,就像图2中所示的那样。 Ecore模型将包含两个Library包。这是因为RSA顶层 从RSA模型到UML2模型
RSA的模型是一种对UML2标准模型的私有扩展(请参阅资源部分来获得更多关于UML2标准和Eclipse子项目的信息)。RSA包含一个内置的导出功能来完成从一个RSA模型到一个标准的UML2模型的转换。这一转换过程能够被用来开发EMF模型,但这种做法并不理想,因为它需要一个从UML2到Ecore的额外转换过程。只有在此之后Ecore模型才能被用来创建一个EMF模型。 将一个RSA模型转换到一个UML2模型,点击File->Export然后选择UML2 Model选项,就像图3中所示的那样。 创建EMF模型
为了开发利用EMF,就需要创建一个EMF发生器模型,就是我们所知道的 从Ecore创建一个新的EMF模型
利用一个标准的Ecore模型,您希望创建一个完全的EMF模型,以便在运用EMF的开发过程中充分利用它。 要创建一个完全的EMF模型,你可以使用所提供的EMF向导。首先点击File->New->Other,然后打开选项Eclipse Modeling Framework选择EMF模型向导。点击Next来继续该向导,就像图4所示的那样。 输入一个名称来生成模型文件——例如,Library.genmodel——然后点击Next。就像图5所示的那样,选择load from an EMF core model,因为您已经在先前的RSA中创建了这些,点击Next。 在利用适当的Browse按钮之前,定位从RSA中导出的Ecore文件。点击Next就像图6中所示的那样。 最后选择“Library ”包,然后点击Finish退出向导。 现在,您将得到一个按照您所制定的要求而创建的 Library.genmodel 文件。 观察新的EMF模型
现在您已经创建了 Library EMF模型,在它们的编辑器中打开新的资源来观察结果。从中可以打开元素并检查它们的属性,就像图7中所示的那样。 现在此模型已经被转换到EMF模型,EMF可以在这个模型中被充分利用。请参见资源部分来获得关于EMF的更多的特性。 总结
RSA和EMF在应用程序开发周期中都有着特定的用途,目的就是使您能够容易的跨工具使用。当工作在复杂的模型中时,使用RSA来开发模型就变得非常理想。RSA能够提供可视化的UML建模,利用概要文件使之适应UML语义的能力,以及从一种模型转换到另一种模型的能力。RSA具有将其模型转换到EMF core模型的能力。另外,使用EMF所支持的功能,您可以使用EMF core模型来产生一个完整的EMF模型。 同样需要注意到的是,RSA具有一项基于已经存在的EMF core模型创建模型的特性。在EMF core模型是唯一可得到的模型来源时,RSA模型是最理想的方法。 下载 作者简介<table border="0" cellspacing="0" cellpadding="0" width="100%"><tr><td colspan="3"></td></tr><tr align="left" valign="top"><td> Steve Speicher是IBM的一位高级软件工程师,他从事有关软件标准的工作。Steve目前正致力于运用工具和模型驱动开发来改进创建标准的过程。在此之前,Steve曾经在Rational部门从事软件开发工具的工作以及从事IBM内部工具的工作。Steve拥有Kent州立大学的计算机科学学士学位和应用数学学士学位。您可以通过sspeiche@us.ibm.com与Steve联系。 Kevin E. Kelly是IBM的一位高级软件工程师,他从事有关软件标准的工作。Kevin是W3C XForms工作组和W3C Compound Document Format工作组的一名成员。他主要致力于客户端技术,以及使开放的基于标准的技术得到发展,从而通过基于XML和模型驱动的方法使得更快速、更有效的标准得到采用。在加入IBM公司之前,Kevin在Rational Software从事了八年有关UML模型和Java技术的工作。Kevin拥有Mercer大学的学士学位和Montana大学的硕士学位。
图1:RSA中的简单的图书馆模型
<table border="0" cellspacing="0" cellpadding="0" width="100%"><tr><td>
</td></tr></table><table class="no-print" cellspacing="0" cellpadding="0" align="right"><tr align="right"><td>
<table border="0" cellpadding="0" cellspacing="0"><tr><td valign="middle">
</td><td valign="top" align="right"></td></tr></table></td></tr></table>genmodel
。
从UML2中编写RSA转换来提供自定义的转换是可能的。本文将重点关注在已经可以得到的可选方案上,而不需要构造一个特定的转换方式。RSA允许您导出一个其他模型格式的RSA模型,比如Ecore或者UML2模型。
模型
元素及其所包含的包
都被转换为了EMF包。如果希望的话,您可以先编辑Ecore文件来删除一个多余的包,确保被包含的模型元素被移送到目标包中。
图3:导出UML2模型
<table border="0" cellspacing="0" cellpadding="0" width="100%"><tr><td>
</td></tr></table><table class="no-print" cellspacing="0" cellpadding="0" align="right"><tr align="right"><td>
<table border="0" cellpadding="0" cellspacing="0"><tr><td valign="middle">
</td><td valign="top" align="right"></td></tr></table></td></tr></table>genmodel
。
图4:EMF模型创建向导
图5:从Ecore而来的EMF模型
图6:提供源Ecore
图7:Genmodel 和Ecore 的生成
<table border="0" cellspacing="0" cellpadding="0" width="100%"><tr><td>
</td></tr></table><table class="no-print" cellspacing="0" cellpadding="0" align="right"><tr align="right"><td>
<table border="0" cellpadding="0" cellspacing="0"><tr><td valign="middle">
</td><td valign="top" align="right"></td></tr></table></td></tr></table>
<table border="0" cellspacing="0" cellpadding="0" width="100%"><tr><td>
</td></tr></table><table class="no-print" cellspacing="0" cellpadding="0" align="right"><tr align="right"><td>
<table border="0" cellpadding="0" cellspacing="0"><tr><td valign="middle">
</td><td valign="top" align="right"></td></tr></table></td></tr></table>
<table border="0" cellspacing="0" cellpadding="0" width="100%"><tr><td>
</td></tr></table><table class="no-print" cellspacing="0" cellpadding="0" align="right"><tr align="right"><td>
<table border="0" cellpadding="0" cellspacing="0"><tr><td valign="middle">
</td><td valign="top" align="right"></td></tr></table></td></tr></table>
<table border="0" cellpadding="0" cellspacing="0"><tr><td valign="middle">
</td><td valign="top" align="right"></td></tr></table></td></tr></table>
<table border="0" cellspacing="0" cellpadding="0" width="100%"><tr><td colspan="3"></td></tr><tr align="left" valign="top"><td></td><td></td><td width="100%">
<table border="0" cellspacing="0" cellpadding="0" width="100%"><tr><td>
</td></tr></table><table class="no-print" cellspacing="0" cellpadding="0" align="right"><tr align="right"><td>
<table border="0" cellpadding="0" cellspacing="0"><tr><td valign="middle">
</td><td valign="top" align="right"></td></tr></table></td></tr></table>
↑返回目录
前一篇: SWT 和 JFace, 第 2 部分: 简介
后一篇: 使用图形编辑框架创建基于 Eclipse 的应用程序