Assigner les valeurs et les règles conditionnelles
Vous pouvez définir des règles exécutées de manière conditionnelle à l'aide des éléments WHEN, WHENNOT, WHENCHANGED et WHENNOTCHANGED. Vous utilisez ces règles pour définir les éléments qui sont exécutés quand la clause définie est True. Vous pouvez définir des conditions en fonction de la valeur assignée à un champ spécifique ou si un utilisateur modifie un champ donné. Par exemple, vous pouvez créer une liste de choix dépendante pour fournir une sécurité détaillée ou un comportement personnalisé.
Les conditions de champ sont des éléments supplémentaires répertoriés dans un élément FIELD (définition) ou dans l'élément FIELD (flux de travail). Pour plus d'informations sur ces éléments, consultez Référence des éléments FIELD (Définition) et Informations de référence sur l'élément FIELD (flux de travail).
Le code suivant est un exemple simple de la clause WHEN :
<FIELD . . . >
<WHEN field="referenceName" value="yyy">
</FIELD>
Cette clause signifie que tout ce qui figure dans cet élément FIELD est applicable tant que le champ refname a la valeur "yyy". Le champ doit être un nom de référence de champ valide. Pour plus d'informations, consultez Conventions d'affectation de noms pour les objets de suivi des éléments de travail.
Notes
L'attribut value ne respecte pas la casse.Par conséquent, si le nom de référence du champ contient "YYY", les correspondances incluent les valeurs "yyy" et "YYY".
Dans cette rubrique
Structure de la syntaxe des éléments conditionnels
Définition d'un champ obligatoire dépendant
Définition d'une liste de choix conditionnelle
Définition d'un champ quand l'utilisateur modifie un autre champ (WHENCHANGED)
Définition d'une valeur de champ quand un utilisateur ne modifie pas un champ (WHENNOTCHANGED)
Structure de la syntaxe des éléments conditionnels
Le tableau suivant décrit les règles conditionnelles que vous pouvez spécifier comme éléments enfants de l'élément FIELD (définition) ou FIELD (flux de travail). Ces éléments acceptent un ou plusieurs des attributs suivants :
field : chaîne qui décrit le champ. Doit contenir entre 1 et 255 caractères.
value : quand le champ spécifié comporte cette valeur, les règles indiquées dans les éléments WHEN et WHENNOT sont appliquées au champ actuel.
Élément |
Syntaxe |
Description |
---|---|---|
WHEN |
|
Spécifie une ou plusieurs règles à appliquer au champ actuel lorsqu'un autre champ a une valeur spécifique. L'élément parent définit le champ actif. Quand le champ spécifié comporte la valeur indiquée, les règles dans cet élément sont appliquées au champ actuel. |
WHENNOT |
|
Spécifie une condition qui détermine l'application d'une ou de plusieurs règles au champ actuel. Les règles s'appliquent au champ actuel quand la valeur d'un autre champ change. L'élément parent définit le champ actif. Quand le champ spécifié ne comporte pas la valeur indiquée, les règles dans cet élément sont appliquées au champ actuel. |
WHENCHANGED |
|
Spécifie une condition qui détermine l'application d'une ou de plusieurs règles au champ actuel. Les règles s'appliquent au champ actuel quand la valeur d'un autre champ est modifiée dans la révision d'un élément de travail. L'élément parent définit le champ actif. |
WHENNOTCHANGED |
|
Spécifie une condition qui détermine l'application d'une ou de plusieurs règles au champ actuel. Les règles s'appliquent au champ actuel quand la valeur d'un autre champ n'est pas modifiée dans la révision d'un élément de travail. L'élément parent définit le champ actif. |
Le tableau suivant décrit l'application de chaque règle conditionnelle facultative au champ parent quand la clause conditionnelle spécifiée via un élément WHEN, WHENNOT, WHENCHANGED ou WHENNOTCHANGED a la valeur True. Pour plus d'informations, consultez Appliquer une règle à un champ d'élément de travail.
Élément |
Description |
---|---|
Le champ parent doit contenir une valeur qui provient de la liste de valeurs spécifiée. |
|
La valeur du champ parent qui existe déjà sera autorisée, même si elle ne respecte pas d'autres règles. Cet élément ne s'applique pas si la valeur du champ parent est modifiée. |
|
Les utilisateurs peuvent remplacer la valeur du champ parent uniquement par une valeur NULL ; aucune autre valeur de remplacement n'est autorisée. |
|
La valeur d'un troisième champ est copiée automatiquement dans le champ parent. Vous spécifiez le troisième champ dans l'élément COPY. |
|
Cet élément spécifie la valeur par défaut du champ parent. |
|
Le champ parent ne doit pas contenir de valeur. |
|
Le champ parent est figé. Quand un champ est figé, vous pouvez remplacer sa valeur uniquement par une valeur NULL ; aucune autre valeur de remplacement n'est autorisée. |
|
La valeur du champ parent doit correspondre au modèle spécifié. |
|
La valeur du champ parent ne peut pas correspondre à la valeur d'un troisième champ. Vous spécifiez le troisième champ dans l'élément NOTSAMEAS. |
|
Le champ parent ne peut pas contenir de valeurs provenant de la liste énumérée. |
|
Le champ parent est accessible en lecture seule. |
|
Le champ parent doit contenir une valeur autre que NULL. |
|
Le champ parent utilise la valeur issue du composant serveur spécifié. Les composants serveur valides sont clock, qui est l'heure de mise à jour de l'élément de travail, et currentuser, qui est l'identité de l'utilisateur ayant mis à jour l'élément de travail. |
|
La liste énumérée contient des valeurs suggérées pour le champ parent. |
|
Seuls les utilisateurs spécifiés peuvent modifier le champ parent. |
Retour au début
Définition d'un champ obligatoire dépendant
Vous pouvez spécifier qu'un champ est obligatoire uniquement quand un autre champ contient une valeur spécifique. Dans l'exemple suivant, quand un client signale un bogue, un niveau de gravité du client doit être spécifié. Si le bogue n'a pas été signalé par un client, le niveau de gravité du client n'est pas obligatoire.
<FIELD refname="MyCorp.Severity" name="Customer Severity" type="String">
<ALLOWEDVALUES>
<LISTITEM value="Blocking" />
<LISTITEM value="Major" />
<LISTITEM value="Minor" />
</ALLOWEDVALUES>
<WHEN field="MyCorp.CustomerReported" value="true">
<REQUIRED />
</WHEN>
</FIELD>
Définition d'une liste de choix conditionnelle
L'exemple suivant illustre une liste de choix conditionnelle dans laquelle les valeurs autorisées pour le champ Problem Type sont limitées, selon que le champ ProblemCharacteristic a la valeur Documentation.
<FIELD refname="MyCorp.ProblemType" name="Problem Type" type="String">
<WHEN field="MyCorp.ProblemCharacteristic" value="Documentation">
<ALLOWEDVALUES>
<LISTITEM value="Spelling Error" />
<LISTITEM value="Bad Format" />
<LISTITEM value="Missing Info" />
</ALLOWEDVALUES>
</WHEN>
</FIELD>
Définition d'un champ quand l'utilisateur modifie un autre champ (WHENCHANGED)
Dans l'exemple suivant, quand un utilisateur modifie la valeur du champ MyCorp.State, le champ MyCorp.StateDate prend comme valeur la date et l'heure actuelles de l'horloge du serveur.
<FIELD refname="MyCorp.StateDate" name="Date Of Last State Change" type="DateTime">
<WHENCHANGED field="MyCorp.State">
<COPY from="clock" />
</WHENCHANGED>
</FIELD>
Dans l'exemple suivant, quand un utilisateur modifie la valeur du champ MyCorp.State, la valeur contenue dans le champ MyCorp.Status est effacée.
<!-- Clear the status field whenever someone changes the state -->
<FIELD refname="MyCorp.Status" name="Status" type="String">
<WHENCHANGED field="MyCorp.State">
<COPY from="value" value="">
</WHENCHANGED>
</FIELD>
Définition d'une valeur de champ quand un utilisateur ne modifie pas un champ (WHENNOTCHANGED)
Dans l'exemple suivant, quand un utilisateur ne modifie pas la valeur du champ MyCorp.State, le champ MyCorp.StateDate passe en lecture seule.
<FIELD refname="MyCorp.StateDate" name="Date Of Last State Change" type="DateTime">
<!-- Make the StateDate field read-only when the State field is not changed -->
<WHENNOTCHANGED field="MyCorp.State">
<READONLY />
</WHENNOTCHANGED>
</FIELD>