Exemples de scripts de projet

Cette section fournit quelques exemples fournis à titre de référence pour vous aider dans la rédaction de vos propres scripts de projet.

Exemple : Personnaliser les champs de la boîte de dialogue Nouvelle anomalie

Cet exemple indique comment personnaliser la disposition des champs et d’autres propriétés de champ dans la boîte de dialogue Nouvelle anomalie. Vous pouvez créer un code similaire pour organiser la disposition de la boîte de dialogue Détails de l’anomalie.

Cet exemple inclut les exemples de fonction suivants :

  • Fonction SetFieldApp. Reçoit un nom de champ et ses propriétés comme paramètres et affecte les propriétés au champ.

    Ajoutez le code suivant dans l’événement Bug_SharedFunction. Il affecte les propriétés de champ suivantes : la visibilité du champ, le caractère obligatoire ou non du champ, le numéro de la page (onglet) sur laquelle le champ doit être affiché et l’ordre d’affichage (de gauche à droite et de haut en bas).

    Copy code
    function SetFieldApp(fieldName, Vis, Req, PNo, VOrder){
        var bugfield = Bug_Fields(fieldName);
        bugfield.IsVisible = Vis;
        bugfield.IsRequired = Req;
        bugfield.PageNo = PNo;
        bugfield.ViewOrder = VOrder;
        console.log("SetFieldApp");
    }
  • Fonction FieldCust_AddDefect. Appelle la fonction SetFieldApp pour chaque champ de la boîte de dialogue Nouvelle anomalie, afin de définir les propriétés du champ. Pour certains des champs, FieldCust_AddDefect vérifie le groupe d’utilisateurs auquel appartient l’utilisateur actuel, et personnalise les propriétés du champ en conséquence. Un appel à FieldCust_AddDefect est placé dans la procédure d’événement Bug_New.

    • Dans l’événement Bug_New, ajoutez l’exemple de code suivant qui gère les champs communs à tous les groupes d’utilisateurs. Il utilise des instructions conditionnelles pour les champs qui n’apparaissent dans la boîte de dialogue que pour des groupes d’utilisateurs spécifiques ou qui ont des propriétés différentes pour différents utilisateurs.

      Exemple JavaScript :

      Copy code
      function FieldCust_AddDefect()
      {
          // Initialize the fields of the defect 
          for (var i= 0; i<= Bug_Fields.Count -1; i++)
          {
              SetFieldApp(Bug_Fields.FieldById(i).FieldName, false, false, 100, 0);
          }
          var ViewNum = 0;
          var PageNum = 0;
          // Set fields that are in common for all user groups 
          SetFieldApp("BG_DESCRIPTION", true, false, PageNum, ViewNum);
          ViewNum = ViewNum + 1;
          SetFieldApp("BG_SUMMARY", true, true, PageNum, ViewNum);
          ViewNum = ViewNum + 1;
          SetFieldApp("BG_DETECTED_BY", true, true, PageNum, ViewNum);
          ViewNum = ViewNum + 1;
          SetFieldApp("BG_DETECTION_DATE", true, true, PageNum, ViewNum);
          ViewNum = ViewNum + 1;
          SetFieldApp("BG_DETECTION_VERSION", true, true, PageNum, ViewNum);
          ViewNum = ViewNum + 1;
          SetFieldApp("BG_SEVERITY", true, true, PageNum, ViewNum);
          ViewNum = ViewNum + 1;
          SetFieldApp("BG_PRIORITY", true, true, PageNum, ViewNum);
          ViewNum = ViewNum + 1;
          SetFieldApp("BG_PROJECT", true, false, PageNum, ViewNum);
          ViewNum = ViewNum + 1;
          SetFieldApp("BG_REPRODUCIBLE", true, false, PageNum, ViewNum);
          ViewNum = ViewNum + 1;
          SetFieldApp("BG_STATUS", true, false, PageNum, ViewNum);
          ViewNum = ViewNum + 1;
          // Set fields that are different for different user groups. 
          // Since one user can belong to multiple user groups, 
          // or none of these groups, there is no need for an Else statement.
          if (User.IsInGroup("Developer"))
          {
             SetFieldApp("BG_PLANNED_CLOSING_VERSION", true, false, PageNum, ViewNum);
             ViewNum = ViewNum + 1;
             SetFieldApp("BG_PLANNED_FIX_TIME", true, false, PageNum, ViewNum);
             ViewNum = ViewNum + 1;
          }
        
          if (User.IsInGroup("QATester")) 
          {
             PageNum = PageNum + 1;
             SetFieldApp("BG_USER_01", true, false, PageNum, ViewNum);
             ViewNum = ViewNum + 1;
             SetFieldApp("BG_USER_02", true, false, PageNum, ViewNum);
             ViewNum = ViewNum + 1;
          }
          
          SetFieldApp("BG_ACTUAL_FIX_TIME", true, false, PageNum, ViewNum);
          ViewNum = ViewNum + 1;
          // ...
          console.log("FieldCust_AddDefect");
    • Ajoutez un appel à FieldCust_AddDefect dans la procédure d’événement Bug_New afin qu’il soit déclenché lorsqu’un utilisateur ajoute une nouvelle anomalie :

      Exemple JavaScript :

      Copy code
      function Bug_New() {
          FieldCust_AddDefect();
      }

Retour en haut

Exemple : Empêcher les utilisateurs d’effectuer une action

Cet exemple indique comment empêcher les utilisateurs d’effectuer une action dans des circonstances spécifiques.

Le code empêche les utilisateurs de supprimer une anomalie dont le statut est New.

Ajoutez le code suivant à la procédure d’événement ActionCanExecute afin que la vérification soit effectuée lorsqu’un utilisateur tente d’exécuter une action.

Copy code
function ActionCanExecute(actionName) {
   if (actionName === 'Defects.DeleteDefect') {
     if (Bug_Fields("BG_STATUS").Value === 'New') {
        MsgBox('Defect with New status cannot be deleted.');
        return false;
      }  
    }
    return true;
 }

Retour en haut

Exemple : Modifier les noms des onglets de la boîte de dialogue Détails de l’entité

Cet exemple indique comment personnaliser les noms des onglets dans la boîte de dialogue Nouvelle anomalie. Cet exemple définit les onglets suivants : General, Environments et Business Case.

Ajoutez le code JavaScript suivant à la procédure d’événement Defects_GetDetailsPageName, qui est déclenchée avant qu’ALM n’ouvre la boîte de dialogue Nouvelle anomalie.

Copy code
function GetDetailsPageName(pageName, pageNum) {
    if (ActiveDialogName === "New Bug") {
        var detailsPageName;
        switch (pageNum) {
            case 1:
                detailsPageName = "General";
                break;
            case 2:
                detailsPageName = "Environments";
                break;
            default:
                detailsPageName = "Business Case";
                break;
        }
        return detailsPageName;
    }
}

Retour en haut

Exemple : Ajouter un modèle à un champ mémo

Vous pouvez utiliser des scripts de projet pour ajouter un modèle par défaut à un champ mémo. Cet exemple ajoute du texte à un champ mémo défini par l’utilisateur BG_USER_25 pour afficher un modèle lorsqu’une anomalie est ajoutée.

Ajoutez le code JavaScript suivant à la procédure d’événement Bug_New :

Copy code
    function Bug_New() {
        Bug_Fields("BG_USER_25").Value = "<html><body><b>Step by step scenario:</b>" + "<br><br><br><b>How it affects the user:</b></body></html>";
        console.log("Bug_New");
    }

Retour en haut

Exemple : Modifier un champ en fonction du groupe d’utilisateurs

Cet exemple montre comment vous pouvez modifier la valeur d’un champ en fonction du groupe d’utilisateurs de l’utilisateur qui saisit l’anomalie.

Dans cet exemple, le champ défini par l’utilisateur BG_USER_01 est un champ de mode de détection dans lequel l’utilisateur qui a détecté l’anomalie peut entrer la manière dont elle a été découverte. Les valeurs possibles sont Formal testing, Informal testing et BTW.

L’exemple définit la valeur du champ mode de détection à BTW lorsqu’une anomalie est ouverte par un utilisateur qui ne fait pas partie du groupe QATester. Si l’anomalie est ouverte par un utilisateur qui fait partie du groupe QATester, la valeur par défaut est définie sur Formal testing.

Ajoutez le code JavaScript suivant à l’événement Bug_New, afin qu’il soit déclenché lorsqu’une anomalie est ajoutée.

Copy code
    function Bug_New() {
        if (!(User.IsInGroup("QATester")))
           {
             Bug_Fields("BG_USER_01").Value = "BTW";
           }
        else
        {
          Bug_Fields("BG_USER_01").Value = "Formal testing";
        }
        console.log("Bug_New");
}

Retour en haut

Exemple : Modifier un champ basé sur un autre champ

Cet exemple montre comment vous pouvez modifier la valeur d’un champ en fonction de la valeur saisie dans un autre champ.

Par exemple, vous pouvez attribuer des anomalies à l’utilisateur alex_qc quand le champ Catégorie est défini sur UI Suggestion et à l’utilisateur alice_qc quand le champ Catégorie est défini sur Security Issue.

L’exemple suppose que le champ défini par l’utilisateur BG_USER_05 est utilisé pour stocker la catégorie. Lorsque le champ Catégorie est modifié dans le module Anomalies, la valeur appropriée est attribuée au champ BG_RESPONSIBLE.

Ajoutez le code JavaScript suivant à la procédure d’événement Bug_FieldChange afin qu’elle soit déclenchée lorsqu’un utilisateur modifie la valeur d’un champ pour une anomalie.

Copy code
    function Bug_FieldChange(fieldName) {
        if (fieldName == "BG_USER_05") {
            switch (Bug_Fields("BG_USER_05").Value)
            {
                case "UI Suggestion":
                    Bug_Fields("BG_RESPONSIBLE").Value="alex_qc";
                    break;
                case "Security Issue":
                    Bug_Fields("BG_RESPONSIBLE").Value="alice_qc";
                    break;
                default:
                    Bug_Fields("BG_RESPONSIBLE").Value="non-assigned";
            }
        }
        console.log("Bug_FieldChange");
}

Retour en haut

Exemple : Modifier les propriétés du champ lorsqu’un champ est modifié

Cet exemple montre comment vous pouvez modifier les propriétés d’un champ lorsqu’un autre champ est modifié.

Dans cet exemple, si le statut de l’anomalie(BG_STATUS) est défini sur Fermé, l’utilisateur doit fournir une valeur dans le champ Fermé dans la version (BG_CLOSING_VERSION).

Ajoutez le code JavaScript suivant à la procédure d’événement Bug_FieldChange pour que le champ Fermé dans la version devienne un champ obligatoire si le statut est défini sur Fermé.

Copy code
function Bug_FieldChange(fieldName) {
    if (fieldName == "BG_STATUS")
    {
        if (Bug_Fields("BG_STATUS").Value == "Closed")
        {
            Bug_Fields("BG_CLOSING_VERSION").IsRequired=true;
        }
        else 
        {
            Bug_Fields("BG_CLOSING_VERSION").IsRequired=false;
        }
    }
    else 
    {
        // Enter your code here.;
    }
    console.log("Bug_FieldChange");
}

Retour en haut

Exemple : Valider si une entité peut être mise à jour dans des cas spécifiques

Cet exemple montre comment vous pouvez effectuer des validations de tous les champs en utilisant la procédure d’événement CanPost. Par exemple, ce segment de code garantit qu’un utilisateur ne peut pas rejeter une anomalie sans ajouter un commentaire.

Dans cet exemple, un utilisateur ne peut pas définir le statut de l’anomalie (BG_STATUS) sur Rejected (Rejeté), à moins qu’un texte explicatif n’ait été entré dans le champ Commentaire (BG_DEV_COMMENTS).

Ajoutez le code JavaScript suivant à l’événement Bug_CanPost afin que la vérification soit effectuée lorsque l’utilisateur tente de rejeter l’anomalie.

Copy code
    function Bug_CanPost() {
        // Initialize the function's return value to avoid unpredictable behavior.
        var Bug_CanPost = false;
        if (Bug_Fields("BG_STATUS").IsModified && Bug_Fields("BG_STATUS").Value == "Rejected" &&  !(Bug_Fields("BG_DEV_COMMENTS").IsModified))
        {
            Bug_CanPost = false;
            MsgBox("You must enter a comment when rejecting a defect.");
            return Bug_CanPost;
        }  
        else
        {
            Bug_CanPost = true;
            return Bug_CanPost;
        }     
        console.log("Bug_CanPost");
}

Retour en haut

Exemple : Valider un champ

Cet exemple montre comment valider la valeur d’un seul champ. Par exemple, le segment de code suivant montre comment vous pouvez vous assurer qu’un utilisateur d’un groupe spécifique ne peut pas diminuer la priorité d’une anomalie.

Dans cet exemple, si l’utilisateur fait partie du groupe QATester et que le champ BG_PRIORITY est mis à jour, la nouvelle valeur du champ BG_PRIORITY ne peut être inférieure à la valeur actuelle.

Cet exemple suppose que dans la liste des champs Priorité du projet, les priorités les plus faibles viennent en premier lorsque les valeurs sont triées par ordre croissant. Par exemple, la liste répond à cette exigence si les éléments sont les suivants : 1-Bas, 2-Moyen, 3-Haut.

Ajoutez le code JavaScript suivant à la procédure d’événement Bug_FieldCanChange afin qu’elle soit déclenchée lorsque l’utilisateur tente de modifier la valeur d’un champ d’anomalie.

Copy code
function Bug_FieldCanChange(fieldName, newValue) {
   // Initialize the function's return value to avoid unpredictable behavior.
   var Bug_FieldCanChange = true;
   if (User.IsInGroup("QATester") && fieldName == "BG_PRIORITY"
      {
          if (newValue < Bug_Fields("BG_PRIORITY").Value) 
             { 
                Bug_FieldCanChange = false;
                MsgBox("You do not have permission to lower " + "defect priority.");
                return Bug_FieldCanChange;
              }
              else
              {
                Bug_FieldCanChange = true;
                return Bug_FieldCanChange;
              }
      }
    else
      {
      // Enter your code here.
      }       
    console.log("Bug_FieldCanChange");                
}

Retour en haut

Exemple : Présenter une liste de champs dynamique

Cet exemple montre comment vous pouvez présenter une liste de champs différente dans un champ, en fonction de la valeur d’un autre champ.

La fonction définie par l’utilisateur SW_SetLists_Environment vérifie la valeur du champ Spécification de l’environnement (BG_USER_02) et attribue la liste de champs appropriée au champ Type d’environnement (BG_USER_01).

Cet exemple suppose que les listes de champs ont été définies dans le projet. Pour plus d’informations, voir Personnaliser les listes de champs.

  • Ajoutez le code JavaScript suivant à la procédure d’événement Bug_MoveTo afin que la fonction définie par l’utilisateur SW_SetLists_Environment soit appelée lorsque l’utilisateur change de focus dans le module Anomalies.

    Copy code
    function Bug_MoveTo() {
        SW_SetLists_Environment();
        console.log("Bug_MoveTo");
    }
  • Ajoutez le code JavaScript suivant à la procédure d’événement Bug_FieldChange afin que la fonction définie par l’utilisateur SW_SetLists_Environment soit appelée lorsqu’un utilisateur modifie la valeur du champ Type d’environnement (BG_USER_01) dans le module Anomalies.

    Copy code
    function Bug_FieldChange(fieldName) {
        if (fieldName  == "BG_USER_01")
        {
            SW_SetLists_Environment();
        }
        else
        {
            // Enter your code here.
        }
        console.log("Bug_FieldChange");
    }
  • La fonction définie par l’utilisateur SW_SetLists_Environment vérifie la valeur du champ Spécification de l’environnement (BG_USER_02) et attribue la liste de champs appropriée au champ Type d’environnement (BG_USER_01).

    Copy code
    function SW_SetLists_Environment() 
    {
        var listName;
        switch (Bug_Fields("BG_USER_01").Value) 
          {
                case "Browser":
                    listName = "Browsers";
                    break;
                case "Database Type":
                    listName = "Database Type";
                    break;
                case "Operating System":
                    listName = "Platform";
                    break;
                case "Web Server":
                    listName = "Web Server";
                    break;
                default:
                    listName = "Environment Specification";
            }
        Bug_Fields("BG_USER_02").List = Lists(listName);
        console.log("Set Environment List");
    }

Retour en haut