Erstellen Sie eine UI-Weiterleitungsaktion

  • Freigeben Version: Yokohama
  • Aktualisiert 30. Januar 2025
  • 2 Minuten Lesedauer
  • Mit dieser Lösung können Sie einen Datensatz mit dem 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 Administrator Rolle.

    So erstellen Sie eine UI-Weiterleitungsaktion:

    Prozedur

    1. Erstellen Sie eine neue Tabelle, die erweitert Aufgabe Tabelle (z. B. neuer Anruf).
    2. Erstellen Sie ein Modul, um einen neuen Anrufdatensatz zu erstellen.
    3. Erstellen Sie alle gewünschten Felder in der Tabelle „neuer Anruf“.

      Die einzigen Felder, die Sie benötigen, sind die Felder, 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 Folgendes erstellt:

      • Angefordert für (Referenz)
      • Standort (Referenz)
      • Anruftyp (Auswahl mit zwei Werten – Incident und Anforderung)
      • Anforderungselement (Verweis auf sc_Cat_item Elementtabelle)
    4. Fügen Sie einige UI-Richtlinien hinzu, um einige Felder als obligatorisch festzulegen, und blenden Sie aus Anforderungselement Feld basierend auf Anruftyp Auswahl.
    5. Entfernen Sie unnötige Schaltflächen und Funktionen aus dem Formular.
    6. Erstellen Sie eine neue UI-Aktionsschaltfläche.
      Mit dieser Schaltfläche wird der Anwender entweder zu einem Incident oder einer Anforderung weitergeleitet. Außerdem wird der Incident-Datensatz erstellt und Werte in den Incident und das Anforderungselementformular kopiert.
      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 Route Schaltfläche im vorangehenden Beispiel übergeben Angefordert für Und Standort Werte in der URL zum Anforderungselementformular.
      Stellen Sie sicher, dass Sie Variablen aufgerufen haben Angefordert_für Und Standort Auf Ihrem Artikel, Datensatzersteller oder Bestellleitfaden, die diese Werte mithilfe des folgenden Client-Skripts zuordnen. Es gibt eine Beschränkung für die Anzahl der Informationen, die Sie übergeben können, da die Länge der URL eingeschränkt ist. Vermeiden Sie mit dieser Methode das Senden von 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);
        }
      }