GlideAgentWorkspace (g_aw) - Cliente

  • Versão de lançamento: Zurich
  • Atualizado 31 de jul. de 2025
  • 10 min. de leitura
  • . 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.

    Tabela 1. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 2. Retorna
    Tipo Descrição
    Nenhum(a)
    O exemplo a seguir salva o conteúdo da guia e o fecha.
    Função onClick(g_form
    function onClick(g_form) {
      g_form.save().then(function(){
        g_aw.closeRecord();
      });
    }
    O script de exemplo a seguir usa 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:
    1. Adicione este script a uma Ação de IU (botão) configurada para Espaço do agente.
    2. Ao clicar no botão, ele tentará fechar o registro atual.
    3. 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);
            });
        }
    }
    Em um exemplo mais complexo, o. CloseRecord() o método é aplicado em um client script em que um agente de suporte deseja fechar automaticamente um registro de incidente no Espaço do agente depois de executar uma ação específica, como resolver o incidente. As principais ações deste script são as seguintes:
    • 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.

    Nota:
    Este método só está disponível em Espaço do agente Ambiente de script de cliente ou em uma ação de IU no campo de script de cliente do espaço.
    Tabela 3. Parâmetros
    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": Boolean;
      "defaultTab": "String";
      "hideDetails": Boolean
    }
    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.
    • Verdadeiro: Todos os campos são somente leitura.
    • Falso: Os campos aderem à política de IU associada e às 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.
    • Verdadeiro: Somente o cabeçalho do formulário, todas as outras guias e a primeira guia disponível aparecem no formulário.
    • Falso: A guia Detalhes e as ações de IU aparecem no formulário.

    Padrão: falso

    Tabela 4. Retornos
    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}); 
    O script de exemplo a seguir demonstra como um agente pode adicionar um botão a um incidente que abre uma solicitação de mudança relacionada em uma nova guia no Espaço do agente. As principais ações deste script são as seguintes:
    • 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_aw está 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: Verdadeiro abre 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.');
        }
    }
    Nota:
    Você pode usar este script em sua própria instância anexando-o a uma Ação de IU (botão) no formulário Incidente em Espaço do agente. Clicar no botão abre a solicitação de mudança relacionada em uma nova guia, melhorando o fluxo de trabalho do agente.

    GlideAgentWorkspace - setSectionExpanded(cadeia de caracteres section_name, booliano expandido)

    Define uma seção de formulário para o estado expandido ou recolhido.

    Tabela 5. Parâmetros
    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.
    • Verdadeiro: A seção é expandida por padrão.
    • Falso: A seção é recolhida por padrão.
    Tabela 6. Retornos
    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);
    }
    O script de exemplo a seguir demonstra como um agente pode usar o. SetSectionExpanded Método para abrir um incidente em que a seção "Anotações de trabalho" deve ser expandida automaticamente se o incidente tiver uma prioridade alta (por exemplo, prioridade 1 ou 2). Para prioridades mais baixas, a seção permanece recolhida para reduzir a desordem visual.
    As principais ações deste script são as seguintes:
    • 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.

    Tabela 7. Funções
    Nome da função Tipo de Retorno Descrição
    DomainScope() Cadeia de caracteres Obtém o escopo do domínio.
    Valores possíveis:
    • Falso: Retorna informações básicas do domínio e não inclui informações sobre domínios primários, propriedades herdadas ou hierarquia de domínio.
    • Verdadeiro: Retorna informações detalhadas do escopo do domínio sobre o registro atual ou o contexto do espaço.

    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:
    • Verdadeiro: O domínio foi alterado.
    • Falso: O domínio não foi alterado. Retorna informações básicas de domínio sem avaliar se o domínio foi alterado.

    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:
    • Verdadeiro: O registro é habilitado para domínio (por exemplo, a separação de domínio se aplica a ele).
    • Falso: O registro não está habilitado para domínio (por exemplo, existe globalmente sem restrições específicas do domínio).

    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:
    • Verdadeiro: Exibe todos os dados disponíveis com base no domínio do usuário e nos domínios secundários.
    • Falso: Exibe somente dados que correspondem ao domínio do registro atual.

    Padrão: verdadeiro

    Tabela 8. Retornos
    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;
      }
    }
    O script de exemplo a seguir demonstra como um agente pode verificar em qual domínio ele está trabalhando ao lidar com registros no Espaço do agente. As principais ações deste script são as seguintes:
    • Verificações básicas: "indefinido" garante que o script seja executado somente em Espaço do agente. DomainScopeProvider verifica 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.