設計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自定義流程非常靈活,可以方便的對開發、測試進行驅動,提高工作效率和規范化程度。

浙公網安備 33010602011771號