Mode d'évaluation des règles
Vous pouvez comprendre la manière dont les règles sont évaluées lorsque vous appliquez plusieurs règles à un champ. La manière dont les règles sont évaluées n'est pas complètement déterministe. Cette section décrit le comportement attendu et les interactions lorsque vous utilisez les règles <WHEN*>, <DEFAULT>, et <COPY>.
Les étapes suivantes affichent, dans la bonne séquence, les interactions exécutées par Team Foundation Server et par l'utilisateur d'un formulaire d'élément de travail. Seules les étapes 1, 8 et 13 sont exécutées par l'utilisateur.
À l'aide de l'interface utilisateur Visual Studio, l'utilisateur crée un nouvel élément de travail ou modifie un élément de travail existant.
Remplissez les valeurs de champ par défaut. Pour tous les champs, utilisez les règles <DEFAULT> qui sont en dehors des règles <WHEN*>.
Copiez les valeurs de champ. Pour tous les champs, utilisez les règles <COPY> qui sont en dehors des clauses <WHEN*>.
Pour tous les champs dotés d'une règle <WHEN> correspondante, exécutez en premier la règle <DEFAULT>, puis la règle <COPY> à l'intérieur.
Pour tous les champs dotés d'une règle <WHENNOT> correspondante, exécutez en premier la règle <DEFAULT>, puis la règle <COPY> à l'intérieur.
Notes
Team Foundation Server traite toujours les règles <WHEN> avant les règles <WHENNOT>.
Pour tous les champs dont les valeurs ont été modifiées depuis l'étape 1 et qui contiennent des règles <WHENCHANGED>, exécutez en premier la règle <DEFAULT>, puis la règle <COPY> à l'intérieur.
Autorisez l'utilisateur à commencer la modification.
L'utilisateur modifie une valeur de champ, puis déplace le focus à partir du champ.
Élevez les règles <WHEN> de ce champ correspondant à la nouvelle valeur.
Élevez les règles <WHENNOT> de ce champ correspondant à la nouvelle valeur.
Élevez les règles <WHENCHANGED> de ce champ correspondant à la nouvelle valeur.
Retournez la fonction de modification à l'utilisateur.
L'utilisateur enregistre les modifications dans la base de données.
Pour tous les champs, exécutez les opérations <SERVERDEFAULT> définies pour le champ soit directement, soit indirectement sous une règle <WHEN> ou <WHENNOT>.
Traitement des séquences de touches
Lorsqu'un utilisateur utilise l'interface utilisateur graphique pour modifier un formulaire d'élément de travail, une nouvelle valeur est définie chaque fois qu'une séquence de touches est entrée pour un champ. Cela signifie qu'une règle <WHEN*> peut se produire de façon inattendue chaque fois que les conditions préalables de la règle sont satisfaites.
Dans l'exemple XML suivant, SubStatus sera vidé dès que vous taperez « Approuver encore » dans le champ État, car la règle <WHEN*> se produit dès que l'utilisateur tape la lettre « e » dans Approuvé, même si la valeur définitive prévue n'est pas « Approuver ». Par conséquent, réfléchissez bien lorsque vous utilisez des règles conditionnelles.
<FIELD refname="MyCorp.SubStatus" />
<WHEN field="MyCorp.Status" value="Approve" >
<EMPTY />
</WHEN>
</FIELD>