A process template is a series of XML files that define your team project. You have the choice of starting from scratch (which we wouldn't recommend unless you are extremely familiar with the schemas) or you can update a preexisting process template. To obtain an existing process template from Team Foundation Server, in Team Explorer right-click your server name, then select Team Foundation Server Settings⇨Process Template Manager. (You can alternatively access this option by clicking on Team⇨Team Foundation Server Settings⇨Process Template Manager.)
The Process Template Manager (Figure 6-12) allows you to upload, download, and delete templates. Select the MSF for Agile Software Development template and click download.
As a rule of thumb, you should use the MSF for Agile Software Development template as a starting point for creating customized templates. The reasoning behind this is that the MSF for CMMI Process Improvement template contains a lot of extra content to support the appraisal requirements for CMMI.
You should always try to start from a simple template and build up from there. (Otherwise, you will have to go backward and strip out the work products, work items, and other project artifacts you don't necessarily need.) The only exception to this rule is if you are designing a template for a project that requires a high level of governance, process improvement, and quality assurance (for example, audits).
For the sake of illustration, you should begin by downloading the MSF for Agile Software Development process template. On your system, you should see a folder for the template. Within the folder, you'll notice an XML file called ProcessTemplate.xml and several subfolders including the following:
Classification - The files in this folder allow you to modify the iterations and areas to organize and structure your work items. A FileMapping.xml file allows you to create mappings from work item fields to Microsoft Project columns. This is extremely important when you start creating custom work items.
Groups and Permissions - The groups and permissions portion of the template allows you to predefine the roles within your software development team, and the permissions associated to the roles. For example, if your software projects require the involvement of a helpdesk staff, you can define a special role that is defined every time you create a new project using your custom project templates.
Reports - The reports portion of the template allows you to define which reports will appear in the project. You can remove some of the default reports and incorporate custom reports. The full process of creating customized reports is documented in Chapter 16.
Version Control - The version control part of the template allows you to define the permissions your team members will have on Team Foundation's version control system. It also defines what kinds of checkin notes you want included in the project (in other words, what kind code reviews should be performed before checkin and who will perform them). Finally, you can set whether the version control allows multiple checkouts or exclusive checkouts.
Windows SharePoint Services - The Windows SharePoint Services portion of the template does quite a lot. It can create document library folders on your SharePoint site and then add all of your custom work products (the templates you use in the course of working on a project, for example documentation you need to include in each project). You can also create a custom SharePoint site template and associate it to your process template. This means that whenever you create a new project, it will include your logo and your customized look-and-feel. Finally, the SharePoint site contains process guidance that you can build using the MSFWinBuild tool. (See the section titled "Compiling and Creating Documentation" later in the chapter.)
WorkItem Tracking - The WorkItem Tracking folder contains definitions for your default work items (such as bugs, tasks, and issues). You can create and include your own work item types in this folder. You can also create custom work item queries. workitems.xml also defines a list of work items that will appear by default once a project is created. This list is called an instance - it allows you to set up a list of predetermined steps for each team project. For example, if you have to perform administrative tasks before starting a project you can explicitly set up work items for this purpose.
Global lists represent another customization you can make that is not explicitly indicated in the template. Let's say you create a work item that requires a drop-down list, you can include a custom list within that control.
In this chapter, we will not attempt to walk you through the minutiae of creating each part of the process template, because the process is well documented in the Visual Studio 2005 SDK and our companion book Professional Visual Studio 2005 Team System, published by WROX Press. If you are interested in advanced work item customization, we strongly recommend you look at Chapter 11 of this book.
What we do in this chapter is help you understand how to map business requirements to Team System and help you create process templates that work in the real world.
Several tools are available to help you edit process templates; some are free and others are more commercially driven. Here is a rundown of the tools on the market:
Text/XML Editor - In their native form, process templates are nothing more than XML documents. Therefore, if you have knowledge of XML, you can manually edit the XML file by adding, removing, and editing nodes on the XML tree using built-in text editing tools such as Notepad and Wordpad. There are also third-party XML editing tools such as XMLSpy by Altnova (altova.com/features_xmlediting.html).
Process Template Editor - Joel Semeniuk has developed a free process template editor available for download on GotDotNet: gotdotnet.com/Workspaces/Workspace.aspx?id=.
Work item type designer - Darren Jefford has created a work item editor using the Domain Specific Language tools: gotdotnet.com/workspaces/workspace.aspx?id=.
Third-party tools - Osellus has designed a commercial ASP solution for designing process templates. You can learn more at osellus.com.