GlideAgentWorkspace (g_aw) – Client
Die g_aw- API stellt Methoden bereit, mit denen eine UI-Aktion oder ein Client-Skript einen angegebenen Datensatz auf der Registerkarte Mitarbeiterbereich öffnen kann.
Für diese Klasse ist kein Konstruktor vorhanden. Greifen Sie mit dem globalen Objekt g_aw auf GlideAgentWorkspace -Methoden zu.
GlideAgentWorkspace – schließenDatensatz ()
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(), um einen Datensatz zu schließen, wenn Sie in Mitarbeiterbereichauf eine Schaltfläche klicken. Sie können dieses Skript wie folgt verwenden:- Fügen Sie dieses Skript einer für Mitarbeiterbereichkonfigurierten UI-Aktion (Schaltfläche) hinzu.
- Beim Klicken auf die Schaltfläche wird versucht, den aktuellen Datensatz zu schließen.
- Standardprotokollierung 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 prüft, ob der Status des Incidents auf „Gelöst“ festgelegt ist (
Status = 6). - Arbeitsbereichsvalidierung: Stellt sicher, dass der Code nur innerhalb von Mitarbeiterbereich mit
dem Typ g_aw !== 'undefined'ausgeführt wird. - Promise-Handler: Verwendet .then() und .catch(), um die Asynchronität von closeRecord()zu handhaben.
- 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, Zeichenfolgen-Sys-ID, 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. |
| params.readOnlyForm | 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 ersten 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, hideDetails ist auf „wahr“ festgelegt. Weitere Informationen zur Methode zum Abrufen des Namens einer zugehörigen Liste finden Sie unter getRelatedListNames(). |
| params.hideDetails | 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 untergeordneten Registerkarte.
g_aw.openRecord('sys_user', '62826bf03710200044e0bfc8bcbe5df1');
Öffnen Sie einen Datensatz auf einer Unterregisterkarte, in 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 jedoch nur den Formularheader und andere Registerkarten an.
g_aw.openRecord('sys_user', '62826bf03710200044e0bfc8bcbe5df1', {hideDetails: true});
- Dynamische Datensatzeröffnung: Das Skript ruft die sys_id der zugehörigen Change-Anforderung aus dem aktuellen Incident ab.
- Mitarbeiterbereich-Kontext: Prüft, ob
g_awverfügbar ist, um zu bestätigen, dass das Skript in Mitarbeiterbereichausgeführt wird. - Anwenderdefinierte Parameter:
Ansicht: „Agent“öffnet den Datensatz in einer bestimmten Ansicht (optional).readOnly: „wahr“öffnet den Datensatz im schreibgeschützten Modus (optional).
- Fehlerbehandlung: Verwendet .then() und .catch() für die 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)
Versetzt einen Formularabschnitt in den Status „Erweitert“ oder „Reduziert“.
Einen Anwendungsfall finden Sie unter .
| 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 Sie einen Formularabschnitt namens „related_records“ so festlegen, dass er standardmäßig reduziert wird.
function onLoad() {
g_aw.setSectionExpanded('related_records', false);
}
- Prioritätsbasierte Logik: Das Skript überprüft die Priorität des incident mithilfe von
g_form.getValue('priority'). - Dynamische Abschnittssteuerung: Erweitert den Abschnitt „Arbeitsnotizen“, wenn die Priorität 1 (Kritisch) oder 2 (Hoch) ist. Reduziert sie für niedrigere Prioritäten, um die Anwenderoberfläche übersichtlicher zu gestalten.
- Prüfung des Mitarbeiterbereichs: Stellt sicher, dass das Skript nur in Mitarbeiterbereichausgeführt wird.
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 hinzufügen, dessen Typ für Incidents in Mitarbeiterbereichauf „onLoad“ festgelegt ist. Stellen Sie sicher, dass der Abschnittsname genau mit dem Formularlayout übereinstimmt (z. B. „Arbeitsnotizen“).GlideAgentWorkspace – domainScopeProvider()
Ruft die Details des Domänenbereichs ab.
Die Methode „domainScopeProvider()“ 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 |
|---|---|---|
| abrufenDomänenBereich () | 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 zu ihrer ursprünglichen Domäne geändert hat. Gültige Werte:
Standardwert: false |
| istDomäneAktivierterDatensatz () | Boolean | Kennzeichnung, die angibt, ob die Methode überprüfen soll, ob der aktuelle Datensatz domänengetrennt (domänenfähig) ist. 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 erweiterten (Sitzungsbereich) oder reduzierten (Datensatzbereich) Datensatz in einem Arbeitsplatz-Client-Skript einer UI-Aktion 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;
}
}- Standardprüfungen:
typeof g_aw !=='undefined'stellt sicher, dass das Skript nur in Mitarbeiterbereichausgeführt wird.g_aw.domainScopeProviderprüft, ob die Methode vorhanden ist. - Einfache asynchrone Verarbeitung: Verwendet
.then(),um das Ergebnis zu verarbeiten, wenn die Domäneninformationen verfügbar sind. Verwendet.catch(), um etwaige Fehler zu behandeln (z. B. wenn beim Abrufen der Domäne ein Fehler auftritt). - Anwenderfreundliche Warnung: Zeigt eine Warnung mit dem Domänennamen (
alert('Sie arbeiten in der Domäne: ...')) an, die einfach und leicht zu verstehen ist. Wenn keine Domäneninformationen gefunden werden, wird der Benutzer mit „Domäneninformationen sind nicht verfügbar“ benachrichtigt. - Fehlerbehandlung: Fehler werden für die grundlegende Problembehandlung mithilfe von
Console.error()in der Konsole protokolliert.
(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“-Client-Skript in Mitarbeiterbereichhinzufügen. Wenn ein Agent einen Datensatz öffnet, wird eine Warnung mit dem aktuellen Domänennamen angezeigt.