Débogage des règles métier

  • Rversion finale: Xanadu
  • Mis à jour 1 août 2024
  • 2 minutes de lecture
  • Le débogage des règles métier peut être réalisé avec les ressources disponibles dans le ServiceNow produit.

    1. Outils

    La première étape du processus consiste à identifier les outils qui vous aideront à comprendre ce qui ne va pas.

    Tableau 1. Outils de débogage
    Outil de débogage Description
    Dictionnaire système Accédez à la Définition du système > Dictionnaire. Le dictionnaire fournit une liste de toutes les tables au sein de votre instance et peut s’avérer précieux lorsque vous essayez de localiser des informations.
    Journal système Accédez à la Journaux Système > Journal système. Vous pouvez placer des déclarations d’alerte dans votre règle métier qui peuvent écrire des informations dans le journal.
    Déboguer une règle métier (détails) Accédez à la Diagnostics du système > Débogage de session > Déboguer une règle métier (détails). Ce module de débogage affiche les résultats des règles métier. Utilisez ce module pour voir si les conditions sont remplies et si les valeurs sont définies comme prévu.
    Messages d'alerte Il existe plusieurs fonctions système qui vous permettent d’imprimer des messages sur la page, le champ ou le fichier journal. Consultez Alertes, informations et messages d’erreur de scripting.
    Exemples de règles métier Parfois, vous pouvez trouver ce que vous cherchez dans les scripts que d’autres ont écrits, y compris les messages d’erreur de règle métier ou en créant une requête OR.
    Informations GlideRecord Il s’agit de la syntaxe de base utilisée pour interroger la base de données à la recherche d’informations. Consultez Interrogation des tables dans le script. GlideRecord inclut également la prise en charge de l’agrégation.

    2. Les variables

    L’étape suivante consiste à mieux comprendre le comportement de votre règle métier. Pour chaque action, à l’exception d’une insertion, vous utiliserez probablement une requête pour obtenir votre ou vos enregistrements.

    var rec = new GlideRecord('incident');
    rec.addQuery('active',true); 
    rec.query();
    while (rec.next()) {
     gs.print(rec.number + ' exists');
     }

    Pour vérifier si votre requête renvoie réellement des enregistrements, vous pouvez utiliser gs.addInfoMessage pour afficher des informations en haut de l’écran.

    var rec = new GlideRecord('incident');
    rec.addQuery('active',true); 
    rec.query();
    gs.addInfoMessage("This is rec.next: " + rec.next());
    while (rec.next()) {
     gs.print(rec.number + ' exists');
     }

    Si votre requête ne renvoie aucun enregistrement, les éléments suivants s’affichent :

    This is rec.next: false

    Utilisez cette technique pour vérifier que chaque variable de votre règle métier contient des valeurs attendues.

    Conseil :
    Si nécessaire, décomposez votre script en morceaux individuels et vérifiez que chaque morceau fonctionne séparément de l’ensemble, puis remettez-les tous ensemble une étape à la fois.

    3. Localisation de l’information

    La dernière étape consiste à vous assurer que vous savez où trouver les informations recherchées par votre règle.

    Dans l’application ServiceNow , une table peut en étendre une autre. Cela signifie que lorsque vous recherchez des informations, vous devrez peut-être interroger la table parente pour obtenir le sys_id de la table étendue afin de trouver ce que vous recherchez.

    Un bon exemple est la table sc_task, qui étend la table de tâches. Le script ci-dessous interroge la table étendue (sc_task) pour le sys_id actuel, puis interroge la table parente (tâche) pour les enregistrements avec le sys_id correspondant, puis imprime le champ Notes de travail.

    var kids = new GlideRecord('sc_task');
    kids.query();
     
    gs.addInfoMessage("This is requested item number: " + current.number);
    gs.print("This is the requested item number: " + current.number);
     
    while (kids.next()) { 
     var parents = new GlideRecord('task');
     parents.addQuery('sys_id', '=', kids.sys_id);
     parents.query();
     
     while(parents.next()) {
      gs.addInfoMessage("This is task number: " + parents.number);
      gs.print("This is task number: " + parents.number);
      gs.addInfoMessage("These are the work notes: " + parents.work_notes);
      gs.print("These are the work notes: " + parents.work_notes);
      }
     
     }