GlideAgentWorkspace (g_aw) - Client
L’API g_aw fournit des méthodes qui permettent à une action d’interface utilisateur ou à un script client d’ouvrir un enregistrement spécifié dans un Espace de travail d'agent onglet.
Il n’existe aucun constructeur pour cette classe. Accédez aux méthodes GlideAgentWorkspace à l’aide de l’objet global g_aw .
GlideAgentWorkspace : closeRecord()
Ferme l’enregistrement actuellement ouvert, tel qu’un formulaire, dans un sous-onglet au sein de Espace de travail d'agent.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Aucun |
fonction onClick(g_form) {function onClick(g_form) {
g_form.save().then(function(){
g_aw.closeRecord();
});
}
g_aw.closeRecord() pour fermer un enregistrement lorsqu’un bouton est cliqué dans Espace de travail d'agent. Vous pouvez utiliser ce script comme suit :- Ajouter ce script à une action d’interface utilisateur (bouton) configurée pour Espace de travail d'agent.
- Lorsque vous cliquez sur le bouton, il tente de fermer l’enregistrement actuel.
- La journalisation de base indique la réussite ou l’échec.
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);
});
}
}
- Condition de déclenchement : le script vérifie si l’état de l’incident est défini sur « Résolu » (
état = 6). - Validation de l’espace de travail : garantit que le code s’exécute uniquement à l’aide Espace de travail d'agent
du type de g_aw !== 'non défini'. - Gestion des promesses : Utilise .then() et .catch() pour gérer la nature asynchrone de closeRecord().
- Gestion des erreurs : fournit une journalisation détaillée des tentatives réussies et échouées.
(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(Table de chaînes, SysId de chaîne, Paramètres d’objet)
Ouvre un enregistrement spécifié, tel qu’un formulaire, dans un sous-onglet dans Espace de travail d'agent.
| Nom | Type | Description |
|---|---|---|
| Table | Chaîne | Nom de la table qui contient l’enregistrement à ouvrir. |
| sysId | Chaîne | ID système de l’enregistrement à ouvrir. |
| paramètres | Objet | Facultatif. Paires nom/valeur des paramètres à transmettre à l’enregistrement. |
| params.readOnlyForm | Booléen | Marqueur indiquant si tous les champs de l’enregistrement ouvert sont en lecture seule ; indépendamment de la politique d’interface utilisateur et des ACL.
Valeur par défaut : false |
| params.defaultTab | Chaîne | Nom du premier onglet à afficher dans l’espace de travail. Vous pouvez uniquement spécifier des éléments connexes ou des listes connexes. S’il n’est pas spécifié, l’onglet Détails s’affiche sauf si hideDetails la valeur est définie sur vrai. Pour plus d’informations sur la méthode à utiliser pour obtenir un nom de liste connexe, consultez getRelatedListNames(). |
| params.hideDetails | Booléen | Marqueur indiquant s’il faut masquer l’onglet Détails et les actions d’interface utilisateur.
Valeur par défaut : false |
| Type | Description |
|---|---|
| Aucun |
Ouvrez un enregistrement sys_user dans un sous-onglet.
g_aw.openRecord('sys_user', '62826bf03710200044e0bfc8bcbe5df1');
Ouvrez un enregistrement dans un sous-onglet où tous les champs sont en lecture seule.
g_aw.openRecord('sys_user', '62826bf03710200044e0bfc8bcbe5df1', {readOnlyForm: true});
Ouvrez un enregistrement dans un sous-onglet et accédez directement à la liste connexe « Groupes ».
g_aw.openRecord('sys_user', '62826bf03710200044e0bfc8bcbe5df1', {defaultTab: "sys_user_grmember.user"});
Ouvrir un enregistrement dans un sous-onglet, mais afficher uniquement l’en-tête du formulaire et les autres onglets.
g_aw.openRecord('sys_user', '62826bf03710200044e0bfc8bcbe5df1', {hideDetails: true});
- Ouverture dynamique d’enregistrement : le script récupère la sys_id de la demande de changement connexe à partir de l’incident actuel.
- Contexte d’Espace de travail
d’agent: vérifie si g_aw est disponible pour confirmer l’exécution du script dans Espace de travail d'agent. - Paramètres personnalisés :
Vue : « Agent » ouvre l’enregistrementdans une vue spécifique (facultatif).readOnly : trueouvre l’enregistrement en mode lecture seule (facultatif).
- Gestion des erreurs : utilise .then() et .catch() pour gérer les réponses et les erreurs.
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(chaîne section_name, booléen développé)
Définit une section de formulaire sur l’état développé ou réduit.
| Nom | Type | Description |
|---|---|---|
| section_name | Chaîne | Nom d’une section de formulaire dans Espace de travail d'agent. |
| développé | Booléen | Marqueur indiquant si une section doit être développée ou réduite par défaut.
|
| Type | Description |
|---|---|
| Aucun |
L’exemple suivant montre comment définir une section de formulaire nommée related_records pour qu’elle soit réduite par défaut.
function onLoad() {
g_aw.setSectionExpanded('related_records', false);
}
- Logique basée sur les priorités : le script vérifie la priorité de l’incident à
l’aide de g_form.getValue('priority'). - Contrôle de section dynamique : développe la section « Notes de travail » si la priorité est de 1 (critique) ou 2 (élevée). Le réduit pour les priorités inférieures afin de maintenir une interface utilisateur plus propre.
- Vérification de l’espace de travail d’agent : garantit que le script ne s’exécute que dans Espace de travail d'agent.
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);
}
})(); Vous pouvez ajouter cet exemple en tant que script client avec le type défini sur « onLoad » pour les incidents dans Espace de travail d'agent. Assurez-vous que le nom de la section correspond exactement à ce qu’il apparaît dans la mise en page du formulaire (par exemple, « Notes de travail »).GlideAgentWorkspace : domainScopeProvider()
Obtient les détails du champ d’application du domaine.
La méthode domainScopeProvider() accède à quatre fonctions pour renvoyer des informations sur le champ d’application du domaine. (pour en savoir plus, consultez Domain scope) ;
Rôle requis – domain_expand_scope.
| Nom de fonction | Type de retour | Description |
|---|---|---|
| getDomainScope() | Chaîne | Obtient le champ d’application de domaine. Valeurs possibles :
Valeur par défaut : false |
| hasDomainChanged() | Booléen | Marqueur indiquant si le domaine a changé pour l’enregistrement actuel par rapport à son domaine d’origine. Valeurs valides :
Valeur par défaut : false |
| isDomainEnabledRecord() | Booléen | Marqueur indiquant si la méthode doit vérifier si l’enregistrement actuel est séparé par domaine (activé par domaine). Valeurs valides :
Valeur par défaut : false |
| toggleDomainScope() | Booléen | Marqueur indiquant s’il faut activer ou désactiver le contexte du champ d’application de domaine pour un enregistrement. Valeurs valides :
Par défaut : true |
| Type | Description |
|---|---|
| Aucun |
Exemple
L’exemple suivant montre comment basculer le champ d’application de domaine entre la session utilisateur et l’enregistrement en tant que développé (champ d’application de la session) ou réduit (champ d’application de l’enregistrement) dans un script client du lieu de travail d’action d’interface utilisateur.
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;
}
}- Vérifications de base :
typeof g_aw !=='undefined' garantit que le script ne s’exécute qu’enEspace de travail d'agent.g_aw.domainScopeProvidervérifie si la méthode existe. - Gestion asynchrone simple : utilise
.then()pour traiter le résultat lorsque les informations de domaine sont disponibles. Utilise.catch()pour gérer les erreurs (par exemple, si quelque chose ne va pas lors de l’extraction du domaine). - Alerte conviviale : affiche une alerte avec le nom de domaine (
alert('Vous travaillez dans le domaine :...')), qui est simple et facile à comprendre. Si aucune information de domaine n’est trouvée, il alerte l’utilisateur avec "Les informations de domaine ne sont pas disponibles." - Gestion des erreurs : les erreurs sont enregistrées sur la console à l’aide de
console.error()pour le dépannage de base.
(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);
});
}
})();
Vous pouvez ajouter ce script en tant que script client « onLoad » dans Espace de travail d'agent. Lorsqu’un agent ouvre un enregistrement, une alerte s’affiche affichant le nom de domaine actuel.