GlideAgentWorkspace (g_aw) – Client
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.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Keine |
Funktion onClick(g_Form) {function onClick(g_form) {
g_form.save().then(function(){
g_aw.closeRecord();
});
}
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:- Fügen Sie dieses Skript einer für konfigurierten UI-Aktion (Schaltfläche) hinzu Mitarbeiterbereich.
- Wenn auf die Schaltfläche geklickt wird, wird versucht, den aktuellen Datensatz zu schließen.
- 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);
});
}
}
- 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.
| 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. |
| 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.
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.
Standardwert: false |
| 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});
- Dynamische Datensatzöffnung: Das Skript ruft die sys_ID der zugehörigen Change-Anforderung aus dem aktuellen Incident ab.
- Mitarbeiterarbeitsbereichskontext: Überprüft, ob
G_awIst 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.');
}
}
GlideAgentWorkspace – setSectionExpanded(Zeichenfolge section_Name, boolescher Wert erweitert)
Legt einen Formularabschnitt auf den Status erweitert oder reduziert fest.
| 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.
|
| 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);
}
- 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.
| Funktionsname | Rückgabetyp | Beschreibung |
|---|---|---|
| GetDomainScope() | Zeichenfolge | Ruft den Domänenbereich ab. Mögliche Werte:
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:
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:
Standardwert: false |
| ToggleDomainScope() | Boolean | Kennzeichnung, die angibt, ob der Domänenbereichskontext für einen Datensatz aktiviert oder deaktiviert werden soll. Gültige Werte:
Standardwert: wahr |
| 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;
}
}- 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.