内容


Windows 版 IBM Rational Rhapsody 与 IBM Rational ClearCase 集成指南

Comments

概述

本文涵盖范围

该集成指南的范围是让 IBM Rational Rhapsody 用户能够创建,配置和使用 IBM Rational Rhapsody - IBM Rational ClearCase 集成。它提供了关于 Rhapsody 内部配置属性的具体信息,包括一些范例属性文件。这篇指南还描述了新 IBM Rational ClearCase 元素类型的创建和使用操作,以及它的类型管理器。两个可用集成模式都显示了出来,而且还显示了一个范例使用场景。

前提条件

读者应该熟悉 IBM Rational Rhapsody,并且应该拥有对 IBM Rational ClearCase 的基础知识。

您可以从 developerWorks 上下载 IBM® Rational® Rhapsody 试用版

引言

IBM Rational Rhapsody 方案是一种模型驱动开发(MDD)环境,用于基于 UML 和 SysML 的实时或者嵌入式系统工程,软件开发和测试。Rational Rhapsody 方案使得嵌入系统工程师和软件开发员可以提供生产效率和质量,它提供的便利之处包括

  • 图像化地抽象出复杂的设计,通过自动化软件开发过程,并进行持续性测试 — 尽早地找到缺陷来帮助降低成本。
  • 自动化软件开发过程,并通过持续性测试 — 尽早地找到缺陷以降低成本。
  • 通过持续性测试 — 尽早发现缺陷以降低成本。

IBM Rational ClearCase 提供了复杂的软件配置管理手段。一个行业领先的方案提供了高级的版本控制,工作区管理,并发开发支持和构建审计机制以提高生产效率。

  • 轻量级的丰富特性客户端允许您在本地操作或者远程操作
  • 基于可靠最佳实践的灵活管理资料库增加了团队的效率和生产能力
  • 大量可支持的环境以及跨平台支持联系了不同的团队
  • 对文件和目录透明且实时的访问机制,不论在公司的什么地方都能查看全程
  • 适合各种规模的开发团队,从小团队到全球分布的企业团队,以支持不断发展中的公司需要
  • 与领导性的 IDEs 相集成以允许您在自己喜欢的环境中工作
  • 高级的分支和图形化合并工具支持对文件的并发访问,以及对时间的有效使用

IBM Rational Rhapsody 与 IBM Rational ClearCase 之间的集成,提供了协作性开发环境下模型驱动开发的一种功能强大的工具。它支持在简单及复杂环境之下团队内及团队之间协作性编辑和共享数据(模型)的能力,这些团队包括地理分布分散的团队。模型保存在安全存储库(VOB)之中,它提供了历史,追踪性,回馈,元数据以及许多其他的优势。对于末端用户而言,集成代表了最低限度的负荷,因为在 Rhapsody 用户界面中直接提供了功能。

配置项和集成类型

ClearCase 基础知识

版本化对象基础(VOB)

所谓的 VOB 是一种永久性只读性的数据存储库。它存储了可以作为文件或者目录的所有项目,以及标签、分支之类的 ClearCase 特定数据。

ClearCase VOB 中的文件和目录也叫做 元素。一个元素由一系列的版本组成,组织成一种版本树。每一个版本都代表了源控制之下文件更改之后的版本。

ClearCase View(配置规格)

ClearCase 视图就是一个向用户提供对 VOB 中元素版本访问机制的工作区。它使得用户可以并发地工作。一个视图的配置规格就是一种筛选机制(一系列的排序机制),用于选择每种元素最多一个的版本。它决定了视图中可以看到每一种元素的哪一个版本。所有的视图开始时默认条件下都可以从 M:\ 驱动器上看到。一个视图可以映射到任意其他可见的驱动器上。

默认的配置规格,在简单的系列开发条件下,如下所示:

element * CHECKEDOUT
element * /main/LATEST

ClearCase 分支

分支支持并发开发。它们允许不同的项目和/或用户在同一时间使用相同的源。在并发开发环境下,您最有可能处理的是元素分支,而不是 /main。您需要更改视图配置规格以选择适当的分支和版本。

处理与 main 不同分支的一个范例配置规格如下所示:

element * CHECKEDOUT
element * /main/mybranch/LATEST

Rhapsody 基础知识

一个 Rhapsody 单元 就是一些建模元素的文件系统代表,这些建模元素包括项目、包、用例图、对象模型图、构件等等。

每一个单元都有一个取决于其类型的特定扩展名:

表 1. 单元类型以及相对应的文件扩展名
类型文件扩展名
项目.rpy
包 / 概述 .sbs
对象模型图 .omd
结构图 .std
序列图 .msc
构件 .cmp
用例图 .ucd
类,actors & use cases .cls
协作图 .clb
构件图 .ctd
部署图 .dpd
操作板图 .pld
受控文件 任意扩展名

默认条件下,构件,受控文件以及包都是单元,而图,类,角色和用例都不是单元。将图,类等等转化为单元是可能的,这样这些元素就在不同文件的文件系统上代表。那些新创建的单元然后可以添加至源控制之中。

在 Rhapsody 中您可以按照下列方式来创建单元:

切换至 Rhapsody 浏览器,右击任意的模型元素并选择“Create Unit”。

图 1. Rhapsody 单元
复选框以及细节列表
复选框以及细节列表

每一个 Rhapsody 单元都对应一个 ClearCase 元素。如果需要在这样一个包(单元文件 / ClearCase 元素)中的模型元素上进行操作,那么您可以按照下面的方式进行操作:

  • 通过将包的模型元素重组为一个更小的子包,或者为一些模型元素(例如类)创建单元文件,可以增加单元的组织性。这种方法将会增加 ClearCase 元素的数量,同时降低了它们各自的规模。检入或者检出带有所有固定模型元素(下级)的整个包,对于大型模型来说要花费大量的时间。
  • 保持 Rhapsody 模型的组织性是一项非常重要的工作,您还要创建一个与 ClearCase 中元素相对应的一个分支。这将会导致对相同模型元素的多个版本的并发访问。这种方法将会增加模型元素的版本与分支的数量。它需要在对并发分支的更改操作完成之后有一个 Diff/Merge 会话。结果得到的版本包含了所有涉及到分支的更改。

在实践过程之中,您可能会结合使用到两种方法,这取决于您的业务需要。

批处理模式与 SCC 模式

Rational Rhapsody 支持 CM 工具,包括 Rational ClearCase,不管是以两种方式中的哪一个:批处理模式或者 SCC 模式。

标记: 批处理模式可以在 Windows 及 Linux 环境下运行,而 SCC 模式只能在 Windows 环境下运行。

批处理模式是与 CM 工具交互的一种传统方法,它与 SCC 标准并不一致。在这种模式下,Rational Rhapsody 对于启动 CM 操作特定工具命令,提供了一系列的属性。

SCC 模式是与 CM 工具交互的另外一种方法,它与 SCC 标准相符合。在 SCC 模式下,一种属性对于与一系列的 SCC 一致 CM 工具交互已经足够了,不用进一步的编辑。您可以与 GUI 元素直接交流,以执行 SCC 支持的操作。返回的状态信息,或者崩溃的出错信息,可以直接来源于 CM 工具。通过这种方式,您可以拥有更加直接的 CM 工具交流,并返回对 CM 操作的有意义的反馈机制。

这些集成模式的每一条有有各自的优势以及劣势。为了帮助您决定哪一种模式最适合您的条件,这种集成指南向您提供了关于差异的信息。它还向您展示了怎样配置带有每一种模式各种属性的不同模式。为了决定是使用批处理模式还是 SCC 模式,您可以查看 [1]。

标记: 如果您想要使用 Rational ClearCase UCM(统一变更管理),那么 SCC 模式就是较好的选择。但是,如果您在 ClearCase 之内直接使用所谓的 UCM 活动,那么这些集成模式的每一条您仍然可以在 Linux 及 Windows 上以批处理模式使用。

配置集成

在 Windows 上配置 Rational ClearCase

这一段描述了怎样将 ClearCase 配置成与 Rhapsody 交互。我们准备使用一种所谓的 ClearCase 类型管理器,它与一个新的 ClearCase 元素类型相联系(例如,rhp_file)。这就提供了 Rational Rhapsody DiffMerge 工具可以从 Rational ClearCase 版本树工具直接启动的优势。这使得从一个分支到另一个合并单元,以及拖动超链接箭头作为单次操作变得十分容易。

用例敏感性

确定 ClearCase MVFS(多版本文件系统)被设置成用例非敏感性以及用例保存性的。

  1. 打开“Start->Programs->IBM Rational ClearCase”之下的“HomeBase”。
  2. 选择“Administration”项并点击“Control Panel”。
图 2. ClearCase Home Base
控制面板
控制面板
  1. 选择“MVFS”项,并确定“Case Insensitive MVFS”以及“Case Preserving”选项都被选中了。请记住在更改这些选项之后,您要重启一下您的机器!
图 3. ClearCase MVFS 属性
复选框以及细节列表
复选框以及细节列表

标记: Rational Rhapsody 并不支持 Rational ClearCase 快照视图。

创建一个类型管理器

打开位于 mgrs 目录下的映射文件(例如,C:\Program Files\ibm\RationalSDLC\ClearCase\lib\mgrs),并向文件的末尾添加以下内容:

清单 1. 映射文件
_rhp    construct_version           ..\..\bin\tfdmgr.exe
_rhp    create_branch               ..\..\bin\tfdmgr.exe
_rhp    create_element              ..\..\bin\tfdmgr.exe
_rhp    create_version              ..\..\bin\tfdmgr.exe
_rhp    delete_branches_versions    ..\..\bin\tfdmgr.exe
_rhp    compare    HKEY_LOCAL_MACHINE\SOFTWARE\Telelogic\Rhapsody\DiffMerge\Install Path
_rhp    xcompare   HKEY_LOCAL_MACHINE\SOFTWARE\Telelogic\Rhapsody\DiffMerge\Install Path
_rhp    merge      HKEY_LOCAL_MACHINE\SOFTWARE\Telelogic\Rhapsody\DiffMerge\Install Path
_rhp    xmerge     HKEY_LOCAL_MACHINE\SOFTWARE\Telelogic\Rhapsody\DiffMerge\Install Path
_rhp    annotate                    ..\..\bin\tfdmgr.exe
_rhp    get_cont_info               ..\..\bin\tfdmgr.exe

创建一个新的 Magic 文件

在 ClearCase 目录下创建一个名为“cc.magic”的新文件,(例如,C:\Program Files\ibm\RationalSDLC\ClearCase\config\magic),带有以下内容:

清单 2: Magic 文件
# Rhapsody file types
rhp_file : -name "*.rpy";
rhp_file : -name "*.sbs";
rhp_file : -name "*.cls";
rhp_file : -name "*.omd";
rhp_file : -name "*.cmp";
rhp_file : -name "*.ctd";
rhp_file : -name "*.clb";
rhp_file : -name "*.ucd";
rhp_file : -name "*.msc";
rhp_file : -name "*.std";
rhp_file : -name "*.dpd";
rhp_file : -name "*.fil";
rhp_file : -name "*.fol";
rhp_file : -name "*.pld";

创建一个新的元素类型

  1. 在“Start->Programs->IBM Rational ClearCase”之下打开“Home Base”。
  2. 选择“VOB”项并点击“Type Explorer”。
图 4. 打开 ClearCase Type Explorer
带有操作按钮的浏览器
带有操作按钮的浏览器
  1. 选择适当的 VOB(这里是“rhpdemo”)并点击“OK”。
图 5. 选择 ClearCase VOB
列表
列表
  1. 打开“元素类型”浏览器。
图 6. 元素类型浏览器
类型列表
类型列表
  1. 右击“元素类型”浏览器里面并选择“Create”。
图 7. 元素类型
内容菜单
内容菜单
  1. 向新的“元素类型”输入一个名字和描述,并点击“OK”。
图 8. 创建新的元素类型
类型细节
类型细节
  1. 选择 “Type Manager”项。
  2. 选择“Supertypetext_file
  3. 选择属性“Override type manager”并作为“_rhp”类型输入。
  4. 点击“OK”。
图 9. 元素 Supertype
类型管理器细节和复选框
类型管理器细节和复选框
  1. 在“元素类型”之内您将会看到一个名为“rhp_file”的新类型。
图 10. 新的 Rhapsody 元素类型
类型概述
类型概述

在 Windows 上配置 Rhapsody

Rhapsody 属性支持对 ClearCase 集成的定制。在“批处理模式(Batch mode)”与“SCC 模式(SCC mode)”之中将会详细讨论这些属性。您可以在 Rhapsody 项目中设置那些属性,或者使用属性文件来载入它们。我们为每一种集成模式都提供了范例属性文件(查看章节“为用户安装设置文件”)。在第一种情况下,属性只是在关注的项目之中是有效的,而在第二种情况下,在启动 Rhapsody 时会载入属性并且对于所有的项目都是有效的。

批处理模式

  1. 确定 VOB 安装了。
  2. 打开您的“ClearCase Explorer”。
图 11. 打开 ClearCase Explorer
启动菜单
启动菜单
  1. 如果 VOB 尚未安装,那么您可以右击视图,点击“Mount VOB”s…
  2. 选择适当的 VOB 并点击“Mount”。
图 12. 安装 VOB
列表与复选框
列表与复选框
  1. 在视图/VOB 中创建一个新的项目
图 13. 创建新的 Rhapsody 项目
文件夹视图
文件夹视图
  1. 向源控件添加项目根目录
    1. 打开“ClearCase Explorer”,右击项目根目录并选择“Add to Source Control …”
图 14. 向源控件进行添加
内容菜单
内容菜单

注意:
只向源代码控件添加 项目根目录。所有其他相关的文件和目录(Rhapsody 单元)将会由 Rhapsody 直接处理。

  1. 输入一条注解,将标号设置为“在向源控件添加之后检出”并点击“OK”。
图 15. 输入注解
复选框与注解
复选框与注解
  1. 在 Rhapsody 项目中设置属性。如果您选择载入包含的属性文件,那么您不需要执行这些步骤。尽管如此您还会得到每一个所使用属性的介绍。

    注意: 在 Rhapsody 内更改模型结构,会在 CM 系统层次上产生结果。为了让 Rhapsody 用户意识到每一种结果,我们会为一些属性选择 “UserConfirmation”。通过在对话框窗口中选择“Yes”,我们预计用户会接受/确认。选择“No”会导致必须通过手动解决的不稳定性。一个替代性的方案可能会是选择“Automatic”,并让 Rhapsody 激发所需要的 CM 命令。

接下来的屏幕截图展示了要更改的一些属性。就算显示的属性被标识为重写,它们会代表默认的值。它并不是要用作引用,而是简单地用作演示目的。

图 16. Rhapsody 配置管理属性
项目属性列表
项目属性列表

接下来的列表显示了更改值后的所有属性:

  • PathInProjectList ->Relative

    当一个项目添加至项目列表时,项目的路径会添加至项目列表文件( .rpl)。property PathInProjectList 可以用于指定在向项目列表添加项目时,是否使用绝对路径或者相对路径。属性的可能值会是“Absolute” 和“Relative”。为了与 ClearCase 视图保持独立,将该属性设置为“Relative”。

  • ReferenceUnitPath ->Relative

    ReferenceUnitPath 属性定义了怎样去保存一条引用单元路径。属性可以设置为“Absolute”或者“Relative”以指定是否通过绝对路径或者相对路径来向模型添加单元。如果属性被设置为了“Relative”,那么新添加的引用单元会包含与项目目录相关的路径。为了与 ClearCase 视图保持独立,您可以将该属性设置为“Relative”。

  • AddMember ->$OMROOT/etc/Executer.exe" "cleartool checkout -reserved -nc \"$UnitDirPath\" ; cleartool mkelem -nc \"$UnitPath\" ; cleartool checkin -nc \"$UnitDirPath\"

    AddMember 属性指定了用于向档案添加项目的命令。

    在这种情况下,运行 Executer 的命令($OMROOT/etc/Executer.exe)由三个可执行命令的列表组成:

    cleartool checkout -reserved -nc $rhpdirectory
    cleartool mkelem -nc $unit
    cleartool checkin -nc $rhpdirectory
    • 第一条命令,cleartool checkout -reserved -nc, 会在 ClearCase 中得到定义以检出一个项目。
    • 第二条命令,cleartool mkelem -nc $unit,创建了一个与 .magic 文件内规格相对应的元素(见于章节“Configuring Rational ClearCase for Windows”),并向变量 $unit 分配该元素,它代表了协作的单元。这就是唯一需要更改的命令。
    • 第三条命令,cleartool checkin -nc $rhpdirectory,会将 _rpy 目录之中的单元检入到档案之中。
  • AddMember_WithoutCheckOutCheckInDirectory ->cleartool mkelem -nc "$UnitPath"

    该属性允许向档案添加一条项目,而不用检出其上级目录,并在添加项目之后将其返回。该属性的使用允许您去在上级目录中单独地检入和检出。创建的元素会考虑 .magic 文件的规格(查看章节“Configuring Rational ClearCase for Windows”)。

  • AddToArchiveAfterCreateUnitActivation ->UserConfirmation

    当您在 Rhapsody 项目之中创建一个元素,没有一个默认的单元(例如一个角色,或者类),您可以选择从元素中创建一个单元。当您这样做时,该属性就会激活了,新的单元会作为 ClearCase 之中的单元而自动添加。

    可能的值如下所示:

    • Disabled- 没有单元记录
    • UserConfirmation- 催促用户在获得单元之前进行确认。
    • Automatic- 自动获得单元而不用询问用户。
  • CheckIn ->$OMROOT/etc/ SensitiveCheckin.bat $UnitPath $log

    CheckIn 属性指定了使用的命令,以使用主 Configuration Items 窗口将一个项目检入到档案之中。

    默认条件下,ClearCase 并不允许您去检入一个项目的未编辑的版本。Rhapsody 包含了一个脚本,SensitiveCheckin.bat,会检查一个项目的检出版本与以前的版本是否有什么差异,然后执行检入操作。如果项目尚未更改的话,那么脚本将会为该项目自动执行“uncheckout”操作。

  • DeleteActivation ->UserConfirmation

    DeleteActivation 属性是一个逻辑值,指定从 Rational Rhapsody 模型中删除单元,将会激活档案之中的命令删除操作。

    可能的值如下所示:

    • Disable - 关闭触发器。
    • UserConfirmation - 催促用户在执行删除操作之前确认操作。
    • Automatic - 当在 Rational Rhapsody 中删除单元时会自动激发删除档案之中的命令。
  • MoveActivation ->UserConfirmation

    MoveActivation 属性是一个逻辑值,它指定了移动 Rational Rhapsody 模型(以更改单元文件位置的方式)是否会激发档案中的重命名命令。

    默认值如下所示:

    • Disable - 禁止该功能。
    • UserConfirmation - 催促用户在重命名档案中的元素之前进行确认操作。
    • Automatic - 不管何时在将单元移动到 Rational Rhapsody 模型时都会自动重命名元素。
  • RenameActivation ->UserConfirmation

    RenameActivation 属性是一种逻辑值,它指定了在 Rational Rhapsody 模型中剩余的单元是否会激发档案中的重命名命令。

    可能的值如下所示:

    • Disable - 禁止重命名功能。
    • UserConfirmation - 催促用户在从档案之中删除元素之前进行确认操作。
    • Automatic - 自动重命名那些在 Rational Rhapsody 模型中重命名的元素单元。
  • StoreInSeparateDirectoryActivation -> UserConfirmation

    StoreInSeparateDirectoryActivation 属性会影响到一个已存在的包是任何转变的。接下来的情况适用于这种属性:

    • 从下列菜单中选择 UserConfirmation 或者 Automatic 来激活该项属性。在用户确认对话框之中选择“Yes”:
      • 当一个已存在的平包(flat package)作为目录转化为一个包(package)时,目录会在配置管理端创建,而该包的下级则将移动至该目录下。
      • 当一个已存在的包作为目录转化为一个平包时,目录会从配置管理端删除掉,而该包的下级也会删除。
      通过选择 Disable.
      Resulting behaviour with Disable 或者在用户确认对话框中选择“No”,来关闭该属性:
      • 当一个已存在的平包作为 Rhapsody 内的目录转化为一个包时,目录不会在配置管理端创建,而该包的下级则不会移动到该目录下。
      • 当一个已存在的包作为目录转化为 Rhapsody 内的平包时,目录不会从配置管理端删除掉,而且该包的下级也不会删除掉。
      • 在两种情况下逻辑性结构都不会响应 ClearCase 之中的文件系统结构。这种不稳定性必须得到手动的解决。
  • CMTool ->ClearCase

    CMTool 属性指定了您正在使用什么配置管理工具。每一种 CM 工具的有效属性都在相同名字的元类中得到了预定义。当您在评价引用其他属性的属性字符串时,Rational Rhapsody 只能在相同的元类中看到。

  • General:DefaultLockReserveOnCheckOut ->Checked

    property DefaultLockReserveOnCheckOut 提供了批处理模式下检出操作期间的一种默认锁定或者预留值。选中该框意味着不管何时进行检出操作时,它都会锁定或者预留。

  • General:Model:AutoSynchronize ->Checked

    AutoSynchronize 属性是一个逻辑值,它决定了 Rational Rhapsody 是否会运行同步化操作。当这种属性被选中时,每一次 Rhapsody 关注时 Rational Rhapsody 都会运行同步化功能。启动的同步化可以是文件系统上,或者 CM 档案上与文件的同步化,这取决于环境的情况。

  • ConfigurationManagement:ClearCase:CheckOut-> cleartool checkout -nc $mode $LabelPart

    CheckOut 属性指定了使用的命令,以适应主配置项对话框来将项目检出到档案外。这条命令引用了 LabelPart 属性以及 $mode

  • ConfigurationManagement:ClearCase:LabelPart ->( $label ? -version "$UnitPath@@\$label" : "$UnitPath")

    LabelPart 属性指定了怎样去嵌入一个新版本的标签。这种扩展名使用 (Exp1 ? Exp2 : Exp3) 结构。如果您在检入或者检出窗口中的 Revision/Label 区域内输入一条标签时,那么 $label 就是 TrueLabelPart 会由 -version "$UnitPath@@\$label" 估算,其中 $UnitPath$label 会由相应的值所取代。否则,$labelFalseLabelPart 会由 $UnitPath 估算。

  • ConfigurationManagement:General:UseUnitTimeStamps -> Checked

    UseUnitTimeStamps 属性允许用户去决定是否使用单元时间标记。

  • General:Model:DefaultDirectoryScheme -> PackageAsDirectory

    DefaultDirectoryScheme 属性由层级结构的存储库功能所使用。该属性只能从项目层次上获得,但是激活或者禁止 Save in Subdirectory 复选框。可能的值如下所示:

    • Flat - 所有的单元都存储在项目 _rpy 目录之中。
    • PackageAsDirectory - New packages(及其下级)存储在单独的目录中,上级层次上有不超过一个的层次。包子目录拥有它所包含包相同的名字。
  • ConfigurationManagement:ClearCase:MakeCMShadowDirActivation -> UserConfirmation

    MakeCMShadowDirActivation 属性控制了 Rational Rhapsody 中的保存操作创建的新目录是否是 ClearCase 中的元素。可能的值如下所示:

    • Disable - 关闭这项功能。
    • UserConfirmation - 催促用户在创建元素之前进行确认操作。
    • Automatic - 不管何时通过 Rational Rhapsody 之中的保存操作来创建新的目录时,都会自动创建元素。

    如果您将该项属性设置为了 Automatic,那么向档案所添加的每一个新的包都会创建一个新的 CM 目录,包括分支。

对档案的连接

“连接至档案”操作会将工作区的项目连接至一个 CM 档案。另外,它会永久性地将与档案相联系的属性设置为不管何时项目需要都可以进行内部引用,以便于与 CM 工具交互。在项目的整个生命周期内,您只需要执行该项操作一次。一个连接操作在任意其他 CM
操作之前都会激发应该被执行的操作。

  1. 选择“File -> Configuration Items…”以打开接下来的对话框窗口并选择“Connect to Archive”:
图 17. Rhapsody 连接至档案
菜单与列表
菜单与列表
  1. 点击“OK”。
图 18. 确认连接
确认
确认

这将会把项目子目录的内容保存到一个带有“.orig”扩展名的新创建的子目录之中,并创建一个带有项目子目录原始名的空白目录。

注意:如果您接受到一个诸如“cleartool: Error: Can't modify directory "M:\rhpdemo_view\rhpdemo\root\SampleProject" because it is not checked out.”,那么您可以进行以下的操作:

  1. 将带有“.orig”扩展名的项目子目录重命名为其初始的名字,例如,将“SampleProject_rpy.orig”重命名为“SampleProject_rpy”。
  2. 在 ClearCase 或者 Windows Explorer 的帮助之下,检出项目根目录。
  3. 现在为了将 Rhapsody 单元文件添加至 ClearCase,您可以将“Configuration Items”窗口之中的视图更改为层级结构的,选择最上层的元素并点击“Add to Archive”。
图 19. 添加至档案
菜单与列表
菜单与列表
  1. 在询问添加下级时选择“Yes”。
图 20. 向档案添加下级
确认
确认
  1. 您可以在 ClearCase 中确认,有哪些项目添加至了源控件之中。绿色的标记意味着元素已经检出了(可写的):
图 21. 添加至源控件中文件的确认
文件浏览器
文件浏览器

注意:
与维护模型内容无关的文件在用户工作区中被保存为“视图-独立文件”,而且不能添加至源控件之中。

SCC 模式

  1. 确定 VOB 已经安装完毕了。
    1. 打开您的“ClearCase Explorer”。
图 22. 打开 ClearCase 浏览器
开始菜单
开始菜单
  1. 如果 VOB 尚未安装,您可以右击视图,点击 “Mount VOB…”,选择适当的 VOB 并点击 “Mount”:
图 23. 安装 VOB
列表与复选框
列表与复选框
  1. 在 视图/VOB 中创建一个新的项目
图 24. 创建 New Rhapsody Project
文件浏览器
文件浏览器
  1. 向源控制添加项目根目录。
    1. 打开 ClearCase 浏览器,右击项目根目录并选择“Add to Source Control …”
图 25. 添加至源控件
内容菜单
内容菜单

注意:
只向源代码控件添加项目根目录。所有其他相关的文件和目录(Rhapsody 单元)都可以由 Rhapsody 手动处理。

  1. 输入一条注解并点击“OK”(不要选择“添加至源控件之后检出”选项)。
图 26. 输入注解
复选框和注解
复选框和注解

在 Rhapsody 中设置属性

注意:
在 Rhapsody 中更改模型结构,对在 CM 系统层次上产生一些结果。为了让 Rhapsody 用户意识到这些结果,我们选择一些属性“UserConfirmation”的值。通过在对话框中选择“Yes”我们希望用户进行接收/确认操作。选择“No”可以产生一些不稳定性,这些不稳定性必须得到手动的解决。一个替代性的方案就是选择“Automatic”并使得 Rhapsody 激发所需要的 CM 命令。

接下来的屏幕截图展示了编辑后的一些属性。就算显示的属性被标识为盖写,它们也代表了默认的值。它们原本并不是要用作引用,而只是出于简单的演示目的考虑。

图 27. Rhapsody 配置管理属性
项目属性列表
项目属性列表

接下来的列表显示了带有更改值的所有属性:

  • PathInProjectList ->Relative

    当一个项目被添加至一个项目列表时,项目的路径也会被添加至项目列表文件(.rpl)。property PathInProjectList 可以用于指定当项目添加至一个项目列表时,是使用绝对路径还是相对路径。属性的可能值是“Absolute”和“Relative”。为了与 ClearCase 视图保持独立,将该属性设置为“Relative”。

  • ReferenceUnitPath ->Relative

    ReferenceUnitPath 属性定义了怎样去保存一个引用单元路径。属性可以被设置为“Absolute”或者“Relative”,以指定添加至模型以引用的单元是使用绝对路径还是相对路径。为了与 ClearCase 视图保持独立,您可以将该属性设置为“Relative”。

  • DefaultLockReserveOnCheckOut ->Checked

    property DefaultLockReserveOnCheckOut 提供了批处理模式之下检出操作期间的默认锁定或者预留值。选中该框意味着不管何时在进行检出操作时,它都会锁定或者保留。

  • UseSCCtool -> Yes

    UseSCCtool 属性指定了 Rhapsody 与 CM 工具之间的标准 SCC 接口是否使用。注意当您在使用 SCC 接口时,所有的批处理模式命令属性都是未使用的。

  • AuxProjPath

    AuxProjPath 属性是一个标识了 SCC 提供商的字符串。不要去更改该属性。删除该属性将会断开 Rational Rhapsody 项目与 SCC 项目之间的联系。

    如果您删除了该值,那么您还必须删除掉 ProjName 属性。

  • DeleteActivation ->UserConfirmation

    The DeleteActivation 属性是一个逻辑值,它指定了从 Rational Rhapsody 模型中删除掉单元是否会激发档案之中的删除命令。

    可能的值如下所示:

    • Disable - 禁止激活。
    • UserConfirmation - 提醒用户在执行删除操作之前进行确认操作。
    • Automatic - 当从 Rational Rhapsody 中删除一个单元时自动地激发档案之中的删除命令。
  • MoveActivation -> UserConfirmation

    MoveActivation 属性是一个逻辑值,它指定了移动 Rational Rhapsody 模型之中的单元(就是以更改单元文件位置的方式)是否会激发档案中的重命名操作。

    可能的值如下所示:

    • Disable - 禁止该项功能。
    • UserConfirmation - 提醒用户在重命名档案中的元素之前进行确认操作。
    • Automatic - 不管何时在 Rational Rhapsody 模型中移动单元时都要自动重命名元素。
  • ProjName

    ProjName 属性就是标识 SCC 项目名的一个字符串,在这里它是 ClearCase。不要更改该属性。删除属性值将会断开 Rational Rhapsody 项目与 SCC 项目之间的联系。

    如果您删除了该值,那么您还必须删除掉 AuxProjPath 属性。

  • RenameActivation -> UserConfirmation

    RenameActivation 属性也是一个逻辑值,它指定了重命名 Rational Rhapsody 模型之中的单元,是否会激发档案中命令的重命名操作。

    接下来是一些可能的值:

    • Disable - 禁止该功能。
    • UserConfirmation - 催促用户在从档案中删除元素之前进行确认操作。
    • Automatic - 自动删除在 Rational Rhapsody 模型中重命名的元素单元。
  • ShowCMStatus -> Checked

    property ShowCMStatus 是一个逻辑性的属性,它决定了 Rational Rhapsody 是否显示项目单元的 CM 状态。该属性是在项目层次上设置的。

  • StoreInSeparateDirectoryActivation -> UserConfirmation

    StoreInSeparateDirectoryActivation 属性反映了一个已存在的包是如何被转化的。接下来的条件在 SCC 工具是 ClearCase 时,只适用于该属性。

    • 从下列菜单中选择 UserConfirmation 或者 Automatic 来激活该属性。或者在用户确认对话框之中选择“Yes”:
      • 当一个已存在的平包作为一个目录转化为一个包时,会在配置管理端创建目录,而且该包的子代也会移动到目录之中。
      • 当一个已存在的包作为目录转化为一个平包时,目录会从配置管理端删除掉,而且该包也会删除掉。
    • 选择 Disable.
      Resulting behaviour with Disable 或者在用户对话框中选择“No”来禁止该属性:
      • 当一个已存在的平包作为一个目录被转化为 Rhapsody 中的一个包时,目录不会在配置管理端创建,而且该包的子代不会移动到该目录下。
      • 当一个已存在的包作为一个目录被转化为 Rhapsody 中的一个平包时,目录不会从配置管理端删除掉,而且该包的子代不会被删除掉。
      • 在两种情况下,逻辑性结构都不会对应于 ClearCase 中的文件系统结构。这种不稳定性必须进行手动的解决。
  • General:Model:AutoSynchronize -> Checked

    AutoSynchronize 属性是一个逻辑值,它决定了 Rational Rhapsody 是否会运行同步化操作。但该属性被选中时,那么每次关注 Rhapsody 时,Rational Rhapsody 都会运行同步化功能。启动的同步化可以与文件系统,视图或者 CM 档案上的文件保持同步化,这取决于环境。

  • ConfigurationManagement:General:UseUnitTimeStamps ->Checked

    UseUnitTimeStamps 属性允许用户去决定是否使用单元时间标记。

  • General:Model:DefaultDirectoryScheme -> PackageAsDirectory

    DefaultDirectoryScheme 属性由层级结构存储库功能所使用。该属性只能在项目层次上使用,但是激活或者激活 Unit Information for Package 上的 保存在子目录中复选框。可能的值如下所示:

    • Flat - 所有的单元都存储在项目 _rpy 目录之中。
    • PackageAsDirectory - 新的包(及其下级)都位于固定的位置处,上级包下面包含有不止一个层次。包子目录拥有它所包含的包相同的名字。
  • ConfigurationManagement:SCC:AddNewUnitsToArchiveDuringCheckin -> Checked

    该属性控制了添加至检出单元的新子单元,如果上级单元和其下级单元一起检入时,是否会在检入操作期间自动添加至您的 CM 档案之中。当该属性被设置成 Checked,添加至一个检出单元的新子单元,如果上级单元和其下级单元一起检入时,是否会自动会在检入操作期间添加至您的 CM 档案。

连接至档案

Connect to Archive 操作将工作区内的项目与一个 CM 档案联系了起来。另外,它永久性地将一个与档案相联系的属性设置为不管何时只要系统需要都可以内部引用,,以便于与 CM 工具交互。对于项目的生命周期您只需要执行这种操作一次。
在任意其他的 CM 操作之前,一个连接操作也可以激发该操作。

  1. 选中“File -> Configuration Items…”以打开下面的对话框窗口,并选择“Connect to Archive”。
图 28. Rhapsody 连接至 Archive
菜单与列表
菜单与列表
  1. 点击“OK”。
图 29. 确认连接
确认
  1. 这将会实现如以下所示的 SCC 属性“AuxProjPath” 与“ProjName”。不像在批处理模式下,它不会在源代码控件下生成任何东西。
图 30. 配置的 SCC 设置
项目配置列表
项目配置列表
  1. 为了向 ClearCase 添加 Rhapsody 单元列表,您要将“Configuration Items”窗口之中的视图更改为层级结构的,选择最上层的元素并点击“Add to Archive”。
图 31. 添加至档案
菜单与列表
菜单与列表
  1. 选中“Include Descendants”选项,输入一条注解并点击“OK”。
图 32. 向档案添加附件
复选框与注解
复选框与注解
  1. 点击确认对话框之中的“OK”。
图 33. 确认窗口
确认
  1. 您可以将添加至源控件的项目检入到 ClearCase。
图 34. 添加至源控件文件的确认
文件夹浏览器
文件夹浏览器

注意:
与维护模型内容无关的文件在用户工作区内将会标示为“视图独立文件”,并且不能添加至源控件之中。

DiffMerge 工具

Rational Rhapsody DiffMerge 工具会通过显示版本中的设计更改,并按照需要要合并单元,从而支持团队之间的合作。它会执行完整的比较,包括图形化元素,文本和代码之间的差异。

外部性差异/合并文本性工具

对于一些属性,Attributes 窗格之中提供的空间,并不足够很好地查看它们(例如,一个多行的文本框)。在这种情况下,您可以启动一个外部性文本工具。

  1. 按照外部性差异/合并文本性工具来设置 ClearCase ClearDiff 与 ClearDiffMrg。

注意: 如果您使用了提供的 Rhapsody 属性文件(查看章节“为用户安装设置文件”),您 并不 需要执行下面提到的配置步骤。

  1. 从“Configuration Items”窗口中打开 Rhapsody DiffMerge工具。
图 35. 打开 Rhapsody DiffMerge 工具
菜单与列表
菜单与列表
  1. 在 DiffMerge 工具中选择“View -> Preferences…”
图 36. 打开 DiffMerge Preferences
菜单
  1. 在 DiffMerge Preferences 中,展开 TextDiffMerge 类别并按照下面所示的来设置属性。
图 37. 设置 DiffMerge 属性
属性列表
属性列表

偏好将会存储在名为 diffmerge.ini 文件中的 Rhapsody 安装目录之中。

“TextDiffMerge”偏好的描述

  • BaseAwareAutoMergeInvocation ->cleardiff -out $output -base $sourceBase -abo -qui $source1 $source2

    指定怎样启动文本性差异和三个单元自动性合并的外部性文本 DiffMerge 工具支持基底意识(三个单元)检测机制。

  • BaseAwareAutoMergeableAttributes-> ItsBody

    指定一系列的属性名字,它包含文本值,并允许自动合并。属性的值可以是“All”(意为所有的属性都可以进行合并)以及“None”(意为不进行自动化的合并)。默认值“ItsBody”决定了在可能的时候,只有方法或者/和操作的实施才会被自动合并。

  • BaseAwareDiffInvocation ->cleardiffmrg -base $sourceBase $source1 $source2

    指定怎样在 Base Aware Diff 模式下启动支持基底意识比较的外部性 DiffMerge 工具之上。

  • BaseAwareDiffMergeInvocation ->$BaseAwareDiffInvocation -out $output

    指定怎样在 Base Aware Diff 模式下启动支持基底意识比较的外部性 DiffMerge 工具。

  • BaseAwareTextDiffMergeEnabled ->TRUE

    决定基底-意识(三个单元)的 DiffMerge 工具是否能够启动。

  • DiffInvocation ->cleardiffmrg $source1 $source2

    指定是否在 Diff 模式下 Base Aware DiffSpecifies 怎样启动外部性 DiffMerge 工具。

  • DiffMergeInvocation ->$DiffInvocation -out $output

    指定怎样在 Merge 模式下启动外部性 DiffMerge 工具。

  • MergeOutput ->$temp\out.txt

    指定合并结果将会写入的文本文件路径与名字。

为用户安装创建文件

在 Rhapsody 中,有许多的属性,支持工具与生成代码的定制。通过编辑 Rhapsody\Share\Properties 目录之中的 site.prp 文件,属性可以设置一次或者很多次。

在目前的情况下,我们会创建两个文件 site_RCC_Batch.prpsite_RCC_SCCI.prp,并将它们复制到 Rhapsody\Share\Properties 目录之下。根据使用的模式情况,有一个文件会包含在 site.prp 文件之中。

site_RCC_Batch.prpinclude 声明范例与 site_RCC_SCCI.prp 文件位于 site.prp 文件之中。

Include "site_RCC_Batch.prp"
Include "site_RCC_SCCI.prp"

下面显示了一个 site_RCC_Batch.prp 文件,并且可以下载得到:

图 38.“site_RCC_Batch.prp”文件的内容
“site_RCC_Batch.prp”文件的内容
“site_RCC_Batch.prp”文件的内容

注意:该文件可以通过 下载 获得。

下面显示了一个作为范例的 site_RCC_SCCI.prp 文件,并且可以通过下载获得。

图 39.“site_RCC_SCCI.prp”文件的内容
“site_RCC_SCCI.prp”文件的内容
“site_RCC_SCCI.prp”文件的内容

注意:该文件可以通过下载获得。

其他的问题

  • 代码生成性能改进

    如果您注意到了性能得到了降低,那么您可能需要更改临时文件的位置。为了更改临时文件的位置,您可以在 Rhapsody.ini 文件中更改以下的条目,如下所示:

    [CodeGen]
    TemporaryFilesDirectory = <the temporary code 
    generation files directory (for example, C:\TEMP)>

    当条目没有显现时,临时文件会在 .rpy 文件存储时在项目目录中得到创建。通过将临时文件的位置更改为 Rational ClearCase VOB 域之外的目录,代码生成性能将会得到改进。

  • 邪恶双婴问题

在 Rational ClearCase 之中,您应该避免对不同的元素使用相同的名字。这种情况会产生所谓的“邪恶双婴”问题。对于 Rational ClearCase 环境中所提到的邪恶双婴问题的解释和指南,您可以在 IBM 网站查看名 About Evil Twins 的技术性指南。

确认集成 - SCC 模型的范例场景

接下来的步骤展示了使用 SCC 模式的范例场景。site_RCC_SCCI.prp 文件用于该场景,而项目已经添加至源控件之中(查看章节“SCC 模式(SCC mode)”)。它是对在 ClearCase 版本控制下处理 Rhapsody 时的简介。为了模拟并发开发,会创建一个分支,而且我们会展示怎样合并从分支到主支的更改。

基本步骤

  1. 检出项目。如果您知道您要更改哪一部分的模型,那么您还可以有选择地检出特定的单元。在现在的情况下,我们检出所有的单元,并执行没有更改单元的取消检出操作。
图 40. 检出项目
内容菜单
内容菜单
  1. 选中“Descendants”复选框
图 41. 检出带有下级的项目
复选框和注解
复选框和注解
  1. 为了使对象模型图成为目标包的“Model1”部分,您可以将其移动到“Model1”包处。在文件层次的基础上,这意味着对象模型图的数据从 SampleProject.sbs 移动到了 Default.sbs 文件。这就简化了源控制下的工作方式,因为从现在开始,您只需要为内容及模型更改检出默认的包了。
图 42. 更改项目层次上的数据
模型浏览器
模型浏览器
  1. 通过添加一个包含一个属性及操作的类,我们来执行其他的更改操作。
图 43. 执行其他的更改操作
编辑器
编辑器
  1. 检入带有下级的项目并输入一条注解。
图 44. 检入项目
内容菜单
内容菜单
  1. 因为不是所有的单元都更改了,所以 ClearCase 会通知您它不会检入与其前代不同的版本。就算它没有标识为一个错误信息,它仅仅是告诉您执行一次取消检出操作,或者一个相似的检入操作。Rhapsody ClearCase 集成支持所有的操作。选择“OK”。
图 45. 预期的错误信息
错误信息
错误信息
  1. 感谢 autosynchronize 属性可以让您知道有一些单元发生了更改。在现在的情况下检入操作中包含的更改意味着检入文件现在是只读性质的。确定重新载入选择的项目,以将模型的状态和存储库中文件的状态保持同步化。选择所有发生变更的文件并点击“Load Selected Items”按钮。
图 46. 编辑文件的列表
菜单与列表
菜单与列表
  1. 选择检入对话框之中的“OK”。
图 47. 确认窗口
确认
  1. 由于前面遇到的错误与一些特定文件的相似检入操作相类似,所以我们会遇到以下的错误,就是完整的检入操作没有像预期的那样成功。它也是一条通知,告诉您我们要处理在下一步中没有检入的文件。点击“OK”。
图 48. 出错窗口
错误信息
  1. 现在我们处理的是执行取消检出操作时没有检入的文件。因为内容没有发生更改,所以我们并不需要创建这些文件的新版本。右击默认的构件并选择“Configuration Management”条目之下的“Undo Checkout”。
图 49. 取消检出操作
内容菜单
内容菜单
  1. 点击“OK”。
图 50. 取消检出确认操作
确认
确认

处理分支/并行开发

  1. 为了激活并行开发,需要在 ClearCase 中创建分支。在我们的范例之中,我们已经创建了一个名为“devbranch”的分支类型。我们还创建了名为“rhp_branch_view”的第二个视图,以处理该分支。该视图的配置如下面所示。
图 51. 并行开发的配置指定
视图的属性列表
视图的属性列表
  1. 第二个用户会在第二个视图“rhp_branch_view”中打开项目。在 Rhapsody 之中,在与分支视图相对应的路径之中打开检入项目。
图 52. 打开 Rhapsody 项目
带有文件夹结构的浏览器
带有文件夹结构的浏览器
  1. Rhapsody 会意识到项目位于源控件之下,并建议载入项目的状态。
图 53. 确认窗口
确认
确认
  1. 检出带有下级的项目并执行一些更改操作。
图 54. 执行其他的更改操作
编辑器
编辑器
  1. 然后要检入带有下级的项目,并在适当的时候执行“取消检出”操作(查看“Basic Steps”章节)。关闭 Rhapsody 中分支的“SampleProject”。
  2. ClearCase 版本树是查看并发文件的一种功能强大的工具。如果您
    1. 打开 ClearCase 浏览器,右击 Default.sbs 文件并选择“Version Tree”,您可以查看刚刚创建的分支。
图 55. ClearCase 版本树
版本树代表
版本树代表
  1. 现在我们继续处理主线(这里:版本 main/3)。因此我们会在原始视图中重新打开 Rhapsody 项目。
图 56. 重新打开原始的 Rhapsody 项目
带有文件夹结构的浏览器
带有文件夹结构的浏览器
  1. 检出带有下级的项目并执行其他的更改操作。
图 57. 执行实施之内的更改
编辑器
编辑器
  1. 检入 SampleProject。现在版本树如下所示:
图 58. 检入之后的版本树
版本树代表
版本树代表

实施与 Rhapsody DiffMerge 的合并操作

  1. 为了实现从分支到主线的更改,合并操作需要被调用。打开如以下所示的历史浏览器:
图 59. 打开历史浏览器
内容菜单
内容菜单
  1. 选择 工具菜单并打开版本树
图 60. 打开版本树
版本树代表
版本树代表
  1. 执行从分支到主线的合并操作。在分支“devbranch” 上右击版本并选择“Merge to…”
图 61. 初始合并
内容菜单
  1. 点击主线版本以将其作为目标图标实现的合并目标。
图 62. 选择合并目标
选项
选项
  1. 选择“Merge the element graphically”并点击“ OK”。
图 63. 图形化地合并元素
复选框与注解
复选框与注解
  1. 在信息弹出窗口中选择“Yes”。
图 64. 确认窗口
确认
确认
  1. 输入一条注解并点击“OK”。
图 65. 检出确认
复选框和注解
复选框和注解
  1. Rhapsody DiffMerge 配置板将会打开。为了检查所有的更改,您可以选择弹出对话框之中的“No”。
图 66. 检查所有的更改
更改的列表
更改的列表
  1. 点击“OK”。
图 67. 确认窗口
确认
确认
  1. 基底-意识合并窗口将会打开,并显示出差异之处。
图 68. DiffMerge 视图
更改的列表
更改的列表
  1. 在显示的差异上右击您就可以打开“Merge Text”配置板了。
图 69. 打开合并文本工具
内容菜单
  1. ClearCase DiffMerge 窗口就会打开了(如同在属性文件 site_RCC_SCCI.prp 中指定的那样)。
图 70. ClearCase DiffMerge Utlitity
编辑器
编辑器
  1. 选择适当的参与者(1,2 或者 3)来解决您的合并点。
图 71. 合并内容
编辑器
编辑器
  1. 保存结果并编辑 ClearCase DiffMerge 窗口。保存并退出 Rhapsody DiffMerge 配置板中的结果。
  2. 在合并确认弹出窗口中选择“Yes”。
图 72. 关闭 DiffMerge 配置板
版本树代表
版本树代表
  1. 如果您想要完成合并操作,通过右击合并结果并选择“Check In…”,您可能会检入合并的版本。您还可以选择稍后才进行检入。
图 73. 检入合并结果
内容菜单
  1. 合并操作会按照下面所示的那样显示在版本树形结构浏览器中:
图 74. 合并结果的版本树
版本树代表
  1. 将关注点更改为 Rhapsody 并载入合并结果。
图 75. 在 Rhapsody 中载入合并结果
结果列表
结果列表
  1. Rhapsody 将会显示合并所引入的更改。
图 76. 显示 Rhapsody 中的合并结果
编辑器
编辑器

总结

IBM Rational ClearCase 与 IBM Rational Rhapsody 现在会得到配置,以支持工作流程中的所有普通任务。如果有任意的集成确认操作失败的话,请切回章节“配置集成操作 ”并检查您的安装操作。

接下来用户应该浏览 IBM Rational Rhapsody Team Collaboration Guide,以了解怎样在 Rhapsody 中组织一个模型,以及怎样执行并发操作,以让一个团队的开发员最大程度地利用该工具集成。

Rhapsody 用户应该意识到仍然有场景,超出了该集成的范围,集成需要使用到 ClearCase Explorer。例如,将单元从不再需要的或者无意间创建的 ClearCase VOB 中删除掉。

除了将 Rhapsody 模型置于“源控件”之下,通过 IBM Rational ClearMake 之内的命令行调用 Rhapsody,将生成过程自动化也是可能的。它可以用以在构建过程之中从模型中生成 C/C++/Java 代码。

引用参考

接下来的文件在引用中用到或者作为其他类型的信息:

  1. IBM Rational Rhapsody Team Collaboration Guide V7.5(包含在 Rhapsody 安装文件之中)
  2. IBM® Rational® ClearCase® 7.X 与 Telelogic® Rhapsody®
  3. 关于 Rhapsody
  4. 关于 ClearCase

下载资源


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Rational
ArticleID=602144
ArticleTitle=Windows 版 IBM Rational Rhapsody 与 IBM Rational ClearCase 集成指南
publish-date=12162010