Principes relatifs aux expressions


Généralités

Tâches

Inclus dans

Tivoli Change Management - Administration

Généralités

Définition d'une expression

Dans Tivoli Change Management, une expression de définition de règle se compose des éléments suivants :
Composant Description
Table Nom de la table de base de données Tivoli Change Management contenant le champ (attribut) que vous voulez inclure dans la définition de la règle.
Attribut Champ de la base de données contenant les données que vous voulez inclure dans la définition de la règle.
Opérateur Opérateur (<, >, =, <=, >= ou <>) que vous utilisez pour spécifier les critères de sélection de la règle.
Valeur Valeur réelle du champ que vous utilisez pour déterminer la sélection dans la règle.

Par exemple, l'expression suivante spécifie tous les enregistrements de table CHANGE associés au champ Status_ID défini avec la valeur "completed" (terminé) :

Change:Status_ID=completed

Vous remarquerez que dans les expressions de définition, le nom de la table et l'attribut sont séparés par un signe deux-points. N'entrez pas de signe deux-points dans la boîte Valeur.


Tâches

Construction des expressions Vous pouvez utiliser les opérateurs suivants pour combiner des expressions simples et créer une définition d'expressions de règles complète.
  • And

Le bouton d'opérateur And permet de relier deux expressions entre elles. Les données concernées doivent remplir les deux conditions. Sélectionnez le bouton And après l'insertion de la première expression et avant la seconde. Dans l'exemple suivant, l'utilisation de l'opérateur And permet de spécifier à la fois les modifications dont le statut est "completed" (terminé) et une date d'événement antérieure au 31 mars 1999 :

Change:Status_ID=completed AND Change_History:Event_Date < 03/31/99

  • Or

Le bouton d'opérateur Or permet de relier deux expressions entre elles. Les données peuvent correspondre à l'une ou l'autre des expressions. Sélectionnez Or après l'insertion de la première expression et avant la seconde. Dans l'exemple suivant, l'utilisation de l'opérateur Or permet de spécifier les modifications dont le statut est "completed" (terminé) ou une date d'événement antérieure au 31 mars 1999 :

Change:Status_ID=completed OR Change_History:Event_Date < 03/31/99

  • Not

Utilisez le bouton d'opérateur Not avant d'insérer une expression pour inverser le statut true (vrai) ou false (faux) de l'expression. Par exemple, l'utilisation de l'opérateur Nor dans l'exemple suivant permet de spécifier toutes les modifications, sauf celles dont le statut est "completed" (terminé) :

NOT Change:Status_ID=Completed

ce qui équivaut à :

Change_Status_ID<>completed

Vous pouvez utiliser l'opérateur Not avec les opérateurs And et Or. Dans l'exemple suivant, l'utilisation de l'opérateur Not permet de spécifier toutes les modifications dont le statut est "completed" (terminé) et une date d'événement supérieure ou égale au 31 mars 1999 :

Change:Status_ID=completed AND NOT Change:Event_Date<03/31/99

  • Utilisation des expressions

Utilisez les boutons de parenthèses pour insérer des parenthèses avant, après ou entre les expressions et les opérateurs de la liste. Les parenthèses déterminent ici l'ordre d'interprétation des phrases exactement comme elles déterminent l'ordre de calcul lorsqu'elles sont utilisées dans des instructions mathématiques.

Dans l'exemple suivant, les parenthèses définissent une règle qui s'applique à deux groupes de modifications (modifications terminées avec une date d'événement antérieure au 31 mars 1999, et modifications sauvegardées avec une date d'événement postérieure au 31 mars 1999) :

(Change:Status_ID=completed AND Change_History:Event_Date<03/31/99) OR (Change:Status_ID=saved AND Change_History:Event_Date>03/31/99)

Optimisation des expressions

Lorsque Tivoli Change Management évalue une expression lors de l'exécution, il utilise la logique suivante :
  1. Si toutes les conjonctions sont des And (et pas des Or), la routine d'évalution s'arrête et renvoie une valeur false pour la condition générale dès que la première condition est résolue en false. Les conditions sont évaluées de gauche à droite.
  2. Si toutes les conjonctions sont des Or (et pas des And), la routine d'évalution s'arrête et renvoie une valeur true pour la condition générale dès que la première condition est résolue en true. Les conditions sont évaluées de gauche à droite.
  3. Si l'expression contient des conjonctions And et Or, l'expression entière doit être évaluée pour que la résolution générale en true ou false puisse être évaluée.

Cette logique d'évaluation permet d'optimiser la définition des expressions de règles, ce qui améliore sensiblement les performances d'exécution. Si une expression comporte plusieurs conditions toutes associées à la conjonction And, et que vous définissez dans la partie gauche de la définition d'expression la condition la plus susceptible d'être évaluée en tant que "false", vous gagnez tout le temps qui aurait été nécessaire à l'évaluation des autres conditions.

Supposez par exemple que :

  1. Une expression de règle est définie pour détecter un Change:Status_ID terminé ("completed"), un Change:Cost supérieur à 100 et un Change:Category logiciel.

    Pour optimiser les performances de cette expression, l'évaluation de Status_ID est définie en premier car les évaluations dont le Status_ID est terminé sont relativement peu nombreuses par rapport à toutes les transactions de modification.
  1. Selon les conditions en cours dans votre environnement, les deux autres conditions peuvent être définies dans n'importe quel ordre, mais supposons que les coûts des modifications sont en majorité inférieurs à 100 et que la majorité des modifications concernent la catégorie logiciel, la meilleure définition de règles serait :

    Change:Status_ID = completed AND Change:Cost > 100 AND Change: Category = software
  2. Cependant, si l'expression est définie pour détecter l'une des conditions ci-dessus, l'ordre des conditions est inversé. En définissant d'abord dans l'expression la condition la plus susceptible d'être évaluée comme vraie (true), l'opération se termine plus rapidement.

    Change:Category = software OR Change:Cost > 100 OR Change:Status_ID = completed