GlideAgentWorkspace (g_aw) – Client

  • Freigeben Version: Zurich
  • Aktualisiert 31. Juli 2025
  • 9 Minuten Lesedauer
  • Die G_aw Die API stellt Methoden bereit, mit denen eine UI-Aktion oder ein Client-Skript einen angegebenen Datensatz in öffnen kann Mitarbeiterbereich Registerkarte.

    Für diese Klasse ist kein Konstruktor vorhanden. Zugriff GlideAgentWorkspace Methoden, die verwenden G_aw Globales Objekt.

    GlideAgentWorkspace – closeRecord()

    Schließt den derzeit geöffneten Datensatz, z. B. ein Formular, auf einer Unterregisterkarte in Mitarbeiterbereich.

    Tabelle : 1. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 2. Ergebnisse
    Typ Beschreibung
    Keine
    Im folgenden Beispiel wird der Inhalt der Registerkarte gespeichert und dann geschlossen.
    Funktion onClick(g_Form) {
    function onClick(g_form) {
      g_form.save().then(function(){
        g_aw.closeRecord();
      });
    }
    Im folgenden Beispielskript wird verwendet G_aw.closeRecord() Methode zum Schließen eines Datensatzes, wenn auf eine Schaltfläche geklickt wird Mitarbeiterbereich. Sie können dieses Skript wie folgt verwenden:
    1. Fügen Sie dieses Skript einer für konfigurierten UI-Aktion (Schaltfläche) hinzu Mitarbeiterbereich.
    2. Wenn auf die Schaltfläche geklickt wird, wird versucht, den aktuellen Datensatz zu schließen.
    3. Die grundlegende Protokollierung zeigt Erfolg oder Fehler an.
    functioncloseCurrentRecord() {
        if (typeof g_aw !== 'undefined' && g_aw.closeRecord) {
            g_aw.closeRecord().then(function(response) {
                console.log(response.success ? 'Record closed successfully.' : 'Failed to close the record.');
            }).catch(function(error) {
                console.error('Error closing the record:', error);
            });
        }
    }
    In einem komplexeren Beispiel: CloseRecord() Die Methode wird in einem Clientskript angewendet, in dem ein Support-Mitarbeiter einen Incident-Datensatz automatisch schließen möchte Mitarbeiterbereich Nachdem Sie eine bestimmte Aktion ausgeführt haben, z. B. die Lösung des Incident. Die wichtigsten Aktionen dieses Skripts lauten wie folgt:
    • Auslöserbedingung: Das Skript überprüft, ob der Status des Incident auf „gelöst“ festgelegt ist ( status = 6 ).
    • Validierung des Arbeitsbereichs: Stellt sicher, dass der Code nur innerhalb von ausgeführt wird Mitarbeiterbereich Verwenden Typ von g_aw !== 'nicht definiert' .
    • Verarbeitung Von Zusagen: Verwendet .Then() Und .Catch() Zur Verarbeitung der asynchronen Natur von CloseRecord() .
    • Fehlerbehandlung: Bietet detaillierte Protokollierung für erfolgreiche und fehlgeschlagene Versuche.
    (function executeRule(current, gForm, gUser, gSNC) {
        // Check if the incident state is 'Resolved' (state = 6 in default ServiceNow setup)
        if (current.state == 6) {
            // Ensure we're in Agent Workspace
            if (typeof g_aw !== 'undefined' && g_aw.closeRecord) {
                g_aw.closeRecord().then(function(response) {
                    if (response.success) {
                        console.log('Incident record closed successfully in Agent Workspace.');
                    } else {
                        console.error('Failed to close the record:', response.errorMessage);
                    }
                }).catch(function(error) {
                    console.error('An error occurred while closing the record:', error);
                });
            }
        }
    })(current, gForm, gUser, gSNC);

    GlideAgentWorkspace – openRecord(Zeichenfolgentabelle, SYS-ID der Zeichenfolge, Objektparameter)

    Öffnet einen angegebenen Datensatz, z. B. ein Formular, auf einer Unterregisterkarte in Mitarbeiterbereich.

    Hinweis:
    Diese Methode ist nur in verfügbar Mitarbeiterbereich Client-Skriptumgebung oder in einer UI-Aktion im Feld „Client-Skript des Arbeitsbereichs“.
    Tabelle : 3. Parameter
    Name Typ Beschreibung
    table Zeichenfolge Name der Tabelle, die den zu öffnenden Datensatz enthält.
    sysId Zeichenfolge SYS-ID des zu öffnenden Datensatzes.
    params Objekt Optional. Name/Wert-Paare der Parameter, die an den Datensatz übergeben werden sollen.
    "params": {
      "readOnlyForm": Boolean;
      "defaultTab": "String";
      "hideDetails": Boolean
    }
    Parameter.readOnlyFormular Boolean Kennzeichnung, die angibt, ob alle Felder im geöffneten Datensatz schreibgeschützt sind, unabhängig von der UI-Richtlinie und den ACLs.
    • Wahr: Alle Felder sind schreibgeschützt.
    • Falsch: Felder entsprechen der zugehörigen UI-Richtlinie und ACLs.

    Standardwert: false

    params.defaultTab Zeichenfolge Name der anfänglichen Registerkarte, die im Arbeitsbereich angezeigt werden soll. Sie können nur zugehörige Elemente oder zugehörige Listen angeben.

    Wenn nicht angegeben, wird die Registerkarte „Details“ angezeigt, es sei denn hideDetailsIst auf „wahr“ festgelegt.

    Weitere Informationen zur Methode zum Abrufen eines zugehörigen Listennamens finden Sie unter GetRelatedListNames() .

    Parameter.AusblendDetails Boolean Kennzeichnung, die angibt, ob die Registerkarte „Details“ und die UI-Aktionen ausgeblendet werden sollen.
    • Wahr: Nur der Formularheader, alle anderen Registerkarten und die erste verfügbare Registerkarte werden im Formular angezeigt.
    • Falsch: Registerkarte „Details“ und UI-Aktionen werden im Formular angezeigt.

    Standardwert: false

    Tabelle : 4. Ergebnisse
    Typ Beschreibung
    Keine

    Öffnen Sie einen sys_user-Datensatz auf einer Unterregisterkarte.

    g_aw.openRecord('sys_user', '62826bf03710200044e0bfc8bcbe5df1'); 

    Öffnen Sie einen Datensatz auf einer Unterregisterkarte, auf der alle Felder schreibgeschützt sind.

    g_aw.openRecord('sys_user', '62826bf03710200044e0bfc8bcbe5df1', {readOnlyForm: true}); 

    Öffnen Sie einen Datensatz auf einer Unterregisterkarte, und wechseln Sie direkt zur zugehörigen Liste „Gruppen“.

    g_aw.openRecord('sys_user', '62826bf03710200044e0bfc8bcbe5df1', {defaultTab: "sys_user_grmember.user"});  

    Öffnen Sie einen Datensatz auf einer Unterregisterkarte, zeigen Sie aber nur den Formularheader und andere Registerkarten an.

    g_aw.openRecord('sys_user', '62826bf03710200044e0bfc8bcbe5df1', {hideDetails: true}); 
    Das folgende Beispielskript zeigt, wie ein Service Desk-Mitarbeiter einem Incident eine Schaltfläche hinzufügen kann, die eine zugehörige Change-Anforderung auf einer neuen Registerkarte in öffnet Mitarbeiterbereich. Die wichtigsten Aktionen dieses Skripts lauten wie folgt:
    • Dynamische Datensatzöffnung: Das Skript ruft die sys_ID der zugehörigen Change-Anforderung aus dem aktuellen Incident ab.
    • Mitarbeiterarbeitsbereichskontext: Überprüft, ob G_aw Ist verfügbar, um zu bestätigen, dass das Skript in ausgeführt wird Mitarbeiterbereich.
    • Anwenderdefinierte Parameter:
      • Ansicht: „Agent“ Öffnet den Datensatz in einer bestimmten Ansicht (optional).
      • Schreibgeschützt: Wahr Öffnet den Datensatz im schreibgeschützten Modus (optional).
    • Fehlerbehandlung: Verwendet .Then() Und .Catch() Zur Behandlung von Antworten und Fehlern.
    function openRelatedChangeRequest() {
        // Get the sys_id of the related Change Request from the current incident
        var changeRequestSysId = g_form.getValue('change_request'); // Assuming 'change_request' is the field name
    
        if (changeRequestSysId && typeof g_aw !== 'undefined' && g_aw.openRecord) {
            g_aw.openRecord('change_request', changeRequestSysId, {
                view: 'agent', // Optional: Specify a custom view
                readOnly: true // Optional: Open the record in read-only mode
            }).then(function(response) {
                if (response.success) {
                    console.log('Change Request opened successfully.');
                } else {
                    console.error('Failed to open Change Request:', response.errorMessage);
                }
            }).catch(function(error) {
                console.error('Error opening Change Request:', error);
            });
        } else {
            console.warn('No related Change Request found or Agent Workspace is not available.');
        }
    }
    Hinweis:
    Sie können dieses Skript in Ihrer eigenen Instanz verwenden, indem Sie dieses Skript an eine UI-Aktion (Schaltfläche) im Incident-Formular in anhängen Mitarbeiterbereich. Wenn Sie auf die Schaltfläche klicken, wird die zugehörige Change-Anforderung auf einer neuen Registerkarte geöffnet, wodurch der Workflow des Service Desk-Mitarbeiters verbessert wird.

    GlideAgentWorkspace – setSectionExpanded(Zeichenfolge section_Name, boolescher Wert erweitert)

    Legt einen Formularabschnitt auf den Status erweitert oder reduziert fest.

    Tabelle : 5. Parameter
    Name Typ Beschreibung
    Abschnittsname Zeichenfolge Name eines Formularabschnitts in Mitarbeiterbereich.
    Erweitert Boolean Kennzeichnung, die angibt, ob ein Abschnitt standardmäßig erweitert oder reduziert werden soll.
    • Wahr: Der Abschnitt ist standardmäßig erweitert.
    • Falsch: Der Abschnitt ist standardmäßig reduziert.
    Tabelle : 6. Rückgaben
    Typ Beschreibung
    Keine

    Das folgende Beispiel zeigt, wie ein Formularabschnitt mit dem Namen festgelegt wird Related_Records Zum standardmäßigen Reduzieren.

    function onLoad() {
       g_aw.setSectionExpanded('related_records', false);
    }
    Das folgende Beispielskript zeigt, wie ein Service Desk-Mitarbeiter verwenden kann SetSectionExpanded Methode zum Öffnen eines Incidents, bei der der Abschnitt „Arbeitsnotizen“ automatisch erweitert werden soll, wenn der Incident eine hohe Priorität hat (z. B. Priorität 1 oder 2). Bei niedrigeren Prioritäten bleibt der Abschnitt reduziert, um visuelle Übersichtlichkeit zu reduzieren.
    Die wichtigsten Aktionen dieses Skripts lauten wie folgt:
    • Prioritätsbasierte Logik: Das Skript überprüft die Priorität des Incident mit G_Form.getValue('Priorität') .
    • Dynamische Abschnittssteuerung: Erweitert den Abschnitt „Arbeitsnotizen“, wenn die Priorität 1 (Kritisch) oder 2 (hoch) ist. Reduziert sie für niedrigere Prioritäten, um eine bereinigte UI beizubehalten.
    • Mitarbeiterarbeitsbereichsprüfung: Stellt sicher, dass das Skript nur in ausgeführt wird Mitarbeiterbereich.
    javascriptCopyEdit(functiontoggleWorkNotesSection() {
        // Check if we're in Agent Workspace and the method is availableif (typeof g_aw !== 'undefined' && g_aw.setSectionExpanded) {
            // Get the incident priority from the formvar priority = g_form.getValue('priority');
    
            // Automatically expand the "Work Notes" section for high-priority incidents (1 or 2)var shouldExpand = (priority == '1' || priority == '2');
    
            // Expand or collapse the section based on priority
            g_aw.setSectionExpanded('Work Notes', shouldExpand);
        }
    })();
    Sie können dieses Beispiel als Client-Skript mit dem Typ „onLoad“ für Incidents in hinzufügen Mitarbeiterbereich. Stellen Sie sicher, dass der Abschnittsname genau mit dem übereinstimmt, der im Formularlayout angezeigt wird (z. B. „Arbeitsnotizen“).

    GlideAgentWorkspace – domainScopeProvider()

    Ruft die Domänenbereichsdetails ab.

    Die DomainScopeProvider() Die Methode greift auf vier Funktionen zu, um Informationen zum Domänenbereich zurückzugeben. Informationen hierzu finden Sie unter Domain scope.

    Erforderliche Rolle: Domain_expand_scope.

    Tabelle : 7. Funktionen
    Funktionsname Rückgabetyp Beschreibung
    GetDomainScope() Zeichenfolge Ruft den Domänenbereich ab.
    Mögliche Werte:
    • Falsch: Gibt grundlegende Domäneninformationen zurück und enthält keine Informationen zu übergeordneten Domänen, geerbten Eigenschaften oder Domänenhierarchie.
    • Wahr: Gibt detaillierte Domänenbereichsinformationen zum aktuellen Datensatz oder Arbeitsbereichskontext zurück.

    Standardwert: false

    HasDomainChanged() Boolean Kennzeichnung, die angibt, ob sich die Domäne für den aktuellen Datensatz im Vergleich zur ursprünglichen Domäne geändert hat.
    Gültige Werte:
    • Wahr: Domäne hat sich geändert.
    • Falsch: Domäne wurde nicht geändert. Gibt grundlegende Domäneninformationen zurück, ohne zu bewerten, ob sich die Domäne geändert hat.

    Standardwert: false

    IsDomainEnabledRecord() Boolean Kennzeichnung, die angibt, ob die Methode überprüfen soll, ob der aktuelle Datensatz domänengetrennt ist (domänengetrennt).
    Gültige Werte:
    • Wahr: Datensatz ist domänenfähig (z. B. gilt Domänentrennung für ihn).
    • Falsch: Datensatz ist nicht domänenfähig (z. B. ist er global ohne domänenspezifische Einschränkungen vorhanden).

    Standardwert: false

    ToggleDomainScope() Boolean Kennzeichnung, die angibt, ob der Domänenbereichskontext für einen Datensatz aktiviert oder deaktiviert werden soll.
    Gültige Werte:
    • Wahr: Zeigt alle verfügbaren Daten basierend auf der Domäne des Anwenders und den untergeordneten Domänen an.
    • Falsch: Zeigt nur Daten an, die der Domäne des aktuellen Datensatzes entsprechen.

    Standardwert: wahr

    Tabelle : 8. Rückgaben
    Typ Beschreibung
    Keine

    Beispiel

    Das folgende Beispiel zeigt, wie Sie den Domänenbereich zwischen der Anwendersitzung und dem Datensatz in einem UI-Aktion Arbeitsplatz-Client-Skript als erweitert (Sitzungsumfang) oder reduziert (Datensatzumfang) umschalten.

    function onClick(g_form) {
        var provider = g_aw.domainScopeProvider();
        
        provider.toggleDomainScope();
    
        var domainScopeNow = provider.getDomainScope();
    
        if (domainScopeNow === 'SESSION')
            g_form.addInfoMessage(getMessage("Domain Scope Expanded"));
        else if (domainScopeNow === 'RECORD')
            g_form.addInfoMessage(getMessage("Domain Scope Collapsed"));
    }
    function onSubmit() {
          if (typeof g_aw === 'undefined' || !g_aw.domainScopeProvider || typeof g_scratchpad === 'undefined') return true;
          if (g_scratchpad._domainConfirmationPassed ||
              g_scratchpad._domainCheckErrorBypass || g_scratchpad._domainCheckPassed) return true;
          var provider = g_aw.domainScopeProvider();
          if (!provider || !provider.isDomainEnabledRecord || !provider.isDomainEnabledRecord()) return true;
      // if you change these messages, please change them in the above messages field var title = getMessage("Change Domain"); var message = getMessage("You are about to change the domain of this record which may result in data
          loss.We will copy the information we can but you may need to replace the lost data.Do you want to proceed ? ");
          var gFormRef = g_form;
          var popModalConfirm = function() {  g_modal.confirm(title, message , function(response) {
          if (response) {
              g_scratchpad._domainConfirmationPassed = true;
              gFormRef.submit(gFormRef.getActionName());
          }
      });
      return false;
      };
    
      var proceedWithSubmit = function() {
          gFormRef.submit(gFormRef.getActionName());
      };
    
      var hasDomainChanged = provider.hasDomainChanged();
      if (hasDomainChanged === false) return true;
      if (hasDomainChanged === true) return popModalConfirm();
      else {
          hasDomainChanged.then(function(isChanged) {
              if (isChanged)
                  return popModalConfirm();
              else {
                  g_scratchpad._domainCheckPassed = true;
                  proceedWithSubmit();
              }
          }, function(error) {
              g_scratchpad._domainCheckErrorBypass = true;
              proceedWithSubmit();
          });
          return false;
      }
    }
    Das folgende Beispielskript zeigt, wie ein Service Desk-Mitarbeiter überprüfen kann, in welcher Domäne er arbeitet, wenn er Datensätze in verarbeitet Mitarbeiterbereich. Die wichtigsten Aktionen dieses Skripts lauten wie folgt:
    • Grundlegende Prüfungen: Typ von g_aw !=='nicht definiert' Stellt sicher, dass das Skript nur in ausgeführt wird Mitarbeiterbereich. G_aw.domainScopeProvider Überprüft, ob die Methode vorhanden ist.
    • Einfache Asynchrone Verarbeitung: Verwendet .Then() Dient zur Verarbeitung des Ergebnisses, wenn die Domäneninformationen verfügbar sind. Verwendet .Catch() Zur Behandlung von Fehlern (z. B. wenn beim Abrufen der Domäne ein Fehler auftritt).
    • Anwenderfreundliche Warnung: Zeigt eine Warnung mit dem Domänennamen ( Warnung('Sie arbeiten in der Domäne: ...') ), was einfach und leicht verständlich ist. Wenn keine Domäneninformationen gefunden werden, wird der Anwender mit „ Domäneninformationen sind nicht verfügbar.
    • Fehlerbehandlung: Fehler werden mit in der -Konsole protokolliert Console.error() Für grundlegende Problembehandlung.
    (function showDomainAlert() {
        // Check if we're in Agent Workspace and the domainScopeProvider is available
        if (typeof g_aw !== 'undefined' && g_aw.domainScopeProvider) {
            // Get the current domain information
            g_aw.domainScopeProvider().then(function(domainInfo) {
                if (domainInfo && domainInfo.name) {
                    // Show an alert with the current domain name
                    alert('You are working in the domain: ' + domainInfo.name);
                } else {
                    alert('Domain information is not available.');
                }
            }).catch(function(error) {
                console.error('Error getting domain scope:', error);
            });
        }
    })();

    Sie können dieses Skript als „onLoad“-Clientskript in hinzufügen Mitarbeiterbereich. Wenn ein Service Desk-Mitarbeiter einen Datensatz öffnet, wird eine Warnung mit dem aktuellen Domänennamen angezeigt.