Friday, August 28, 2015

[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 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有調整到「作用中」這個狀態,點選【請立即更正】或上方的【自訂欄】。


修正為以下:


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







No comments:

Post a Comment