GlideAgentWorkspace (g_aw) - Cliente
. g_aw A API fornece métodos que permitem que uma ação de IU ou script de cliente abra um registro especificado em um Espaço do agente guia.
Não há construtor para esta classe. Acesso GlideAgentWorkspace métodos que usam g_aw objeto global.
GlideAgentWorkspace - closeRecord()
Fecha o registro aberto no momento, como um formulário, em uma subguia em Espaço do agente.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| Nenhum(a) |
Função onClick(g_form
function onClick(g_form) {
g_form.save().then(function(){
g_aw.closeRecord();
});
}
G_aw.CloseRecord() método para fechar um registro quando um botão é clicado Espaço do agente. Você pode usar este script da seguinte forma:- Adicione este script a uma Ação de IU (botão) configurada para Espaço do agente.
- Ao clicar no botão, ele tentará fechar o registro atual.
- O registro em log básico indica sucesso ou falha.
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);
});
}
}
- Condição do gatilho: O script verifica se o estado do incidente está definido como "Resolvido" (
estado: 6). - Validação do espaço: Garante que o código seja executado somente em Espaço do agente usando
"undefined". - Tratamento de promessas: Usos .then() e. .catch() para lidar com a natureza assíncrona de CloseRecord() .
- Tratamento de erros: Fornece registro em log detalhado para tentativas bem-sucedidas e com falha.
(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 (tabela de cadeia de caracteres, SYSID de cadeia de caracteres, parâmetros de objeto)
Abre um registro especificado, como um formulário, em uma subguia em Espaço do agente.
| Nome | Tipo | Descrição |
|---|---|---|
| tabela | Cadeia de caracteres | Nome da tabela que contém o registro a ser aberto. |
| sysId | Cadeia de caracteres | Sys ID do registro a ser aberto. |
| parâms | Objeto | Opcional. Pares de nome/valor dos parâmetros a serem passados para o registro. |
| params.readOnlyForm | Booliano | Sinalizador que indica se todos os campos no registro aberto são somente leitura, independentemente da política de IU e das ACLs.
Padrão: falso |
| params.defaultTab | Cadeia de caracteres | Nome da guia inicial a ser exibida no espaço. Você só pode especificar itens relacionados ou listas relacionadas. Se não for especificado, a guia de detalhes será exibida, a menos que hideDetailsdefinido como verdadeiro. Para obter mais informações sobre o método a ser usado para obter um nome de lista relacionada, consulte GetListNamesRelacionadosListNames() . |
| params.hideDetails | Booliano | Sinalizador que indica se a guia de detalhes e as ações de IU devem ser ocultadas.
Padrão: falso |
| Tipo | Descrição |
|---|---|
| Nenhum(a) |
Abra um registro sys_user em uma subguia.
g_aw.openRecord('sys_user', '62826bf03710200044e0bfc8bcbe5df1');
Abra um registro em uma subguia em que todos os campos são somente leitura.
g_aw.openRecord('sys_user', '62826bf03710200044e0bfc8bcbe5df1', {readOnlyForm: true});
Abra um registro em uma subguia e vá diretamente para a lista relacionada "Grupos".
g_aw.openRecord('sys_user', '62826bf03710200044e0bfc8bcbe5df1', {defaultTab: "sys_user_grmember.user"});
Abra um registro em uma subguia, mas mostre somente o cabeçalho do formulário e outras guias.
g_aw.openRecord('sys_user', '62826bf03710200044e0bfc8bcbe5df1', {hideDetails: true});
- Abertura de registro dinâmico: O script recupera o sys_id da solicitação de mudança relacionada do incidente atual.
- Contexto do Espaço do agente: Verifica se
g_awestá disponível para confirmar que o script está sendo executado em Espaço do agente. - Parâmetros personalizados:
exibir: 'agente'abre o registro em uma exibição específica (opcional).ReadOnly: Verdadeiroabre o registro no modo somente leitura (opcional).
- Tratamento de erros: Usa .then() e. .catch() para lidar com respostas e erros.
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(cadeia de caracteres section_name, booliano expandido)
Define uma seção de formulário para o estado expandido ou recolhido.
| Nome | Tipo | Descrição |
|---|---|---|
| section_name | Cadeia de caracteres | Nome de uma seção de formulário em Espaço do agente. |
| expandido | Booliano | Sinalizador que indica se uma seção deve ser expandida ou recolhida por padrão.
|
| Tipo | Descrição |
|---|---|
| Nenhum(a) |
O exemplo a seguir mostra como definir uma seção de formulário chamada related_records para recolher por padrão.
function onLoad() {
g_aw.setSectionExpanded('related_records', false);
}
- Lógica baseada em prioridade: O script verifica a prioridade do incidente usando
G_form.getValue('Prioridade'). - Controle de seção dinâmico: Expande a seção "Anotações de trabalho" se a prioridade for 1 (Crítica) ou 2 (Alta). Recolhe-o para prioridades mais baixas para manter uma IU mais limpa.
- Verificação do Espaço do agente: Garante que o script seja executado somente no Espaço do agente.
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);
}
})(); Você pode adicionar este exemplo como um client script com o tipo definido como "onLoad" para incidentes em Espaço do agente. Certifique-se de que o nome da seção corresponda exatamente ao que aparece no layout do formulário (por exemplo, "Anotações de trabalho").GlideAgentWorkspace - domainScopeProvider()
Obtém os detalhes do escopo do domínio.
. DomainScopeProvider() o método acessa quatro funções para retornar informações sobre o escopo do domínio. Para obter informações, consulte Domain scope.
Função necessária – domain_expand_scope.
| Nome da função | Tipo de Retorno | Descrição |
|---|---|---|
| DomainScope() | Cadeia de caracteres | Obtém o escopo do domínio. Valores possíveis:
Padrão: falso |
| DomainChanged() | Booliano | Sinalizador que indica se o domínio foi alterado para o registro atual em comparação com seu domínio original. Valores válidos:
Padrão: falso |
| IsDomainHabilitledRecord() | Booliano | Sinalizador que indica se o método deve verificar se o registro atual é separado por domínio (habilitado para domínio). Valores válidos:
Padrão: falso |
| ToggleDomainScope() | Booliano | Sinalizador que indica se o contexto de escopo do domínio deve ser habilitado ou desabilitado para um registro. Valores válidos:
Padrão: verdadeiro |
| Tipo | Descrição |
|---|---|
| Nenhum(a) |
Exemplo
O exemplo a seguir mostra como alternar o escopo do domínio entre a sessão do usuário e o registro como expandido (escopo da sessão) ou recolhido (escopo do registro) em um script de cliente do local de trabalho de ação de IU.
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;
}
}- Verificações básicas:
"indefinido"garante que o script seja executado somente em Espaço do agente.DomainScopeProviderverifica se o método existe. - Tratamento assíncrono simples: Usos
.then()para processar o resultado quando as informações do domínio estiverem disponíveis. Usos.catch()para lidar com erros (por exemplo, se algo der errado ao buscar o domínio). - Alerta amigável: Exibe um alerta com o nome do domínio (
Alerta('Você está trabalhando no domínio: ...')), que é simples e fácil de entender. Se nenhuma informação de domínio for encontrada, ele alertará o usuário com "As informações de domínio não estão disponíveis." - Tratamento de erros: Os erros são registrados no console usando
console.error()para solução de problemas básica.
(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);
});
}
})();
Você pode adicionar este script como um Client Script "onLoad" em Espaço do agente. Quando um agente abre um registro, um alerta será exibido mostrando o nome do domínio atual.