UML软件工程组织

用 Rational ClearCase 进行 WebSphere Studio 小组开发:
统一变更管理:开发人员和执行活动
Ali Murtaza Manji (amanji@ca.ibm.com) , Software Developer, IBM Toronto Lab
Ying Zhao (yingzhao@ca.ibm.com) , Software Engineer, IBM Toronto Lab

内容提要

引言
执行活动
添加新的资源
修改资源
重命名资源
删除资源
结束语

本系列文章是关于使用 IBM Rational ClearCase 进行 WebSphere Studio 团队开发的。作为该系列的第 3 部分,本文包括统一变更管理、开发人员活动和加入项目。

引言
本系列文章的第 2 部分描述了 IBM® Rational® ClearCase® 统一变更管理(UCM)和开发人员的角色,特别是关于加入项目的 UCM 开发人员操作。本文进一步描述了在 UCM 过程中开发人员的角色,着重描述关于 执行活动 的 UCM 开发人员操作。 在此处讨论中使用 IBM WebSphere® Studio Application Developer V5.1.1 (下文中简称 Application Developer)。

图 1 概括了 UCM 过程中,开发人员角色的操作:

图 1. 开发人员角色。

执行活动
作用(contribution)在 ClearCase UCM 术语中意味着执行和交付活动。活动可以包括改正一个 bug 或者编写一个新的功能,还可能包括跨越一个或多个项目组件对一个或多个源构件进行修改。在 Java™ 和 Application Developer 上的 J2EE 开发术语中,操作可能包括添加、删除、修改或重命名配置文件、类、包或工作区项目。

要查看 ClearCase Adapter 的首选项,请选择 Window => Preferences => Team => Rational ClearCase 。 缺省值是有帮助的,特别是对于 UCM 操作更是如此。本文使用这些值来描述执行活动中所涉及的操作。

添加新的资源

添加新的类
向 Application Developer 项目中添加一个新的类,这是当执行一个活动时的特有操作。 在有源代码控制的条件下和没有源代码控制的条件下,向 Application Developer 项目中添加 Java 类的过程没有什么不同。然而,当向项目环境中添加某种类时,可能会出现一些有趣的情形,即可能会影响受源代码控制的其他构件。特别是,添加同时也是 J2EE 构件(比如:servlet,EJB 类或接口)的任何类,都会影响其他 J2EE 构件。当您向项目中添加 servlet 或 EJB 类时,Application Developer 自动地更新部署描述符和其他配置文件。

当您向 Web 项目(模块)中添加 J2EE 构件(例如 servlet)时, Application Developer 直接更新部署描述符 web.xml,包括此 servlet 的名字、此 servlet 所使用的所有初始化参数、以及所有 URL 映射。被 Application Developer 自动更新的部署描述符和其他文件,如果处于源代码控制之下,这对开发人员将是一个难题。幸运的是,ClearCase Adapter 提供了一个方便的首选项,使得 ClearCase 自动检出(check out)必要的文件,以便 Application Developer 能互不干扰地更新它们。在下图 2 中, 当检入(checked in)文件被内部的、非交互的编辑器编辑时,缺省的首选项将被设置成 Automatically check out:

图 2. Rational ClearCase Team Preferences.

当向项目中添加 J2EE 构件(例如 servlet)时, Application Developer 会更新部署描述符和其他文件,这个事实并不意味着您以后不能再编辑这些文件。为了改变初始值或者为新加入的 servlet 配置一些其他更高级的部署设置,需要以后对这些文件进行编辑。WebSphere Application Server 有其他一些部署设置,用来对应那些超出了基本的 J2EE 要求和规范的功能。因而 WebSphere 为部署在其上的应用程序加入了更多的值。对于 Web 项目来说,这些额外的设置保存在绑定文件(ibm-web.bnd.xmi)和扩展文件(ibm.web-ext.xmi)中。当添加或删除 servlet 时,Application Developer 也将直接更新这些文件。

您可以控制创建 servlet 时 Application Developer 对部署描述符和其他文件的自动更新。图 3 显示了 File=>New=>Servlet 向导中的最后一页,此处向 web.xml 自动添加基本部署信息的复选框是缺省选中的:

图 3. 新建 servlet 向导中的最后一页。

点击了图 3 显示的 New=>Servlet 向导上 Finish 按钮后的结果,显示在下图 4 中。 ClearCase Adapter 检测到文件将要被 Application Developer 直接更新后,将通过 Check Out Elements 对话框提示您。通过这个对话框,您可以执行 ClearCase 来检出被 Application Developer 自动更新的那些文件。

图 4. ClearCase 请求运行对 Application Developer 直接更新的那些文件进行检出。

即使 web.xml 以及其他配置文件需要被检出以确定 Application Developer 对其进行的更新,ClearCase UCM 仍需要您将对这些文件的检出同具体活动相关联。因此,如下图 5 所示,使用提示对话框使您能指定将要和更新 web 部署描述符、扩展和绑定文件相关联的活动:

图 5. 选择活动的提示对话框。

因而,在 ClearCase 已经检出(Application Developer 已经更新)了 web.xml 和相关文件后,实际的 servlet 类将被创建并加入 Web 项目。

如图 6 所示,Application Developer ClearCase Adapter 还有另外的首选项,其方便的缺省值使得 ClearCase 能够识别新的资源。在这种情况下,servlet 被加入项目中:

图 6. 向项目中加入新的资源时 ClearCase 首选项的设置。

根据上图 6 所示的缺省首选项,ClearCase 将检测项目中新创建的文件。然后自动询问您是否要把新的资源加入源代码控制中去:

图 7. 向源代码控制中加入元素的对话框。

方便的是,如果您计划在将新的构件加入源代码控制后直接使用它,可以选择 Keep checked out,如上图 7 所示。当选择 OK 后,将弹出和上图 5 相同的对话框再次提醒您,因为虽然当这个对话框第一次出现时,现有的文件被 Application Developer 自动更新,但是这些更新需要和一个活动相关联。这个对话框需要第二次出现,是因为向源代码控制中添加新 servlet 类的操作需要和一个活动相关联。

添加新的包
在开发阶段,需要创建 Java 包来容纳各种各样的源类。创建新包时,将在 Application Developer 项目所在的主目录下创建新的空子目录。在团队开发的环境中,这将意味着因为添加多个以圆点分隔的组件包时所创建的所有新的子目录将也被加入源代码控制中去。

在下图 8 中,包 org.test.sample 被加入 J2EEWeb 项目的源代码文件夹中:

图 8. 新建 Java 包的对话框。

对于以圆点分隔的组件包 org.test.sample 而言,相应地需要以适当的层次结构创建 3 个新的子目录。如下图 9 所示,ClearCase Adapter 将检测新创建的子目录然后提示您将它们添加到源代码控制中去:

图 9. 向源代码控制中加入元素的对话框。

添加新的项目
一个典型的 J2EE 应用程序可能由一些模块组成,包括一个或多个 Web 模块、EJB 模块,应用程序客户端模块。在对以上每一个模块进行开发时,必须创建一个相应的 Application Developer 项目(Dynamic Web 项目、EJB 项目或应用程序客户端项目)并将其和主企业应用程序项目相关联。

在现有的企业应用程序项目处于源代码控制的条件下,创建新的模块项目并将两者关联在一起,这不会有什么大的影响。每一个模块项目都需要明确地加入到源代码控制中。然而,在明确地将模块项目加入到源代码控制之前,当创建模块项目本身,以及将它与已经处于源代码控制下的现有企业项目相关联时,关联的企业应用程序项目的部署描述符(application.xml)和其他相关元数据文件将被 Application Developer 自动更新,以反映一个新的模块项目已经和主企业模块项目相关联这一事实。图 10 描绘了这样的事实,即 ClearCase 提示由于 Application Developer 直接进行了更新,您需要检出部署描述符和其他配置文件:

图 10. 检出元素的对话框。

最后,新创建的模块项目需要明确地添加到源代码控制中。要向源代码控制中添加项目,在相应的模块项目上点击鼠标右键然后选择 Team=>Share Project

修改资源
编写新的代码和修改现有构件中的现有代码一般会占用很大一部分开发时间。然而,Java 代码并不是您开发的 J2EE 项目唯一的部分。越来越多的开发人员、分析人员和设计人员花费更多的时间在开发设计模块和数据模块,更新部署描述符和其他配置文件(大部分基于 XML)上。

幸运的是,大部分执行活动中的普通操作是最容易完成的。要更新现有的构件,需要从 Team 上下文菜单检出必要的构件,您需要选择相应的构件然后从弹出式菜单中选择 Team=>Check Out。在对相关的资源进行修改以后,您需要选择相应的构件,然后从弹出式菜单中选择 Team => Check In

在 Check Out/Check In 操作描述的基础上,您可以得出这样的结论:Application Developer 中的 Rational ClearCase 工具在对软件构件进行改动时,在为 pessimistic locking 做准备。SCM 提供商所使用的其他方法是 optimistic locking,这将使得多个开发人员能够对同一个构件进行并发的改动。在极大的程度上,低级的 ClearCase 和 ClearCase UCM 都使用 pessimistic locking。通过修改特定的 check-in/checkout 文件锁定操作以使您能够进行无限制(unreserved)的检出操作,这使此模块中增加了很大的灵活性。无限制的检出使得多个开发人员能够检出同一个文件并使得改动能够并发进行。然而如果开发人员执行的第一个且仅有第一个检出操作是有限制的(reserved)检出,所有执行后续无限制检验操作的开发人员将不能在最先检出文件的开发人员之前检入文件。因此,执行无限制检验的开发人员,将能够更灵活的使用最有利的 SCM 工具,可以访问可能要被更改的文件。但同时这也使得在交付活动中包含对团队工作区域进行的改动时,如何合并互相冲突的改动将成为要面临的难题。幸运的是,ClearCase 提供了一个图形化的合并工具以便于解决这个问题。

选择 Window => Preferences => Team => Rational ClearCase 可以看到 ClearCase 首选项。点击 Advanced Options 的结果如图 11 所示,您可以看到无限制检出文件的选项。

图 11. Rational ClearCase 选项。

重命名资源
对于像源文件、包或 Application Developer 项目这样的构件可以直接重命名。可以像平常那样重命名构件,然后 ClearCase 将会识别新的名字。您也可以在重命名构件之前检出它。然而,如果您没有这样做,ClearCase 将自动检出。

删除资源
对于像源文件或包这样的构件也可以直接删除。可以像平常那样删除构件,然后 ClearCase 将会发现到构件已经被删除。然而,您不能删除处于源代码控制之下的 Application Developer 项目。要删除它,您有 2 个选择:项目集成器(Project Integrator)或 ClearCase 管理员可以删除这个项目。这是一个复杂的流程,或者,更简便的方法是他们可以将项目锁定为废弃(obsolete)状态。

结束语
本文描述了 4 个主要 UCM 开发人员角色操作的第二个——执行活动。这包括向项目中添加资源、修改现有的资源和重命名以及删除资源。本系列以后的文章将讨论项目设置以及其他 2 个 UCM 开发人员角色操作:交付活动和重设工作区基线。

 

版权所有:UML软件工程组织