How to customize process template in Team System

Team System 除了提供原有的MSF Agile 和 MSF for CMMI process improvement 兩種template, 還可以讓user 自己customize process template. 但是在 Team System 中, process template都是以 xml 格式的檔案來儲存, 而xml 原本就不是設計給人閱讀的檔案, 所以customize process template就變成不是那麼直觀的工作. 但其實了解了process template的結構後, customize team project template也不是一件非常困難的事. 以下就以一個簡單的例子來說明如何customize 一個task的工作流程.

1.    首先, 在連上team foundation server (以下簡稱TFS) 後, 在Team Explorer裏的TFS名稱上滑鼠右鍵, 選擇 Team Foundation server Settings -> Process Template Manager.

2.    接著, 在Process Template Manager按Export把現有的template export到local machine. 在這個例子裏我選擇export MSF Agile.

View Picture

3.    將Export出來的folder設成可讀寫以便等下編輯process files.  

View Picture

4.    選擇我要customize的file. 在這裏我選擇customize “Task” 的工作流程Task.xml. 這個檔案位於Currituck\TypeDefinitions\:

View Picture

5.    打開編輯器編輯task.xml可以發現task process template裏定義了三個主要的區塊: Fields, Workflow和Form. Fields這個區塊主要定義了task這個work item type在表單裏所有的field, 包括這個task的名稱, 什麼時候開啟, 要assign給那一個team member…等等, 所以task裏需要定義的值都是一個field. Workflow這個區塊定義了task這種work item的工作流程, 例如開啟後下一個state是什麼, resolve, 或close…等等. From這個區塊則定義了task要怎麼呈現在表單裏的格式, 例如title要多長多寬等.

View Picture

6.    有了對task process template 結構初步的了解, 接下來就可以開始customize. 原先內建於TFS裏的task 工作流程, state只有active和closed兩種, 現在我希望能多加一個resolved的state, 可以讓create task的team member有review的機會再去close這個task. 所以首先我必需要在Fields裏增加”Resolved Date”和”Resolved By”這兩個field就如同active state需要”Activated Date”和”Activated By”這兩個field.

View Picture

7.    接下來要增加一個”Resolved” state. 請注意AssignedTo, ResolvedDate和ResolvedBy這三個fields在這裏是required的.

View Picture

8.    接下來要將原本的流程從active直接到closed變成active->resolved->closed. 如同下圖所示:

View Picture

View Picture

9.    完成後save並於MetaData.xml及MethodologyTemplate.xml兩個檔案中將<name>的值customize並save.

10.  於Process Template Manager中import customized的template. Import過程TFS會validate template是不是有不合語法的錯誤, 有的話可以依照提示的訊息修正.

11.  完成import後利用customized的template create一個新的team project. 我們可以發現state field多了resolved, task process也變成active -> resolved -> closed.

View Picture

View Picture