2015年8月28日 星期五

[TFS] 在Task board加入工作的新狀態(State)

 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 EditorWork Item TypesOpen 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/StatesTF400587:  這個項目定義了出現在待
處理項目 上的工作項目狀態。每個狀態都必須存在屬於下列所定義之分類的工作項目類型
(至少一個) :  '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有調整到「作用中」這個狀態,點選【請立即更正】或上方的【自訂欄】。


修正為以下:


費了一番功能終於完成了!







沒有留言:

張貼留言