1.TFS简介

TFS = Team Foundation Server,TFS是微软于2005年随同Visual Studio 2005一起发布的一款企业级的团队项目控制、管理、跟踪、分析软件,前身是Visual Source Safe。在2008年随同Visual Studio 2008发布了Team Foundation Server 2008,2010年随同Visual Studio 2010发布了Team Foundation Server 2010。本文以TFS 2008为主体来介绍一下自定义流程的设计过程,下次将使用最新的TFS 2010。

082710_1318_TFS20081

TFS 2008 体系结构

TFS的主要功能:

  • 版本管理:工作区(workspace)、变更集(changeset) 、标签
  • 并行开发支持:多点(checkout)、分支与合并 、搁置集(shelveset)
  • 强化过程管理:链接工作项、静态代码分析、代码覆盖率
  • 自动化构建
  • 完善的权限管理
  • 支持分布式开发

1.自定义流程简介与设计工具

2.1、系统需求

详情见http://www.microsoft.com/downloads/zh-cn/details.aspx?FamilyID=3660cacf-f077-44d3-a9d9-97e801da2035#SystemRequirements

2.2、自定义流程

流程是一组或几组动作的集合体,在软件开发领域中往往用来体现一套系统的设计、开发、维护的过程。安装了TFS插件后就可以查看微软内置的一些流程:

打开VS 2008,点击【团队】菜单下面的【Team Foundation Server设置】à【过程模板管理器】:

082710_1318_TFS20082

2.2.2、选择一个过程模板,以CMMI 4.2为例,点击【下载】:

082710_1318_TFS20083

2.2.3、选择一个文件夹,点击【保存】,然后关闭过程模板管理器:

082710_1318_TFS20084

2.2.4、通过点击【工具】菜单中的【Process Editor】à【Process Templates】à【Open Process Templates】,打开刚才已下载的CMMI 4.2过程模板:

082710_1318_TFS20085

2.2.5、定位到CMMI 4.2的文件夹,找到【Process Template】xml文件,点击打开:

082710_1318_TFS20086

2.2.6、在【Work Item Type Definitions】中点击【bug】选项:

082710_1318_TFS20087

2.2.7、在【Workflow】选项卡中看以看到内置的bug流程:

082710_1318_TFS20088

2.2.8、下面我们要做的就是设计一套自己的流程,回到【Work Item Type Definitions】选项卡中,点击【New】创建一个工作项类型"客服记录",【Copy From】指的是可以从现有的工作项模板中复制,这里不需要:

082710_1318_TFS20089

2.2.9、在【Fields】选项卡中点击【New】添加一个字段:

082710_1318_TFS200810

字段的作用是记录流程中需要处理的内容,有多少内容就添加多少字段。

【Name】最好用中文,后续的判断验证提示也是中文;

【Type】标记该字段的数据类型,一般描述性信息为String,日期类用DateTime,特殊类型设置为特殊类型,如History、HTML等,这里和数据库中的数据类型差别很大;

【RefName】标记该字段的引用名称,在程序中需要处理,命名规则为:命名空间.名称,如MSS.Title,这里建议用英文。TFS内置了两个命名空间:System和Microsoft,你也可以使用自定义的命名空间。

注意:【Name】、【RefName】在TFS全局变量中必须是唯一的,否则会发生错误。TFS中所有的全局变量名存储在数据库"TfsWorkItemTracking"的"Fields"表中:

SELECT * FROM dbo.Fields

082710_1318_TFS200811

因为【Name】、【RefName】具有唯一性约束,所以在命名时要遵循如下重要规则:

1)【Name】唯一,【RefName】唯一;

2)若【RefName】使用了TFS内置的名称,则【Name】也必须对应。例如:上述我们使用了"System.Title"作为【RefName】名称,则【Name】也必须为TFS内置的【Name】,即"标题",【Type】也必须为TFS内置的【Type】。

【Help Text】是对该字段的说明性信息。

2.2.10、在【Rules】选项卡中点击【New】添加一些规则

082710_1318_TFS200812

常见的有:

【ALLOWEDVALUES】定义该字段允许接受的值,一般用于数量较少的下拉列表;

【DEFAULT】定义该字段的默认值,如日期默认为当天;

【READONLY】定义该字段为只读;

【REQUIRED】定义该字段为必填项;

【WHEN】、【WHENNOT】根据条件设定规则。

2.2.11、在【Layout】选项卡中设计流程界面:

082710_1318_TFS200813

一般的,首先添加一个【Group】,下面放置一个【Column】,【Column】必须要设置宽度。宽度可以为固定值或百分比,建议使用百分比,以更好的适应不同分辨率的显示器。

在【Column】下面放置一个或多个【Control】:

082710_1318_TFS200814

【FieldName】来源于前面定义的字段,此项必填;

【Label】设置一个希望显示的名称;

【LabelPosition】设置控件中标签的位置,根据需求进行设置,一般默认为Left;

【Type】设置控件的类型,一般单行文本类控件设置为"FieldControl",日期类设置为"DateTimeControl",多行文本类设置为"HTMLFieldControl",TFS内置的历史记录对应为"WorkItemLogControl",TFS内置的附件信息对应为"AttachmentsControl"。

点击【Preview Form】预览效果:

082710_1318_TFS200815

设置TabGroup时有些问题需要注意:

082710_1318_TFS200816

如果想将一个TabPage设置为充满其父容器,除了将【Control】的"Dock"属性设置为Fill外,还需要将"LabelPosition"属性设置为Top,否则实际流程中无法充满父容器。

预览效果:

082710_1318_TFS200817

2.2.12、在【Workflow】中设计流程。

082710_1318_TFS200818

【State】表示流程中的一个状态,一个流程至少要有一个状态;

【Transaction Link】表示一个事务,它负责连接各个状态。

双击【Transaction】或在其上面点击右键,选择【Open Details】可以进行设置:

在【Transaction Detail】选项卡中可以设置该事务的起始和终止状态,有权限操作的用户和组;

082710_1318_TFS200819

在【Reasons】选项卡中设置启动该事务的原因,一个事务至少要有一个默认原因;

082710_1318_TFS200820

在【Actions】选项卡中设置该事务启动时执行的动作,不必填,但名称在当前流程中须唯一

082710_1318_TFS200821

在【Fields】选项卡中设置启动该事务时需要处理的字段:

082710_1318_TFS200822

可以修改状态的名称,双击或在其上点右键,选择【Open Details】可以对状态进行设置:

082710_1318_TFS200823

点击【New】对该状态下的字段设置一些规则:

082710_1318_TFS200824

该方法较为常用,在每个状态控制哪些字段为必填、只读等属性时很方便。若某些字段在多个状态中被统一约束,则在【Fields】选项卡中设置约束较好。

2.2.13、导入、导出工作项类型定义

当流程设计完毕时,可以选择导入、导出操作,方便流程的重用。

导入方法是,依次点击【工具】菜单中的【Process Editor】à【Work Item Types】à【Import WIT】:

082710_1318_TFS200825

输入待连接的TFS Server的地址,点击【Connect】:

082710_1318_TFS200826

分别选择待导入的工作项类型定义文件(xml格式)和目标项目(若无则创建一个项目),点击【OK】:

082710_1318_TFS200827

在团队资源管理器中,添加刚才导入的项目,在【工作项】上点击右键,点击【添加工作项】,会看到我们自定义的工作项类型:

082710_1318_TFS200828

最终效果图:

082710_1318_TFS200829

导出工作项类型定义过程与此类似,故不再重复。

  1. 辅助工具

3.1、使用命令行管理工作项

安装了Team Foundation Server Power Tools - October 2008后,有一个命令行工具,TFPT.exe,默认存放于C:\ProgramFiles\Microsoft Team Foundation Server 2008 Power Tools,TFS 2008未直接提供删除工作项、工作项类型的方法,使用该命令行可以做到。

首先打开VS 2008的命令行工具:

警告:该命令行操作不可撤回,且需要TFS管理员角色,请仔细核对所做的每一步操作!

082710_1318_TFS200830

如果您使用的操作系统是Windows Vista/2008/7/2008 R2,则请右键选择【以管理员运行】打开该命令行。

删除一个或多个工作项的方法:

tfpt destroywi /server:devserver /workitemid:2947,2948,2949,2950 /noprompt

说明:

destroywi指删除工作项;

/server指TFS所在的服务器机器名,注意此处不能使用IP地址;

/workitemid指待删除的工作项ID,若想删除多个则用逗号分隔;

/noprompt指删除操作不进行提示,方便批量删除。

删除一个工作项类型及其下属所有工作项的方法:

tfpt destroywitd /server:devserver /project:mkeRP_YXA /workitemtype:常见问题 /noprompt

说明:

destroywitd指删除工作项类型;

/server指TFS所在的服务器机器名,注意此处不能使用IP地址;

/project指待删除的工作项类型所在的项目名称;

/workitemtype指待删除的工作项类型名称;

/noprompt指删除操作不进行提示,方便批量删除。