UI-Weiterleitungsaktion erstellen

  • Freigeben Version: Yokohama
  • Aktualisiert 30. Januar 2025
  • 2 Minuten Lesedauer
  • Mit dieser Lösung können Sie einen Datensatz beim Service Desk erstellen, ohne zu wissen, ob es sich um einen Incident oder ein Anforderungselement handelt. Der Service Desk kann den Datensatz dann an die entsprechende Tabelle weiterleiten.

    Warum und wann dieser Vorgang ausgeführt wird

    Hinweis:
    Die hier beschriebene Funktionalität erfordert die Admin-Rolle.

    So erstellen Sie eine UI-Weiterleitungsaktion:

    Prozedur

    1. Erstellen Sie eine neue Tabelle, die die Tabelle Aufgabe erweitert (z. B. „Neuer Anruf“).
    2. Erstellen Sie ein Modul, um einen neuen Datensatz für neue Anrufe zu erstellen.
    3. Erstellen Sie beliebige Felder in der Tabelle „Neuer Anruf“.

      Die einzigen benötigten Felder sind diejenigen, die erforderlich sind, um zu bestimmen, ob der neue Anruf an einen Incident oder ein Anforderungselement weitergeleitet werden soll. Stellen Sie sicher, dass das Formular alle Felder enthält, die Sie an den Incident oder das Anforderungselement übergeben möchten. In diesem Beispiel werden im Formular folgende Elemente erstellt:

      • Angefordert für (Referenz)
      • Standort (Referenz)
      • Anruftyp (Auswahl mit zwei Werten – Incident und Anforderung)
      • Anforderungselement (Verweis auf die Elementtabelle sc_cat_item)
    4. Fügen Sie einige UI-Richtlinien hinzu, um ein paar Felder als obligatorisch festzulegen, und blenden Sie das Feld Anforderungselement basierend auf der Auswahl für Anruftyp aus.
    5. Entfernen Sie nicht benötigte Schaltflächen und Funktionen aus dem Formular.
    6. Erstellen Sie eine neue UI Actionschaltfläche.
      Diese Schaltfläche leitet den Benutzer entweder zu einem Incident oder einer Anforderung um. Sie erstellt außerdem den Incident-Datensatz und kopiert Werte in das Incident- und das Anforderungselementformular.
      var reqItem = current.u_item;
      var requestedFor = current.u_requested_for;
      var location = current.location;
      
      if(current.u_incident_request == 'Incident'){
        //Create a new incident record and redirect to the new incident
        var rec = new GlideRecord('incident');
        rec.initialize();
        rec.caller_id = requestedFor;
        rec.location = location;
        rec.insert();
        action.setRedirectURL(rec);
      }
      
      if(current.u_incident_request == 'Request'){
        //Build the url and route the user to the request item
        var url = '';
        if(current.u_item.sys_class_name == 'sc_cat_item_guide'){
          url = 'com.glideapp.servicecatalog_cat_item_guide_view.do?sysparm_initial=true&sysparm_guide=' + 
            reqItem + '&sysparm_user=' + requestedFor + '&sysparm_location=' + location;
        }
        else{
          url = 'com.glideapp.servicecatalog_cat_item_view.do?sysparm_id=' + reqItem + '&sysparm_user=' +  
            requestedFor + '&sysparm_location=' + location;
        }
        action.setRedirectURL(url);
      }
    7. Die Schaltfläche Route im vorherigen Beispiel übergibt die Werte für Angefordert für und Standort in der URL an das Anforderungselementformular.
      Stellen Sie sicher, dass Ihr Element, Ihr Datensatzersteller oder Ihr Bestellleitfaden Variablen namens requested_for und location enthält, die diese Werte mithilfe des folgenden Client-Skripts zuordnen. Die Menge an Informationen, die Sie übergeben können, ist begrenzt, da die URL eine beschränkte Länge hat. Senden Sie mit dieser Methode keine Informationen aus langen Textfeldern.
      function onLoad() {
        var url = document.location.toString();
        var userKey = 'sysparm_user=';
        var locKey = 'sysparm_location=';
        var userPosition = url.indexOf(userKey);
        var locPosition = url.indexOf(locKey)
        if (userPosition != -1) {
          var user = url.substr(userPosition+userKey.length, 32);
          g_form.setValue('requested_for',user);
        }
        if (locPosition != -1) {
          var loc = url.substr(locPosition+locKey.length, 32);
          g_form.setValue('location',loc);
        }
      }