E' da un po' di tempo ormai, che uso Team Foundation Server per la gestione dei progetti della mia azienda e lo trovo un prodotto a dir pocco spettacolare. Oggi però mi è nata una esigenza particolare per alcuni progetti: quella di gestire lo stato "In Corso" dei vari Work Item. Una delle cose di cui sentivo la mancanza rispetto ad altri prodotti, era appunto quella di vedere quanti e quali elementi sono effettivamente in lavorazione e quanti solo "Attivi".
Mi son quindi ricordato di aver sentito dire da Lorenzo che c'era la possibilità di modificare la scheda relativa ai WorkItem, semplicemente editando un file. Così, Google alla mano, ho cercato un po' di info ed ho scoperto che la procedura, tutto sommato è abbastanza semplice:
- si deve "scaricare" su file XML la definizione del Workitem con il tool da riga di comando witexport
- modificare il file di definizione del WorkItem editando l'XML
- ricaricare il file di definizione con il comando witimport
Nel mio caso specifico, la modifca riguardava il cambiamento di stato dell'item, operazione che nel file di definizione si chiama Workflow. Per aggiungere il mio nuovo "step" è stato sufficiente prima definire il nuovo stato:
<STATES>
<STATE value="Active">
<FIELDS>
<FIELD refname="Microsoft.VSTS.Common.ClosedDate">
<EMPTY />
</FIELD>
<FIELD refname="Microsoft.VSTS.Common.ClosedBy">
<EMPTY />
</FIELD>
</FIELDS>
</STATE>
<STATE value="InProgress" /> <!-- Nuovo Stato -->
<STATE value="Closed" />
</STATES>
Successivamente inserire la transazione da uno stato all'altro nel Workflow:
<!-- Nuova Transazione -->
<TRANSITION from="Active" to="InProgress">
<REASONS>
<DEFAULTREASON value="InProgress" />
</REASONS>
<FIELDS>
<FIELD refname="Microsoft.VSTS.Common.ActivatedBy">
<COPY from="currentuser" />
<VALIDUSER />
<REQUIRED />
</FIELD>
<FIELD refname="Microsoft.VSTS.Common.ActivatedDate">
<SERVERDEFAULT from="clock" />
</FIELD>
<FIELD refname="System.AssignedTo">
<COPY from="field" field="Microsoft.VSTS.Common.ActivatedBy" />
</FIELD>
</FIELDS>
</TRANSITION>
In questo caso specifico, è stata aggiunta solo la transazione dallo stato di "Active" allo stato di "InProgress". Si dovrà poi modificare quella che definisce il passaggio da "Active" a "Close" eventualmente copiandola e modificando lo stato di partenza da "Active" a "InProgress" (altrimenti non sarà possibile passare allo stato di "Closed"). Completata l'operazione, il file andrà salvato e ricaricato.
Il risultato finale sarà il seguente:
Ora sarà possibile tracciare anche questo tipo di "Stato" dei WorkItem.
Le possibilità di personalizzazione non si fermano qui. A questo link, si possono trovare altre utili informazioni sulla customizzazione dei Work Item.
Buon divertimento 