Débogage des règles métier

  • Rversion finale: Washingtondc
  • Mis à jour 1 févr. 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 être 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 afin d’é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 Alerte, informations et messages d’erreur de scripting.
    Exemples de règles métier Parfois, vous pouvez trouver ce que vous cherchez dans des scripts écrits par d’autres, 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 pour 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, il est plus que probable que vous utilisiez une requête pour obtenir 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 les 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 que votre règle recherche.

    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 connaître les 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 Tâche. Le script ci-dessous interroge la table étendue (sc_task) pour la sys_id actuelle, puis interroge la table parente (tâche) pour les enregistrements avec l’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);
      }
     
     }