这个由两部分组成的文章阐述了如何为 UML Profiles 生成工具和 UML 形状,从而允许利用 IBM ® Rational® Systems Developer、IBM ® Rational® Software Architect,以及 IBM® Rational ®Software Modeler 来定制领域建模。这两篇文章中所描述的步骤适用于 Rational Software Modeler 7.0.5 和 Rational Software Developer 7.0.5。
在这篇文章中,您将学习如何从现存文档或从您创建的文档中为元素生成工具。因为将会生成中间文档和代码,您将能够修改这些文档和自定义以下几个方面:
如果您愿意编写代码,那么您可以进一步自定义生成的或者默认的 UML 形状。您还可以修改不同的 UML 形状之间的限制条件。当您完成这些步骤之后,您结束时就可以用这些完全自定义化的工具,来为您自己的领域构建元素模型,还可以在图表中显示您的自定义 UML 形状。因为生成的是建立在开源 GMF 层的 java 代码,这篇文章还将讨论关于如何修改和扩展代码的话题。
如果您对 Eclipse 和 UML 建模有一个基本的了解,那么您将很容易就可以跟随本文进行学习,生成并部署您自己的自定义工具。然而,要提醒的是:您将需要具备一些 java™ 技术的知识来处理生成的形状文件的大部分定制化过程。
生成工具之前,您首先需要一个概要文件。您有两个选择:
如果您的文档包括非 ASCII 字符,或者如果您希望在这个工具中使用非 ASCII 字符,那么您要确保这个工作空间参数是为 UTF-8 编码设置的。您可以通过选择 Window>Preferences > General > Workspace ,再选择 UTF-8 作为 Text 文档编码来实现 (请看图 1)。否则,生成的这些 java 文档将不会进行适当地汇编。
Project Explorer 是查看 Modeling View 中资源的默认方法。
图 2. Generate Profile Tooling 行为的下拉菜单
这个向导将在您选择的这个文档和这个工作空间它的位置的基础上尝试构成这些区域。它有助于理解每个区域的所表示的含义:
图 3. 样例概要文件的的样例面板条目
图 4. 样例概要文件的菜单条目实例
当不生成自定义 UML 形状文件时,将会使用标准的 UML 形状文件。这并不是很好的选择,因为您的工具的终端用户(它将被看作是域模型 ),能够通过使用标准的 UML 表示法来产生图表。另外,您不需要为看起来很好的形状文件进行修改。
对于这个例子,只需要接受默认选项和点击 Finish 就可以了。(稍后您将学习关于其它向导页面的知识。)几分钟之后,就会生成一个新的项目,并且这个项目将包含代码和您文档的复本。这个新近生成的项目可能不会被部署。
提示:
如果您向左的只是部署一个文档,并且想用一种简易的方法来做,那么这个向导也可以为您做这些工作。当您使用这个向导时,您不必麻烦地创建一个插件,写下所有的 XML 标签,拷贝您的文档。只需要清除 Generation Options 中所有的复选框,然后点击 Finish 。将为您创建一个简单的插件项目 ,注册路径图和文档的 XML 将会编写在这个 plug-in.xml 文档中, 而且您的文档将会拷贝到一个叫做 profiles 的地址下。您现在拥有一个准备被部署的插件。没有比这更简单的方法了!
当您完成测试之后,这个插件应该像一个标准的 Eclipse 插件一样部署。首先,测试这个生成的工具:
提示:
-ea
。有些生成的代码包括函数,因此您可能会发现,启动这个函数将会帮助您更快地跟踪程序错误。 现在开始尝试:
一个模型即将被创建,一个空白的图表编辑器也会将打开。
注意观察,工具相应的文档元素显示在这个面板中。将上下文菜单提到这个图表的表面上来,注意现在的菜单条目与文档元素是相符合的。您将发现每个元类扩展的 面板条目是为每个造型定义的,同时也是为元类联合和造型联合定义的。已经生成的连接符都遵循着现场的限制条件。也就是说,它们只能按照 UML 规则和工具的规则来连接。例如,您可能不会添加一个 实现
连接器到一个 UML 包中,您也不会在对象之间创建造型联合链接器,并且这些对象也没有运用所期望的造型。
图 8中的例子使用了一个简单的样例文档。通过点击这个面板,我们可以创建定型为 Customer
、CustServAgent
, 以及 Pilot
的 UML Actors。我们还创建了几个用例以及元素之间的关系。我们没有为它定义工具的附加 UML 元素仍然可以通过激活附加性能被添加。您将学习如何简单地来实现它。注意这个连接器只能以正确的方向来添加,并且您不能以相反的方向在一个连接器上加入两个节点。
提示:
您还可以通过手工对这个模型运用相应的文档来使这个工具得以显示:
当您想要利用现存的模型操作时,这是一个可选择的路径。
排除故障提示:
如果这个面板条目和菜单条目不出现,核查您的概要工具已经被激活。这些性能可以用来减少出现在域模型中不必要的 UI。一般情况下,这个模型只会对一个域比较感兴趣,这样就避免了混乱,来自其它域的工具就会被默认隐藏。
验证这些性能:
因此,除了手工运用这个文档之外,您还可以激活这个性能从而使这个工具得以显示。这个默认情况下生成的工具在必要的时候将自动运用这个文档到模型中去。
当您对您的工具满意后,很可能还想将它部署到与模型中来使用。
对于开发人员来说最简单的方法是,将生成的项目分配到这个域模型中。这个模型也必须通过使用 File > Import > Existing Projects into Workspace 将这个项目导入此工作空间,然后启动一个新的运行时间工作台(正如我们测试这个工具一样操作)。这是最差的一种方法:丢失一个文件以及插件停止工作。进一步说,需要其它运行时间工作台的例子来运行增长存储的消耗;因此,这并不是我们要推荐的方法。
一个更合理的步骤是,为这个工具项目生成一个 java Archive (JAR) 文件。这个 JAR 文件包括汇编形式的代码:
排除故障提示:
如果失败了,如果您添加了其它插件就把不必要的插件从您的环境中清除。很可能,其他构建者也尝试做出贡献,但是也失败了,就导致生成文件的整个过程都失败。
还有几种可以使用的方法。一种可能的方法是,为您的文件提供模型。这个模型利用文件、导入、插件以及代码片断 将它导入这个工作空间,然后启动这个工作空间的另一个例子。这样就再一次拥有存储的含意。
一个更好的方法是将这个 jar 文件导入到这个产品安装的插件地址中。如果这个应用软件安装在默认地址中,就是寻找地址的位置,根据这个操作系统您可以使用:
如果这个文件被当作产品安装的一部分来拷贝,并且生成的工具也不进行更新,那么就这就是相对非常简单的方法。这个应用软件下一次启动的时候,生成的这个工具就可以利用。
这里没有计划 升级生成工具,但是假设没有更新也是不现实的。然而,您所能够做的就是期望更新以及为您的插件分配版本。默认情况下,这个插件版本是从文档的版本得来的。因此,如果您在没有对文档进行变更的情况下更改了您的工具,那么这个版本数字仍然会是一样的。您可以在生成这个 JAR 文件之前通过手工更新插件的版本来克服这个问题。可以这样操作:
现在,这个工具下次更新的时候,它只需要被拷贝到正确的位置,并且这个应用软件需要被重新启动。当这个 JAR 文件被拷贝到插件文件时,更新这个显示版本可以阻止冲突
最后一种方法是标准的 Eclipse 方法。
这个步骤涉及到的面更多信息,请参见参考资源部分的“将插件部署到一个更新的站点。”内容
排除故障提示:
如果这个 JAR 文件拷贝到安装的插件文件夹中,并且这个工具 显示失败,首先要验证插件和正确的版本:
-clean
参数重新启动这个应用软件。 表格 1 总结了部署您的工具插件的方法。
表格 1. 为您的工具插件部署方法
|
|
|
|
|
|
|
|
您现在已经学习到如何:
如果您不希望进一步自定义生成的工具,您会发现这是停止阅读的适当的位置。更多的技术用户会发现这对继续进行第 2 部分,学习如何自定义这个工具很有意义(点击 “系列中更多内容”)。