在文章《协同建模&版本管理(基于EA)》一文中,我们提到EA有四种协同建模方式:
基于本地文件
基本共享文件仓库
基于模型数据库
基于云服务
今天我们主要介绍一下第二种方式 基于共享文件仓库进行建模协作。这种方式主要是对EA中各个模型包应用版本控制来实现。任何包都可以应用版本控制——无论是模型的根节点、视图还是子包。
Enterprise Architect支持模型中版本控制包的两种主要方式:
1、 Model Baselines模型基线:这是EA内置的功能,可以在模型存储库本身中存储包的时间点快照。
2、Version Control Integration版本控制集成: EA支持与第三方版本控制系统的集成,它支持的版本控制工具包括Subversion、CVS、Microsoft的TFS和SCC兼容工具,如Accurev和Visual
Source Safe。
接下来我们主要看一下如何通过SVN实现模型的版本控制。
EA +SVN协同建模
基于SVN进行协同建模这种方式包含服务器端和客户端。服务器安装版本控制服务器组件存放文件仓库。用户在客户端EA中通过版本控制系统连接访问服务器上的文件仓库。
EA +SVN版本控制系统组成:
部分 |
说明 |
版本控制服务器 |
安装基于文件的版本控制系统SVN管理端,配置版本控制服务。 |
版本控制客户端 |
安装SVN客户端,安装EA,建立工作副本文件夹,连接服务器,配置EA版本控制
。 |
安装软件:
VisualSvn Server svn服务器
Tortoise Svn svn客户端
Enterprise Architect
操作指南:
基于EA+SVN协作如下工作场景
在服务器建立模型文件仓库,
管理员在EA客户端中把模型提交到文件仓库管理起来,
多人进行并发建模:
其他用户可以check out 一个 package,编辑,check in;此时其他用户对锁定的package无法编辑,只能阅读。
如果一个用户正在阅读一个package,check out 的用户 check in 了此package,则提醒更新。
可以把一个模型文件仓库备份, |
我们进行如下操作:
操作1: SVN服务器配置
1. 下载安装软件
现在Subversion已经迁移到apache网站上了,官网下载地址:http://subversion.apache.org/packages.html
我们一般是VisualSVN server 服务端和TortoiseSVN 客户端搭配使用
VisualSVN可以极大地简化Subversion服务器的安装,配置和管理。
2. 创建一个仓库
3. 创建版本控制项目(或用于特定项目的模块或文件夹)
4. 配置用户ID和密码
操作2:SVN客户端配置
1、安装客户端SVN软件
我们选择TortoiseSVN客户端,下载安装
2、建立工作副本文件夹,连接SVN服务器
当版本库初始化完毕后,还只是一个空目录,里面没有任何内容。所以需要先在本地创建并制作初始的设计图,然后将其提交到版本库中。这个工作基本上只需要做一次。
在这个本地空间,用户可以用SVN检出已有的ea项目到新建的EA工作空间
操作3、设置EA版本控制
在本地创建一个空的eap文件,右击Model——Package Controll——Version
Controll Settings
操作4、在EA中进行基于SVN的版本管理
1、添加分支到版本控制
右键点击“Project Browser”中本地副本的包,在弹出菜单中,选择“Package Control
-> Add Branch to Version Control”,将本地内容提交版本控制。
在“版本控制”工作副本文件夹中创建多个子文件夹,然后导出所选模型分支中的所有“包”。系统根据程序包GUID为XMI文件生成文件名。
注意:
在选择此命令之前,必须在模型中定义用于此操作的版本控制配置
在模型根节点上调用此命令时,会将版本控制应用于模型中的每个Package
版本提交成功后,可以看到在“Browser"窗口中,节点上已经被明显地添加了加锁的标记。这表明该节点内的Package,已经纳入版本控制管理了。
这个时候不能再进行操作,如果添加新元素会显示如下提示:
右键单击选择Package Control > Check Out Branch 之后,节点上没有了锁的标记。
2、导出模型分支
导出EAB文件,项目组其他成员导入用。右键单击选择Package Control > Export
as Model Branch
导出EAB文件,项目组其他成员可以导入用。文档名称可以自定义。
3、导入模型分支
选中一个包右键单击Package Control > Import a Model Branch
4、其他版本控制操作
选中一个包右键Package Control 右侧有很多菜单项,具体功能如下表。
操作 |
说明 |
Check
In Branch
签入分支
|
当前所选模型分支中包含的签入模型包(即所选模型包及其所有子模型包)。
“选择要签入的模型包”对话框列出了该分支中已签出的所有版本控制的模型包。您可以在列表中选择包,然后提交以进行签入。
您还可以选择在对版本控制提交新修订后将模型包保留为未签出状态。 |
Check
Out Branch
签出分支
|
递归检出当前所选模型分支中包含的所有模型包(即所选模型包及其所有子模型包),这些包是受版本控制的并已签入。 |
Check
In
签入
|
将当前所选模型包的新修订提交到版本控制存储库,并锁定该模型包以免进一步编辑。
仅适用于您自己签出的包。 |
Check
Out签出 |
将当前选择的模型包与版本控制存储库中的最新修订版进行同步,然后解锁该模型包以进行编辑。
仅适用于尚未签出的包(以及尚未签出其关联模型包文件的包)。 |
Undo
Check Out
撤消签出
|
将选定的程序包还原到版本控制存储库中的最新版本,并锁定该包以免进一步编辑。
|
Put
Latest
更新到最新
|
将当前选定的模型包的新修订提交到版本控制存储库,同时使模型包保持check out 状态。
这等效于check in包并立即再次将其check out。
仅适用于自己签出的模型包。 |
Get
Latest
获取最新
|
符合当前适用案例的工具应支持其他适用案例所需的所有扩展单元,这实际上意味着支持MARTE的所有必要特性。
|
Get
All Latest
获取所有最新
|
将项目中的所有版本控制包更新为从版本控制检索到的最新版本。
仅更新当前签入的模型包。
检索到最新修订后,系统将扫描所有受控程序包,并通过将程序包与其XMI 1.1文件进行比较来修复所有丢失的交叉引用。
如果XMI中的交叉引用信息与模型不匹配,则系统使用XMI中的信息更新模型,并将此更新记录在“系统输出”窗口中。
您可以通过选择“系统输出”窗口中的条目并使用上下文菜单选项“回滚更新”(如果选择了多个条目,则使用“回滚所选更新”)来回滚此类更新。
• 关闭模型会清除“系统输出”窗口中的条目
• 回滚更新时,也会清除“系统输出”窗口中的条目 |
Scan
XMI and Reconcile Model
扫描XMI和协调模型
|
扫描与每个项目的受控程序包相关的程序包XMI文件,并恢复在项目中检测到缺少的任何图表对象或交叉引用。
此功能在团队环境中非常有用,在团队环境中,每个用户维护自己的模型数据库的私有副本(即多个私有项目文件),并且通过使用受控程序包传播模型更新。当模型托管在所有团队成员都可以访问的单个共享数据库中时,它没有任何好处。
将每个受控程序包与其关联的XMI文件进行比较,如果模型中的交叉引用信息与XMI不匹配,则系统使用来自XMI的信息更新模型,并将更新记录在“系统输出”窗口中。
您可以通过右键单击“系统输出”窗口中的条目并选择“回滚更新”选项(如果选择了多个条目,则选择“回滚选定的更新”)来回滚此类更新。
关闭模型会清除“系统输出”窗口中的条目;当您回滚更新时,窗口中的一个条目也会被清除。
此功能作为“获取所有最新”操作的一部分自动调用。
在使用私有模型部署的环境中工作并且您的模型包含大量交叉包引用时,建议您在重新导入受控包之后不时调用“扫描XMI和协调模型”
-例如,在使用“获取最新信息”更新多个模型包之后-或在执行了许多模型包检出之后。
通常,避免在未提交模型更改的情况下运行“扫描XMI和协调模型”。通常,您:
• Check out 一些package
• 调用“扫描XMI和协调模型”
• 进行修改
• 提交所有未完成的更改,然后再签出更多模型包并再次运行“扫描XMI和协调模型”
|
File
Properties文件属性 |
显示与与当前所选模型包关联的XMI导出文件有关的版本控制属性;这也可以确定谁签出了包。 |
File
History
文件历史
|
显示当前所选模型包的更改历史记录信息。
恢复或检出该模型包的先前版本。 |
Compare
with Controlled Version
与受控版本比较
|
将当前选择的程序包与从版本控制中检索到的相关XMI文件的最新版本进行比较。 |
Add
Branch to Version Control
将分支添加到版本控制
|
只需一次操作,即可将版本控制应用于选定模型分支内的所有模型包。
在这种情况下,模型分支是当前在“浏览器”窗口中选择的“包”,其中包含所有包。 |
Export
as Model Branch
导出为模型分支
|
从您自己的模型私人副本中导出新创建的模型分支。
|
Import
a Model Branch
导入模型分支
|
检索模型分支并将其导入到源模型或另一个模型中。
|
Get
Package
取得包
|
访问版本控制存储库中模型中当前不可用的模型包。
|
Re-synch
Status With VC Provider
与VC提供程序重新同步状态
|
在不执行XMI导入或导出的情况下,更新为项目中的选定程序包记录的版本控制状态值,以使其与版本控制提供程序报告的值相匹配。
当项目中记录的程序包的版本控制状态与版本控制提供程序报告的版本控制状态不同步时,请使用此功能。 |
Version
Control Settings
版本控制设置
|
显示“版本控制设置”对话框。
|
火龙果软件提供团队协同建模环境的咨询服务,可以帮助用户搭建完整的团队建模和MBSE解决方案,详细信息请见http://tool.uml.com.cn/ToolsEA/introduce.asp
如果您希望了解更多信息:
本文使用的建模工具为EA,可以下载试用版http://tool.uml.com.cn/ToolsEA/download.asp
后记
希望您读了此文后有所受益。
如果您有经验乐于分享,欢迎投稿给我们。
如果您对我们的培训、咨询和工具感兴趣:
|