フォーム定義
作業項目定義の中身を説明していた時とは順番が前後しますが、次に作業項目のフォーム定義を編集しましょう。同じく、「MyTask.xml」ファイルを編集していきます。
今度は、<FORM>要素を探してください。ファイルの中ほどから3分の2ほどのあたりに見つけることができます。ここがVisual Studioなどで作業項目を開いたときの見た目を決定している部分ですが、今回は図1に示したように、詳細というタブの中に追加したフィールド定義を表示するように構成していきます。
実際に編集するためには<Tab Label=”詳細”>となっている要素を見つけ出してください(ファイルの最後尾から探した方が早いはずです)。見つけ出した部分で定義しているのは図1の編集前となっている部分を定義している情報です。これを編集後の状態にするために定義情報を追加すると、リスト3のようになります。なお、リスト中の太字は追加している部分です。
<FORM> <!-- 今回編集対象外の部分は省略 --> <Tab Label="詳細"> <Group> <Column PercentWidth="50"> <Group Label="全般"> <Column PercentWidth="100"> <Control Type="FieldControl" FieldName="Microsoft.VSTS.Common.Issue" Label="懸案事項(&U):" LabelPosition="Left"/> <Control Type="FieldControl" FieldName="Microsoft.VSTS.Common.ExitCriteria" Label="終了基準(&X):" LabelPosition="Left"/> <Control Type="FieldControl" FieldName="Microsoft.VSTS.Build.IntegrationBuild" Label="統合ビルド(&B):" LabelPosition="Left"/> <Control Type="FieldControl" FieldName="Microsoft.VSTS.Scheduling.TaskHierarchy" Label="タスク コンテキスト(&A):" LabelPosition="Left" ReadOnly="True"/> </Column> </Group> </Column> <Column PercentWidth="50"> <Group Label="スケジュール"> <Column PercentWidth="100"> <Control Type="FieldControl" FieldName="Microsoft.VSTS.Scheduling.RemainingWork" Label="残存作業 (時間)(&W):" LabelPosition="Left" NumberFormat="DecimalNumbers" MaxLength="10"/> <Control Type="FieldControl" FieldName="Microsoft.VSTS.Scheduling.CompletedWork" Label="実績作業 (時間)(&P):" LabelPosition="Left" NumberFormat="DecimalNumbers" MaxLength="10"/> <Control Type="FieldControl" FieldName="Microsoft.VSTS.Scheduling.StartDate" Label="開始日(&E):" LabelPosition="Left" ReadOnly="True"/> <Control Type="FieldControl" FieldName="Microsoft.VSTS.Scheduling.FinishDate" Label="完了日(&F):" LabelPosition="Left" ReadOnly="True"/> <Control Type="FieldControl" FieldName="Jp.CodeZine.WIT02.ActualWork" Label="予定作業時間:" LabelPosition="Left" /> </Column> </Group> </Column> </Group> <Group Label="レビュー">
<Column PercentWidth="100">
<Control Type="FieldControl" FieldName="Jp.CodeZine.WIT02.ActualReviewDate" Label="レビュー予定日:" LabelPosition="Left" />
<Control Type="FieldControl" FieldName="Jp.CodeZine.WIT02.Reviewer" Label="レビューア:" LabelPosition="Left" />
<Control Type="FieldControl" FieldName="Jp.CodeZine.WIT02.ReviewCompletedWork" Label="レビュー実績時間:" LabelPosition="Left" />
</Column>
</Group> </Tab> ・・・
始めから定義されている<Control>要素を確認すると、Label
属性の名前の後ろには(&T)のような文字列が設定されています。これは、VSで作業項目を開いたときにキーボードショートカットが利用できるようにするためのものです。
本稿で元ネタにしているMSF for Agileというプロセステンプレート内では、作業項目全体にわたって統一感を持たせてキーボードショートカットが設定されています。これは、設定してもしなくてもどちらでもよいものになりますので、今回の例では省略しています。
また、図1とリスト3を見比べながら確認していただくと分かりやすいですが、コントロールをグループ化表示(WindowsフォームアプリケーションのGroupBoxと同様の表示方法)にするために、<Group>要素を利用しています。
さらにその中はテーブルレイアウト形式になっており、<Group>要素は必ず1つ以上の<Column>要素を含みます。複数の<Column>要素を利用する場合、それぞれの列幅は<Column>要素のPercentWidth
属性(パーセント指定)やFixedWidth
属性(ピクセル指定)を使って変更することができます。そして、それぞれの<Column>要素の中に実際に画面に表示するラベルとコントロールを<Control>要素を使って指定していきます。
以上で新しいフォーム定義の追加は終了です。
ワークフロー定義
最後にワークフロー定義として、状態と状態遷移を定義していきます。先ほどまでと同じく、「MyTask.xml」ファイルを編集していきます。
今度は、<WORKFLOW>要素を探してください。ファイルの中ほどあたりに見つけることができます。<WORKFLOW>要素内を確認してみると、アクティブと終了の2つの状態が定義されていることが確認できます。また、もう少し下に移動するとデフォルトの状態遷移などいくつかの状態遷移定義を確認することができます。
では、ここに「中断」という状態とアクティブ状態からの相互の状態遷移を記述していきます。すべてを定義するとリスト4のようになります。この部分で作業している部分を太字で示してありますので、実際に作業をする場合にはリスト4をよく確認しながら行ってください。
<WORKFLOW> <STATES> <STATE value="アクティブ"> <FIELDS> <FIELD refname="Microsoft.VSTS.Common.ClosedDate"><EMPTY/></FIELD> <FIELD refname="Microsoft.VSTS.Common.ClosedBy"><EMPTY/></FIELD> </FIELDS> </STATE> <STATE value="終了"> </STATE> <STATE value=”中断”>
</STATE> </STATES> <TRANSITIONS> <TRANSITION from=”アクティブ” to=”中断”>
<REASONS>
<DEFAULTREASON value=”作業中断” />
</REASONS>
</TRANSITION>
<TRANSITION from=”中断” to=”アクティブ”>
<REASONS>
<DEFAULTREASON value=”作業再開” />
</REASONS>
</TRANSITION> <TRANSITION from="" to="アクティブ"> <REASONS> <DEFAULTREASON value="新規"/> </REASONS> ・・・
以上で、状態と状態遷移の定義は終了です。