扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
引言
WebSphere 咨询师 Chris Gerken 回答了有关模型驱动的开发(Model-Driven Development,MDD)的问题,以及如何创作并使用可执行模式、Java™ Emitter Templates (JET) 和 Design Pattern Toolkit (DPTK) 来生成应用程序源代码。MDD 转换现在被用作可执行模式。它们自动执行约定、最佳实践和指导方针的一致应用。现在,Eclipse 和 RSA 中的重要新功能允许您轻松创作这些模式来生成应用程序源代码(Java、COBOL、JSP、XML、属性文件,等等)。
问:给定一个统一建模语言(United Modeling Language,UML)活动模型,如何创建一个插件来执行模型到模型转换(UML2 到 DSL Ecore),并通过 Java Emitter Templates (JET) 使用该模型中的信息来生成代码,但是必须无缝并以编程方式完成?
答:一般情况下,您应该使用中间相遇 (meet-in-the-middle) 方法。首先构建出您的 JET 转换(如果您仍在使用 Rational Software Architect (RSA) V6.x,则使用 alphaWorks® 推出的 Design Pattern Toolkit (DPTK))。输入模型已经过优化,使得模板中的模型访问变得非常简单。
在编写模型到文本转换之后,您可以编写一个 RSA 转换,用于导航您的 UML 模型并构建一个与 JET 转换所需的输入模型类似的内部模型。RSA 转换中的最后一个规则将组合的内部模型转换为可由 JET 转换容易地使用的格式(XML 字符串或 EMF 内存中的模型),以便以编程方式调用 JET(或 DPTK)。
问:什么是范例,它如何帮助我构建模型到文本转换?
答:范例是您希望您的模型到文本转换所生成结果的代表性示例。它由 RSA 中的范例创作工具使用,并用于快速提取输入模型模式和模型到文本模板。范例创作期间的假设在于,该范例是按照所有适用的最佳实践、指导方针、约定等等来编写的。它演示了该转换所要支持的所有可变点。尽管起初可能觉察不到,但是通过构建并验证一个范例,然后使用它作为转换创作过程的输入,您将会节省大量的时间。
问:何时应该使用 DPTK 而不是 JET 来编写模型到文本转换?
答:如果您计划在 Eclipse 3.2、Rational Application Developer (RAD) V7 或 Rational Software Architect V7 上运行转换,则使用 JET。对于早期版本的 RSA、RAD 或 Eclipse,则使用 DPTK。
问:我想使用部署描述符 (web.xml) 作为 JET 转换的输入模型,但是我还需要一些无法加入部署描述符的其他数据。如何才能做到呢?
答:您可以将附加信息放到第二个 XML 文件中。您的转换将采用两个文件之一作为其主要输入,并将使用内容标记来将第二个文件读取、分析和加载到内存中。在从两个文件加载两个模型之后,您可以执行任何必要的模板处理来生成您的文件。
问:模式与模型到文本转换有什么关系?
答:Grady Booch 曾经将模式定义为对给定上下文中重复出现的问题的解决方案。此定义意味着最佳实践、指导方针和命名约定等全都是模式的形式。由于模型到文本转换可以自动化最佳实践、指导方针和命名约定的应用,因此模型到文本转换(以及模型到模型转换)可以自动化模式的应用。我经常将术语“转换”和“模式”交替使用。
问:我一直想弄明白的一件事情是如何界定我的范例和模式的范围。我希望确保该范围足够大,能够实现模式到文本转换的强大功能,但是又要足够小,以避免使我们的第一个转换就不堪重负。
答:可以使用多种方法来界定您的范例范围:
这两种方法最终都确定相同的文件组。为了找到一个理想的入门范例,我将寻找一个包含大约 20 个文件的文件组。我观察到某个模式中大约 80% 的模板无关紧要,15% 的模板简单且易于完成,另外 5% 的模板则相当粗糙。
如果您是经验更丰富的模式创作者,您可以查看文件,提一些问题,并获得模板数量和复杂性以及模型大小和形状的准确判断。我会为其他看不见的复杂性添加风险因素,例如主题专家和模式主题专家不熟悉其他主题专家的领域。
为进一步简化,我会为您的第一个转换构建 5 至 10 个模板。如果再多,您也只是在花更多的时间证实同样的结果。如果再少,则不会看到模型到文本转换的强大功能。
问:我有一些 Java 类,它们将是用于 JET 生成的真正理想候选者,但是每个类中还有许多将会很难生成的业务逻辑。我想我可以一次生成类源代码,并让开发人员添加他们的业务逻辑,但是如果我必须重新生成源代码,如何才能避免改写那些业务逻辑呢?
答:您需要使用 JET 中的 userRegion 标记。此标记标识所生成的文本中可由用户修改的部分。如果再次运行转换,开发人员所做的更改会在重新生成过程中保留下来。简而言之,您可以创建模板来生成源代码,标识所生成的源代码中开发人员可能希望修改的部分,并用 userRegion 标记来包括那些部分。
问:哪些类型的应用程序是使用模型到文本转换生成的?
答:由于 RSA V7 是最近才推出的,大多数模型到文本转换都是使用 DPTK 编写的。已生成的应用程序和组件包括自定义 Portlet、J2EE 应用程序、Eclipse 组件(向导、对话框、帮助、富客户端)、优化的数据库访问和其他特定于客户的应用程序。
问:我为 RSA V6 编写了许多 DPTK 模式。将它们迁移到 JET 和 RSA V7 的最容易方法是什么?
答:RSA V7 和 RAD V7 都附带了一个 JET 标记库,称为 DPTK 兼容层。此标记库包含了外观和行为都与 DPTK 标记类似的标记。然而,这些标记是在 JET 之上实现的。
在将您的模式加载到 V7 工作区中以后,您可以将 DPTK 模式“Add JET Behavior”应用于您的 DPTK 模式,以添加将该转换调整为 JET 转换所需要的正确属性、设置和文件夹。
问:新的 JET 标记有何出众之处?我已经可以使用嵌入式 Java 来做同样的事情。
答:与您自己可以使用嵌入式 Java 来提供的模板流控制(迭代、条件处理、模型访问,等等)相比,JET 标记提供了相同级别的模板流控制,但它们是以与语言无关的方式实现的。这使得 COBOL、C 程序员和系统管理员无需学习 Java 即可创作转换。
有些标记还隐藏了大量阻碍嵌入 Java 的复杂性。例如,文件标记(将模板应用于模型并在新的 Eclipse 资源中存储最终内容)还与配置管理插件和其他编辑器交互,以确保在 Eclipse 中正确创建所生成的文件。
问:您面对着多个转换:UML2Java、JET 和 DPTK?RSA 中的最明显策略是什么?
答:所要使用的模型到文本转换技术取决于您使用的 Rational 工具版本。第一选择是 EMFT JET(在 Eclipse 3.2.0 和 Rational V7 及更新版本中可用)。如果您没有运行这些平台之一,则您应该使用 DTPK。
问:什么是模式存储库 (Pattern Repository),它与资产存储库(Asset Repository,RAS)如何相关?同样,这是 RSA 中的一个令人混淆的方面。
答:模式存储库是一个服务器(尽管它可以在您的本地计算机上),其中保存了作为可重用资产规范(Reusable Asset Specification,RAS)文件来部署的模式。RAS 文件不过就是一个 zip 文件,其中具有一些关于 RAS 文件中资产性质和用途的附加元数据,以及描述应该在将 RAS 资产导入工作区时采取的任何安装步骤的元数据。特殊操作可以包括 Eclipse 插件安装或将文件导入工作区。这些操作是自动运行的。当然,RAS 文件也可以包含其他类型的资产。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者