Meilleures pratiques, Script

GlideRecord : écrire une requête ciblée et lisible sur ServiceNow

Une requête qui fonctionne n’est pas forcément une requête bien cadrée. Avant d’écrire une boucle, définissez le résultat attendu : quels enregistrements, dans quel ordre et pour quel usage ? Prenons un besoin simple : consulter au maximum vingt incidents actifs de priorité 2, en commençant par les plus récents.

Cadre des exemples : scripts côté serveur, à adapter et à tester dans une instance de développement disposant de la table Incident. Les exemples sont pédagogiques ; ils n’ont pas été exécutés sur votre instance ServiceNow.

1. Construire la sélection avant de la parcourir

var incidents = new GlideRecord('incident');
incidents.addQuery('active', true);
incidents.addQuery('priority', '2');
incidents.orderByDesc('sys_created_on');
incidents.setLimit(20);
incidents.query();

while (incidents.next()) {
    gs.info('[Snowledge] Incident : ' +
        incidents.getValue('number'));
}

addQuery() exprime les critères. Ici, les deux conditions sont reliées par un ET : l’incident doit être actif et avoir la priorité interne 2. orderByDesc() fixe le tri et setLimit(20) borne le nombre de résultats retournés. Après query(), chaque appel à next() positionne la lecture sur l’enregistrement suivant.

2. Lire la bonne valeur

Dans la boucle, getValue('number') récupère la valeur du champ sous forme de chaîne. Pour un champ de référence, la valeur stockée correspond généralement à un identifiant : si vous avez besoin d’un libellé destiné à l’utilisateur, distinguez cette valeur de sa valeur d’affichage. Cette distinction évite de construire un export ou un message difficile à comprendre.

3. Une limite doit correspondre au besoin

Les vingt lignes conviennent à un aperçu. Elles ne constituent pas un export complet et ne permettent pas de compter tous les incidents correspondants. N’utilisez donc pas la taille de cet échantillon comme indicateur du volume total. Si plusieurs enregistrements ont la même date de création et que leur ordre exact compte, ajoutez un critère de tri complémentaire adapté.

Avant d’intégrer la requête dans une application

  • Vérifiez les noms techniques des champs et les valeurs internes des choix dans votre instance.
  • Comparez les critères à un filtre de liste construit manuellement.
  • Testez un jeu de données sans résultat et un autre dépassant vingt lignes.
  • Examinez le contexte d’exécution et les droits nécessaires : une requête serveur GlideRecord n’est pas, à elle seule, une stratégie de contrôle d’accès.

Cet exemple est en lecture seule. Avant de transformer une requête en traitement de mise à jour, validez séparément le périmètre et les effets attendus. La qualité du filtre devient alors aussi importante que celle du code exécuté dans la boucle.

Pour aller plus loin

Références : API officielle GlideRecord et Understanding GlideRecord, par ServiceNow Developers. Sélectionnez la version correspondant à votre instance.

Snowledge développe des logiciels sur mesure sur ServiceNow et autour de son écosystème.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *