Débogage de règles métier

  • Rversion finale: Yokohama
  • Mis à jour 30 janv. 2025
  • 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 instructions d’alerte dans votre règle métier qui peut é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ègles métier des résultats. 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 Scripting des messages d’alerte, d’informations et d’erreur.
    Exemples de règles métier Parfois, vous pouvez trouver ce que vous cherchez dans des scripts que d’autres ont écrits, y compris des 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 afin d’obtenir des 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 à obtenir un aperçu du comportement de votre règle métier. Pour chaque action à l’exception d’une insertion, vous utiliserez plus que 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 les 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 élément fonctionne séparément de l’ensemble, puis remettez-les ensemble une étape à la fois.

    3. Localisation de l’information

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

    Dans l’application ServiceNow , une table peut en étendre une autre. Par conséquent, lorsque vous recherchez des informations, vous devrez peut-être interroger la table parent pour connaître 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);
      }
     
     }