设计TFS 2008自定义流程
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。
图1.1 TFS 2008 体系结构
TFS的主要功能:
版本管理:工作区(workspace)、变更集(changeset) 、标签
并行开发支持:多点(checkout)、分支与合并 、搁置集(shelveset)
强化过程管理:链接工作项、静态代码分析、代码覆盖率
自动化构建
完善的权限管理
支持分布式开发
自定义流程简介与设计工具
2.1、系统需求
软件 | 建议版本 |
操作系统 | Windows Server 2003 R2 SP2 Enterprise Edition x86 |
开发环境 | Visual Studio Team System 2008 SP1 x86 |
数据库 | SQL Server 2008 SP1 Enterprise Edition x86 |
TFS | Team Foundation Server 2008 SP1 x86 |
TFS插件 | Team Foundation Server Power Tools - October 2008 x86 |
本文假定您已经安装并配置好了上述环境,如果您有任何疑问,请参阅微软官方文档。
2.2、自定义流程
流程是一组或几组动作的集合体,在软件开发领域中往往用来体现一套系统的设计、开发、维护的过程。安装了TFS插件后就可以查看微软内置的一些流程:
2.2.1、打开VS 2008,点击【团队】菜单下面的【Team Foundation Server设置】à【过程模板管理器】:
2.2.2、选择一个过程模板,以CMMI 4.2为例,点击【下载】:
2.2.3、选择一个文件夹,点击【保存】,然后关闭过程模板管理器:
2.2.4、通过点击【工具】菜单中的【Process Editor】à【Process Templates】à【Open Process Templates】,打开刚才已下载的CMMI 4.2过程模板:
2.2.5、定位到CMMI 4.2的文件夹,找到【Process Template】xml文件,点击打开:
2.2.6、在【Work Item Type Definitions】中点击【bug】选项:
2.2.7、在【Workflow】选项卡中看以看到内置的bug流程:
2.2.8、下面我们要做的就是设计一套自己的流程,回到【Work Item Type Definitions】选项卡中,点击【New】创建一个工作项类型"客服记录",【Copy From】指的是可以从现有的工作项模板中复制,这里不需要:
2.2.9、在【Fields】选项卡中点击【New】添加一个字段:
字段的作用是记录流程中需要处理的内容,有多少内容就添加多少字段。
【Name】最好用中文,后续的判断验证提示也是中文;
【Type】标记该字段的数据类型,一般描述性信息为String,日期类用DateTime,特殊类型设置为特殊类型,如History、HTML等,这里和数据库中的数据类型差别很大;
【RefName】标记该字段的引用名称,在程序中需要处理,命名规则为:命名空间.名称,如MSS.Title,这里建议用英文。TFS内置了两个命名空间:System和Microsoft,你也可以使用自定义的命名空间。
注意:【Name】、【RefName】在TFS全局变量中必须是唯一的,否则会发生错误。TFS中所有的全局变量名存储在数据库"TfsWorkItemTracking"的"Fields"表中:
SELECT * FROM dbo.Fields
因为【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】添加一些规则:
常见的有:
【ALLOWEDVALUES】定义该字段允许接受的值,一般用于数量较少的下拉列表;
【DEFAULT】定义该字段的默认值,如日期默认为当天;
【READONLY】定义该字段为只读;
【REQUIRED】定义该字段为必填项;
【WHEN】、【WHENNOT】根据条件设定规则。
2.2.11、在【Layout】选项卡中设计流程界面:
一般的,首先添加一个【Group】,下面放置一个【Column】,【Column】必须要设置宽度。宽度可以为固定值或百分比,建议使用百分比,以更好的适应不同分辨率的显示器。
在【Column】下面放置一个或多个【Control】:
【FieldName】来源于前面定义的字段,此项必填;
【Label】设置一个希望显示的名称;
【LabelPosition】设置控件中标签的位置,根据需求进行设置,一般默认为Left;
【Type】设置控件的类型,一般单行文本类控件设置为"FieldControl",日期类设置为"DateTimeControl",多行文本类设置为"HTMLFieldControl",TFS内置的历史记录对应为"WorkItemLogControl",TFS内置的附件信息对应为"AttachmentsControl"。
点击【Preview Form】预览效果:
设置TabGroup时有些问题需要注意:
如果想将一个TabPage设置为充满其父容器,除了将【Control】的"Dock"属性设置为Fill外,还需要将"LabelPosition"属性设置为Top,否则实际流程中无法充满父容器。
预览效果:
2.2.12、在【Workflow】中设计流程。
【State】表示流程中的一个状态,一个流程至少要有一个状态;
【Transaction Link】表示一个事务,它负责连接各个状态。
双击【Transaction】或在其上面点击右键,选择【Open Details】可以进行设置:
在【Transaction Detail】选项卡中可以设置该事务的起始和终止状态,有权限操作的用户和组;
在【Reasons】选项卡中设置启动该事务的原因,一个事务至少要有一个默认原因;
在【Actions】选项卡中设置该事务启动时执行的动作,不必填,但名称在当前流程中须唯一:
在【Fields】选项卡中设置启动该事务时需要处理的字段:
可以修改状态的名称,双击或在其上点右键,选择【Open Details】可以对状态进行设置:
点击【New】对该状态下的字段设置一些规则:
该方法较为常用,在每个状态控制哪些字段为必填、只读等属性时很方便。若某些字段在多个状态中被统一约束,则在【Fields】选项卡中设置约束较好。
2.2.13、导入、导出工作项类型定义
当流程设计完毕时,可以选择导入、导出操作,方便流程的重用。
导入方法是,依次点击【工具】菜单中的【Process Editor】à【Work Item Types】à【Import WIT】:
输入待连接的TFS Server的地址,点击【Connect】:
分别选择待导入的工作项类型定义文件(xml格式)和目标项目(若无则创建一个项目),点击【OK】:
在团队资源管理器中,添加刚才导入的项目,在【工作项】上点击右键,点击【添加工作项】,会看到我们自定义的工作项类型:
最终效果图:
导出工作项类型定义过程与此类似,故不再重复。
辅助工具
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管理员角色,请仔细核对所做的每一步操作!
如果您使用的操作系统是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指删除操作不进行提示,方便批量删除。
小结:
本文对TFS 2008的自定义流程的设计进行了简单的介绍,主要是一些基本的操作和注意事项。尤其是关于字段的命名,当时我花了很长时间排查错误,希望能让遇到类似问题的朋友少走弯路。TFS自定义流程非常灵活,可以方便的对开发、测试进行驱动,提高工作效率和规范化程度。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库