ALM Team Foundation Server
▌背景
在TFS Features (功能、需求 … )的Task Board上已預先定義了一些工作的狀態(State)供使用,例如:已提議、作用中、已解決 … 等。 本篇將說明如何在Task Board加上新的State,以符合客製化的工作流程。
此例將實作: 提需求→SA→SD→開發→測試→結案 的Task Board。
l Windows2008 R2
l Team Foundation
Server 2013 Update 5
l Visual Studio 2013
Update 5
▌Steps
步驟可分為
1.
在TFS Progress
Config加入新的State定義。
2.
在「需求」這個Work
Item Type (本例為「需求」),更新流程。
3.
在Web入口網站的Task Board (工作面板)上加入新的State。
▋查看修改前的WIT定義
在Visual Studo開啟工具→【Process Editor】→【Work Item Types】→【Open WIT from
Server】
在Workflow可看到目前的State和流程。 右上方的【View XML】僅能看XML,無法修改。
看到這邊大概知道我們目前要進行的就是在WIT的流程上加上新的State,並和其他State產生關聯。 雖然可以直接從Process Editor直接用IDE做調整,不過光看這個圖就很頭大了,我建議還是先編輯XML (複製其他State資訊再調整)會比較快。
▋Export Process
Config
先從比較單純的Process Config XML下手,利用以下指令匯出 Process Config。
PS. /p後面是帶Team project名稱。
witadmin
exportprocessconfig /collection:http://XXX:8080/tfs/DefaultCollection
/p:ForJB /f:"
D:\Temp\TFS\Config.xml"
|
|
|
備份並開啟匯出的XML, 找到要調整的WIT設定;
此例為
<RequirementBacklog
category="Microsoft.RequirementCategory"
parent="Microsoft.FeatureCategory" pluralName="需求" singularName="需求">
在<States></States>裡面加入要新增的State。
原始:
<States>
<State type="Proposed"
value="已提議" />
<State type="InProgress"
value="作用中" />
<State type="InProgress"
value="已解決" />
<State type="Complete"
value="已關閉" />
</States>
|
調整為:
<States>
<State type="Proposed"
value="已提議" />
<State
type="InProgress" value="SA" />
<State type="InProgress"
value="SD" />
<State type="InProgress"
value="Development" />
<State type="InProgress"
value="Testing" />
<State type="InProgress"
value="已解決" />
<State type="Complete" value="已關閉" />
</States>
|
參考畫面
更新Process Config後,先別急著匯回去TFS,否則會出現以下錯誤; 後面步驟再一併匯入。
下列項目包含錯誤:
RequirementBacklog/States。TF400587:
這個項目定義了出現在待
處理項目 上的工作項目狀態。每個狀態都必須存在屬於下列所定義之分類的工作項目類型
(至少一個) 中: 'RequirementBacklog/States'。下列狀態不存在任何工作項目類型中:
SA, SD, Development,
Testing。
▋Export WIT description
接著我們要調整”需求”這個WIT的描述XML; 先確定一下WIT的名稱:
witadmin
listwitd /collection:http://XXX:8080/tfs/DefaultCollection /p:ForJB
|
匯出WITD
witadmin exportwitd /collection:http://tp-jblin-nb:8080/tfs/DefaultCollection
/p:ForJB /f:"D:\Temp\TFS\WITD.xml" /n:需求
|
▋Update the WIT
開啟上面匯出的WITD.xml ;
1.
調整State
找到<WORKFLOW><STATES> … </STATES></WORKFLOW>
複製 (或剪下) <STATE value="作用中"> 標籤包含的XML內容,
並修改 <STATE value="作用中"> 將"作用中"改為:
SA
SD
Development
Testing
2.
調整 Transition
找到<WORKFLOW> <TRANSITIONS> … </TRANSITIONS></WORKFLOW>
這個TAG下描述的是每個State的關聯。 例如:
<TRANSITION from="已解決"
to="已關閉">
<REASONS>
<DEFAULTREASON value="驗證測試成功"
/>
</REASONS>
<FIELDS>
<FIELD refname="Microsoft.VSTS.Common.ClosedBy">
<ALLOWEXISTINGVALUE />
<COPY from="currentuser" />
<VALIDUSER />
</FIELD>
<FIELD refname="Microsoft.VSTS.Common.ClosedDate">
<SERVERDEFAULT from="clock" />
</FIELD>
</FIELDS>
</TRANSITION>
|
表示我們可以將工作的狀態由「已解決」直接改為「已關閉」,而預設的原因是"驗證測試成功"。
如果沒有定義此關聯,在管理工作時,便無法將「已解決」的工作狀態直接改為「已關閉」。
在此範例我們將調整為以下關聯 ~ (橘色為新增的部分)
調整後的XML:
▋Import the Process config and WITD
接下來按照以下順序匯回兩個修改後的XML:
witadmin importwitd /collection:http://XXX:8080/tfs/DefaultCollection
/p:ForJB /f:"D:\Temp\TFS\WITD.xml"
witadmin importprocessconfig
/collection:http://XXX:8080/tfs/DefaultCollection
/p:ForJB /f:"D:\Temp\TFS\Config.xml"
|
如果再回到Process Editor看,會發現已經更新了整個流程囉!
這時候如果需要加上欄位,就可以直接在這邊調整了。
▋更新Task Board的顯示欄位
終於到最後一個步驟了 …
打開TFS專案入口網站,進到需求的Task Board,你可能會發現以下錯誤訊息:
這是因為這次的State有調整到「作用中」這個狀態,點選【請立即更正】或上方的【自訂欄】。
修正為以下:
費了一番功能終於完成了!