Business Rules debuggen

  • Freigeben Version: Xanadu
  • Aktualisiert 1. August 2024
  • 2 Minuten Lesedauer
  • Das Debugging von Business Rules kann mit den verfügbaren Ressourcen im ServiceNow-Produkt erreicht werden.

    1. Werkzeuge

    Der erste Schritt in diesem Prozess besteht darin, Werkzeuge zu identifizieren, mit denen Sie herausfinden können, was falsch ist.

    Tabelle : 1. Debugging-Tools
    Debugging-Tool Beschreibung
    System-Dictionary Navigieren zu Systemdefinition > Lexikon. Das Dictionary enthält eine Liste aller Tabellen in Ihrer Instanz und kann bei der Suche nach Informationen von unschätzbarem Wert sein.
    Systemprotokoll Navigieren zu Systemprotokolle > Systemprotokoll. Sie können in Ihre Business Rule Warnungsanweisungen einfügen, die Informationen in das Protokoll schreiben können.
    Business-Regel debuggen (Details) Navigieren zu Systemdiagnostik > Sitzung debuggen > Business-Regel debuggen (Details). Dieses Debugging-Modul zeigt die Ergebnisse für Business Rules an. Verwenden Sie dieses Modul, um festzustellen, ob die Bedingungen erfüllt sind und die Werte wie erwartet festgelegt werden.
    Warnmeldungen Es gibt verschiedene Systemfunktionen, mit denen Sie Meldungen auf die Seite, das Feld oder die Protokolldatei drucken können. Weitere Informationen finden Sie unter Warnungen, Informationen und Fehlermeldungen zur Skripterstellung.
    Beispiele für Business Rule Manchmal finden Sie das, wonach Sie suchen, in von anderen geschriebenen Skripts, einschließlich Fehlermeldungen zu Business Rules, oder indem Sie eine ODER-Abfrage erstellen.
    GlideRecord-Informationen Dies ist die grundlegende Syntax, die zum Abfragen von Informationen in der Datenbank verwendet wird. Weitere Informationen finden Sie unter Abfragen von Tabellen im Skript. GlideRecord bietet auch Unterstützung für die Zusammenfassung.

    2. Variablen

    Im nächsten Schritt erhalten Sie einen Einblick in das Verhalten Ihrer Business Rule. Für jede Aktion (außer einer Einfügung) verwenden Sie höchstwahrscheinlich eine Abfrage, um Ihre Datensätze abzurufen.

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

    Um zu überprüfen, ob Ihre Abfrage tatsächlich Datensätze zurückgibt, können Sie gs.addInfoMessage verwenden, um Informationen oben auf dem Bildschirm anzuzeigen.

    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');
     }

    Wenn Ihre Abfrage keine Datensätze zurückgibt, wird Folgendes angezeigt:

    This is rec.next: false

    Verwenden Sie diese Technik, um zu überprüfen, ob jede Variable innerhalb Ihrer Business Rule die erwarteten Werte enthält.

    Tipp:
    Falls nötig, zerlegen Sie Ihr Skript in einzelne Teile und überprüfen Sie, ob die einzelnen Teile getrennt vom Ganzen funktioniert. Setzen Sie sie dann Schritt für Schritt wieder zusammen.

    3. Informationen finden

    Der letzte Schritt besteht darin, sicherzustellen, dass Sie wissen, wo Sie die Informationen finden, nach denen Ihre Regel sucht.

    In der ServiceNow-Anwendung kann eine Tabelle eine andere Tabelle erweitern. Wenn Sie nach Informationen suchen, müssen Sie möglicherweise die übergeordnete Tabelle nach der sys_id der erweiterten Tabelle abfragen, um das Gesuchte zu finden.

    Ein gutes Beispiel ist die Tabelle sc_task, welche die Aufgabentabelle erweitert. Das folgende Skript fragt die erweiterte Tabelle (sc_task) nach der aktuellen sys_id ab, und fragt dann die übergeordnete Tabelle (Aufgabe) nach Datensätzen mit der entsprechenden sys_id ab, und druckt dann das Feld für die Arbeitsnotizen aus.

    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);
      }
     
     }