dimanche 21 juillet 2013

Ajouter l'effort au bogue et le gérer dans le Web Access 2013

Je vais décrire comment intégrer le temps estimé, effectué et restant sur un bogue dans le modèle de processus Msf Agile 7.x en langue Fr-Fr et Team Foundation Server 2013. Les modifications permettront aussi de visualiser les bogues dans le tableau du Web Access, et gérer la capacité de l'équipe sur le travail restant des tâches et bogues. Enfin, les bogues seront directement utilisables dans la page "Mon travail" sous Visual Studio 2013.
Globalement, la démarche nécessite de modifier le type d’élément de travail Bogue afin de lui ajouter les champs de références, les états et transitions nécessaires. Puis, il faudra modifier le fichier de configuration du processus et les catégories. Pour effectuer ces mêmes opérations sur TFS 2012 (ou TFS en en-US), vous pouvez vous reporter à mes précédents messages Ajouter l'effort au type bogue et Afficher le bogue dans le Web Access

Modifier le fichier bogue

Exporter la définition du Bogue depuis votre projet d'équipe basé sur le processus Msf Agile 7.x :
$NomProjetEquipe = "TestProjMsfAgile7"
$UrlCollectionTfs = "http://VSTFS2013FR:8080/tfs/DefaultCollection"
$WitAdmin = "${env:ProgramFiles(x86)}\Microsoft Visual Studio 12.0\Common7\IDE\witadmin.exe"
$Reptemp = "C:\temp"
 
#Exporter le WIT Bogue
& $WitAdmin importwitd /collection:$UrlCollectionTfs /p:$NomProjetEquipe /f:"$Reptemp\Bogue.xml" /n:Bogue
Le type d'élément de travail Bogue n'a pas ou peu évolué dans cette version 7.x de Msf Agile. Les modifications à réaliser sont à peu près identiques aux précédentes versions à savoir :
  • ajouter les champs de référence Microsoft.VSTS.Scheduling.Xxxx et Microsoft.VSTS.Common.Activity
  • <FIELD name="Activité" refname="Microsoft.VSTS.Common.Activity" type="String" reportable="dimension">
     <HELPTEXT>Type de travail concerné</HELPTEXT>
     <SUGGESTEDVALUES expanditems="true">
      <LISTITEM value="Développement" />
      <LISTITEM value="Test en cours" />
      <LISTITEM value="Spécifications" />
      <LISTITEM value="Design" />
      <LISTITEM value="Déploiement" />
      <LISTITEM value="Documentation" />
     </SUGGESTEDVALUES>
    </FIELD>
    <FIELD name="Travail restant" refname="Microsoft.VSTS.Scheduling.RemainingWork" type="Double" reportable="measure" formula="sum">
     <HELPTEXT>Estimation du nombre d'unités de travail restantes pour terminer cette tâche</HELPTEXT>
    </FIELD>
    <FIELD name="Estimation d'origine" refname="Microsoft.VSTS.Scheduling.OriginalEstimate" type="Double" reportable="measure" formula="sum">
     <HELPTEXT>Valeur initiale du travail restant - à définir au début du travail</HELPTEXT>
    </FIELD>
    <FIELD name="Travail effectué" refname="Microsoft.VSTS.Scheduling.CompletedWork" type="Double" reportable="measure" formula="sum">
     <HELPTEXT>Nombre d'unités de travail consacrées à cette tâche</HELPTEXT>
    </FIELD>
  • ajouter les états Nouveau et Supprimé
  • <STATE value="Nouveau">
     <FIELDS>
      <FIELD refname="Microsoft.VSTS.Common.ActivatedDate">
       <EMPTY />
      </FIELD>
      <FIELD refname="Microsoft.VSTS.Common.ActivatedBy">
       <ALLOWEXISTINGVALUE />
       <EMPTY />
      </FIELD>
      <FIELD refname="Microsoft.VSTS.Common.ClosedDate">
       <EMPTY />
      </FIELD>
      <FIELD refname="Microsoft.VSTS.Common.ClosedBy">
       <ALLOWEXISTINGVALUE />
       <EMPTY />
      </FIELD>
      <FIELD refname="Microsoft.VSTS.Common.ResolvedReason">
       <EMPTY />
      </FIELD>
      <FIELD refname="Microsoft.VSTS.Common.ResolvedBy">
       <ALLOWEXISTINGVALUE />
       <EMPTY />
      </FIELD>
      <FIELD refname="Microsoft.VSTS.Common.ResolvedDate">
       <EMPTY />
      </FIELD>
     </FIELDS>
    </STATE>
    <STATE value="Supprimé" />
  • ajouter et modifier les transitions essentielles permettant de naviguer d'un état donné à un autre. Pour la lisibilité de ce message, vous les trouverez à la fin de celui-ci.
  • ajouter des contrôles dans l'interface correspondants aux champs de référence Microsoft.VSTS.Scheduling.Xxxx et Microsoft.VSTS.Common.Activity
  • <!-- interface ajouter dans le groupe avec la Planification et la Classification 
         et  Ajuster les pourcentages-->
    <Column PercentWidth="20">
     <Group Label="Effort (en heures)">
      <Column PercentWidth="100">
       <Control FieldName="Microsoft.VSTS.Scheduling.OriginalEstimate" Type="FieldControl" Label="Estimation d'origine" LabelPosition="Left" />
       <Control FieldName="Microsoft.VSTS.Scheduling.RemainingWork" Type="FieldControl" Label="Restant" LabelPosition="Left" />
       <Control FieldName="Microsoft.VSTS.Scheduling.CompletedWork" Type="FieldControl" Label="Terminé" LabelPosition="Left" />
      </Column>
     </Group>
    </Column>
    <!-- et activité dans la colonne Planification en dernière ligne + ajustement des pourcentages -->
    <Control FieldName="Microsoft.VSTS.Common.Activity" Type="FieldControl" Label="Activité" LabelPosition="Left" EmptyText="&lt;Aucun&gt;" />
Importer cette nouvelle définition du Bogue dans votre projet d'équipe basé sur le processus Msf Agile 7.x :
$NomProjetEquipe = "TestProjMsfAgile7"
$UrlCollectionTfs = "http://VSTFS2013FR:8080/tfs/DefaultCollection"
$WitAdmin = "${env:ProgramFiles(x86)}\Microsoft Visual Studio 12.0\Common7\IDE\witadmin.exe"
$Reptemp = "C:\temp"
 
#Exporter le WIT Bogue
& $WitAdmin importwitd /collection:$UrlCollectionTfs /p:$NomProjetEquipe /f:"$Reptemp\Bogue.xml"

Modifier les catégories et la configuration du processus

Exporter la configuration du processus et les catégories du projet d'équipe :
$NomProjetEquipe = "TestProjMsfAgile7"
$UrlCollectionTfs = "http://VSTFS2013FR:8080/tfs/DefaultCollection"
$WitAdmin = "${env:ProgramFiles(x86)}\Microsoft Visual Studio 12.0\Common7\IDE\witadmin.exe"
$Reptemp = "C:\temp"
 
#Exporter la configuration du processus et les catégories
& $WitAdmin exportprocessconfig /collection:$UrlCollectionTfs /p:$NomProjetEquipe /f:"$Reptemp\ProcessConfiguration.xml"
& $WitAdmin exportcategories /collection:$UrlCollectionTfs /p:$NomProjetEquipe /f:"$Reptemp\Categories.xml"
Modifier le fichier des catégories pour ajouter le Bogue dans la catégorie de tâche :
<CATEGORY refname="Microsoft.TaskCategory" name="Catégorie de tâche">
 <DEFAULTWORKITEMTYPE name="Tâche" />
 <WORKITEMTYPE name="Bogue" />
</CATEGORY>
Modifier le fichier de configuration du processus pour introduire les modifications réalisées :
<BugWorkItems category="Microsoft.BugCategory" pluralName="Bogues" singularName="Bogue">
 <States>
  <State type="Proposed" value="Nouveau" /> <!-- Ajouter l'état Nouveau -->
  <State type="InProgress" value="Actif" />
  <State type="Complete" value="Fermé" />
  <State type="Resolved" value="Résolu" />
 </States>
</BugWorkItems>
<!-- ... -->
<TaskBacklog>
  <!-- remplacer les éléments States du TaskBacklog par les suivants -->
  <States>
  <State type="Proposed" value="Nouveau" />
  <State type="InProgress" value="Actif" />
  <State type="Resolved" value="Résolu" />
  <State type="Complete" value="Fermé" />
 </States>
</TaskBacklog>
Importer les catégories puis la configuration du processus dans le projet d'équipe :
$NomProjetEquipe = "TestProjMsfAgile7"
$UrlCollectionTfs = "http://VSTFS2013FR:8080/tfs/DefaultCollection"
$WitAdmin = "${env:ProgramFiles(x86)}\Microsoft Visual Studio 12.0\Common7\IDE\witadmin.exe"
$Reptemp = "C:\temp"
 
#Importer les catégories et configuration du processus
& $WitAdmin importcategories /collection:$UrlCollectionTfs /p:$NomProjetEquipe /f:"$Reptemp\Categories.xml"
& $WitAdmin importprocessconfig /collection:$UrlCollectionTfs /p:$NomProjetEquipe /f:"$Reptemp\ProcessConfiguration.xml"
Vous pouvez maintenant profiter de votre tableau tout frais affichant les bogues et tâches associées aux récits utilisateurs de l'itération choisie. Un tableau est désormais disponible pour chaque itération (plus uniquement celle en cours). Notez que le lien a été déplacé en conséquence.

Quelques Réflexions

J'ai utilisé ici un script PowerShell pour l’exécution des commandes. Même si celles-ci restent très simple, j'ai trouvé cela plus facile qu'une invite de commandes sans compter les possibilités plus vastes disponibles.
La configuration du processus avec un seul fichier est une réelle avancée pour la personnalisation. Les changements sont plus faciles à réaliser et il n'est plus besoin de réfléchir à l'ordre d'importation des fichiers.

have a nice day.