はじめに
本稿は、前後編に分かれたTeam Foundation Server(以下、TFSと略します)の作業項目のカスタマイズ方法を紹介する後編に当たるものです。前編では作業項目の定義情報がどのように構成されているかを確認し、後編ではその内容に基づいて実際に作業項目のカスタマイズを行っていきます。本稿は前編の内容を読んで頂いていることが前提となりますので、ぜひ「前編」を先に確認しておいてください。
対象読者
- .NET Frameworkを利用した開発プロジェクトに携わっている人
- Visual Studio Team System 2008に興味がある人
- Team Foundation Serverの作業項目のカスタマイズに興味がある人
必要な環境と準備
前編で解説している内容と同様になりますので、「前編」の必要な環境と準備の部分を参照してください。
作業項目の定義情報をカスタマイズする
前編では、作業項目定義を構成している中身について確認してきました。ここからは、実際にカスタマイズしていってみましょう。
前編でも確認しましたが、今回はMSF for Agileプロセステンプレートのタスク作業項目に不足しているということにした、予定作業時間、レビュー予定日、レビューア、レビュー実績時間を追加する作業を行います。
イメージを分かりやすくするために、初めに図を確認しておきます。今回のゴールは図1のレイアウトの作業項目定義を作成することです。
また、状態および状態遷移として、図2に示すように新しく「中断」という状態を作成し、アクティブ状態から相互に状態遷移できるように定義を追加します。
フィールド定義
まずはフィールドを追加していきましょう。前回の続きの場合、「デスクトップ」に保存してある「MyTask.xml」ファイルをメモ帳などのテキストエディタで開いてください。前回のファイルがない場合には、添付のサンプルを解凍し、作業前フォルダ内にある「MyTask.xml」ファイルを「デスクトップ」にコピーした後に、テキストエディタで開いてください。ファイルを開くと、先頭行から数行がリスト1のようになっているはずです。
<WITD application="Work item type editor" version="1.0"> <WORKITEMTYPE name="タスク"> <DESCRIPTION>MSF Agile ライフサイクルをとおして、タスクをトラックするための情報を含んでいます</DESCRIPTION> <FIELDS> <FIELD name="ID" refname="System.Id" type="Integer"> </FIELD> ・・・
フィールドを追加する前に、まずはこの作業項目定義にきちんと名前をつけておきましょう。リスト1の2行目にある<WORKITEMTYPE>要素のname
属性で作業項目定義の名前を指定しています。ここではこの値を「マイタスク」と変更しておきます。
次に、<FIELDS>要素の中に新しいフィールドを4つ追加しましょう。<FIELDS>要素の直下に今回必要な項目を定義していきます。すべての定義を行った結果はリスト2のようになります。なお、太字はリスト1に対して追加されている部分になります。
<WITD application="Work item type editor" version="1.0"> <WORKITEMTYPE name="マイタスク"> <DESCRIPTION>MSF Agile ライフサイクルをとおして、タスクをトラックするための情報を含んでいます</DESCRIPTION> <FIELDS> <FIELD name="予定作業時間" refname="Jp.CodeZine.WIT02.ActualWork" type="Double" />
<FIELD name="レビュー予定日" refname="Jp.CodeZine.WIT02.ActualReviewDate" type="DateTime" />
<FIELD name="レビューア" refname="Jp.CodeZine.WIT02.Reviewer" type="String" />
<FIELD name="レビュー実績時間" refname="Jp.CodeZine.WIT02.ReviewCompletedWork" type="Double" /> <FIELD name="ID" refname="System.Id" type="Integer"> </FIELD> ・・・
予定作業時間、レビュー実績時間は時間単位で入力してもらうことを想定して、例えば1.5(時間)のような入力をされる可能性を考慮し、Double型としています。レビュー予定日は日付を入力するのでDateTime型です。レビューアは人の名前(もしくはユーザーIDのようなもの)を入力するのでString型としています。以上で新しいフィールドの追加は終了です。