Search This Blog

Monday, December 03, 2007

Set Work Item Type field allowed values when another field value changes

I was asked once by a friend if there's a way to filter the allowed values of a field when another field value changes. Well, the solution is not exactly as we think about filtering but more like a switch/case mechanism.

Let's take for example 2 fields that implement OS Platform & Version selection:

Windows --> XP, 2003 Server, Vista

Linux --> Ubuntu, Red Hat, Suse

Mac --> OS X 10.0, OS X 10.5

To implement this in the work item type definition file we need to define 2 fields. The xml should look like this:

<FIELD
type="String"
name="OS Platform"
refname="MyFields.OSPlatform">

<ALLOWEDVALUES>

<LISTITEM
value="Windows" />

<LISTITEM
value="Linux" />

<LISTITEM
value="Mac" />

</ALLOWEDVALUES>

</FIELD>

<FIELD
type="String"
name="OS Version"
refname="MyFields.OSVersion">

<WHEN
field="MyFields.OSPlatform"
value="Windows">

<ALLOWEDVALUES>

<LISTITEM
value="XP" />

<LISTITEM
value="2003 Server" />

<LISTITEM
value="Vista" />

</ALLOWEDVALUES>

</WHEN>

<WHEN
field="MyFields.OSPlatform"
value="Linux">

<ALLOWEDVALUES>

<LISTITEM
value="Ubuntu" />

<LISTITEM
value="Red Hat" />

<LISTITEM
value="Suse" />

</ALLOWEDVALUES>

</WHEN>

<WHEN
field="MyFields.OSPlatform"
value="Mac">

<ALLOWEDVALUES>

<LISTITEM
value="OS X 10.0" />

<LISTITEM
value="OS X 10.5" />

</ALLOWEDVALUES>

</WHEN>

</FIELD>

The version field contains WHEN rule for each platform. The result is a field that changes in real time when the parent field value changes.

You don't have to write the xml in order to achieve this. You can use the "Process Template Editor" which is part of the Team Foundation Server power tools to easily add fields and rules to you work item.

No comments: