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 codefunction 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 codefunction 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 codefunction Bug_New() {
FieldCust_AddDefect();
}
-
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.
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;
}
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.
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;
}
}
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 :
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");
}
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.
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");
}
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.
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");
}
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é.
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");
}
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.
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");
}
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.
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");
}
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 codefunction 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 codefunction 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 codefunction 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");
}