samedi 9 avril 2011

Integration de Champs calculés dans les Work Items

L'intégration de champs calculés dans un Work Item Template va permettre de stocker les valeurs calculées dans le Warehouse TFS et de plus pouvoir utiliser ces valeurs de manières historisées puisqu'elles seront processées dans le cube OLAP, cette implémentation permet d'éviter le recours systématique à Excel pour créer ces valeurs calculées. Le but de cet article est de montrer comment implémenter étape par étape ce concept sur un cas simple, le calcul de l'EAC (Estimate At Completion).


Le Work Item Task permet de gérer les temps au travers de 3 champs :


1 / Original Estimate : La baseline, 2 / Completed : Le consommé, 3 / Remaining : Le reste à faire


L'EAC a donc pour formule : EAC = Completed + Remaining Cette implémentation se base sur la possibilité de personnaliser les Templates de Work Items à l''aide du Process Editor et d'une fonctionnalité très utile dans SQL Server, les Computed Columns, donc l'implémentation se fait en 2 étapes :


1 / Dans TFS : Modification du Work Item Template Task pour Ajouter le Champ


2 / Dans SQL : Modification du Nouveau Champ en Champ Calculé



Se Connecter au Serveur TFS a l'aide d'un client Visual Studio 2010 (en prérequis, Le Process template Editor est installé sur la machine Cliente)



Lancer le Process Template Editor à partir de Visual Studio




Se connecter au Team Project dans lequel on veut implémenter le champ calculé :


L'éditeur s'affiche sur l'onglet Field, Cliquer le bouton New pour créer le nouveau champ EAC

Compléter la définition tel que montré ci dessous :

Activer l'onglet Layout, créer un nouveau Controle au dessous de Completed Work

Renseigner les propriétés Field Name et Label

Lancer un Refresh dans Team Explorer et créer une nouvelle Tache pour vérifier la création de ce nouveau champ, modifier si nécessaire.

Pour terminer cette implémentation, il reste à se connecter à SQL, choisir l'instance qui héberge le Data tier de votre instance TFS, sélectionner la base de données portant le nom de la collection dans lequel se trouve le projet d'équipe sur lequel est implémenté cette modification

Sélectionner la table WorkItemsAre qui contient les champs de l'ensemble des work items définis

Le rajout du champ dans le Process template a déclenché la création d'un champ dans la base de données, ce champ est rajouté en fin de table, dans notre cas, il s'agit du champ fld10101


Lancer l'éditeur de Query dans Management Studio et entrer les commandes alter suivantes sur la table :


alter table dbo.WorkItemsAre drop column Fld10101


alter table dbo.WorkItemsAre add Fld10101 as (FLD10022 + FLD10020) persisted


Vous aurez vérifié au préalable que les champs FLD10022 et FLD10020 correspondent à Completed et Remaining en lançant un select sur la table par exemple sur un Work Item dont vous connaissez les valeurs Exécuter la requete, puis lancer un Refresh sur le dossier Column pour vérifier que le résultat :



On voit bien ce dessous que la colonne est de type Computed et la fenêtre de propriétés nous montre la formule. A noter qu'il est possible d'entrer des formules complexes avec des If pour gérer des divisions par 0 par exemple.

Tester l'implémentation en créeant un nouveau Work Item, initialiser les valeurs Estimate, Completed et Remaining

Faire un Refresh, on constate que le Champ EAC est recalculé suivant la formule

On a bien EAC = 12 soit 8 + 4

Aucun commentaire: