Guia de solução de problemas de widget

  • Versão de lançamento: Xanadu
  • Atualizado 1 de ago. de 2024
  • 5 min. de leitura
  • Use as ferramentas a seguir para investigar e resolver comportamentos inesperados em seus widgets Portal de serviços personalizados.

    Reduzir a complexidade
    Desative widgets não relacionados ao widget que você está solucionando para isolar partes da página que podem estar causando erros ou comportamento inesperado. Defina o campo ativo como falso em um registro de widget para ocultar o widget na página e impedir que os scripts associados sejam executados.
    Usar o console do desenvolvedor do navegador

    Todos os navegadores de desktop compatíveis têm ferramentas de desenvolvedor integradas. Acesse as ferramentas de desenvolvedor do navegador para exibir mensagens do console e erros lançados pelo JavaScript do lado do cliente. Muitas das ferramentas de registro em log detalhadas abaixo geram informações para este console.

    Se você tiver problemas de desempenho, verifique o console do JavaScript para ver se há erros, um grande número de solicitações HTTP ou solicitações HTTP que demoram muito para serem resolvidas. Você pode usar o console para identificar quaisquer widgets que carreguem lentamente. Para obter mais informações, consulte o artigo Como identificar um widget lento em uma página [KB0744521] na Base de conhecimento do Now Support.

    Determinar a causa dos problemas de desempenho

    As dicas a seguir podem ajudar a determinar a causa de problemas de desempenho em portais:

    • Determine se o problema está relacionado ao portal ou a toda a plataforma comparando a funcionalidade em ambas as interfaces. Para obter mais informações sobre problemas de desempenho da plataforma, consulte Desempenho da plataforma.
    • Determine se o problema afeta o portal inteiro ou páginas específicas. Se todas as páginas no portal estiverem lentas, verifique se itens de menu com script no menu de cabeçalho ou temas com arquivos de imagem ou fonte grandes podem ser a causa. Se uma página específica estiver lenta, use o console do desenvolvedor do navegador para determinar qual widget pode ser a causa.
    • Verifique a tabela Log [syslog] em busca de avisos relacionados a objetos JSON grandes que causam lentidão. Se esses avisos forem exibidos com a ação que causa lentidão, isso indica que um widget está usando muitos dados.

    Para obter mais informações, consulte o artigo Seis problemas comuns de desempenho no Portal de serviços e como evitá-los [KB0634588] na Base de conhecimento do Now Support.

    Use o menu de contexto do widget para acessar informações e opções
    CTRL + clique com o botão direito do mouse em um widget para acessar as opções de configuração do widget. Também há opções para gerar o escopo e o objeto de dados do escopo para o console do navegador. Para obter mais detalhes sobre este menu, consulte Como usar widgets do portal.
    Use métodos de script para capturar a saída de depuração

    Vários métodos estão disponíveis para gerar informações de depuração no código do servidor e do lado do cliente.

    Tabela 1. Métodos de depuração com script
    Método Disponibilidade Descrição
    console.log() Servidor e cliente Registra a saída no console do desenvolvedor do navegador.
    $sp.log() Servidor Registra a saída na tabela Entradas de log do Portal de serviços [sp_log], quando o usuário conectado tem a função sp_admin ou admin.
    gs.log() Servidor Registra a saída na tabela Log [syslog].
    Nota:
    gs.log cria registros na tabela syslog. O uso excessivo pode afetar negativamente o desempenho.
    gs.warn() Servidor Produz uma saída de nível de aviso na tabela Log [syslog].
    gs.error() Servidor Produz a saída de nível de erro na tabela Log [syslog].
    gs.addInfoMessage() Servidor Exibe uma mensagem informativa verde na parte superior da janela do navegador.
    gs.addErrorMessage() Servidor Exibe uma mensagem de erro vermelha na parte superior da janela do navegador.
    spUtil.addErrorMessage() Cliente Exibe uma mensagem de erro na janela do navegador.
    spUtil.addInfoMessage() Cliente Exibe uma mensagem informativa na janela do navegador.
    spUtil.addTrivialMessage() Cliente Exibe uma mensagem que desaparece automaticamente após um curto período de tempo.
    depurador Cliente Define um ponto de interrupção nos navegadores Chrome e Firefox, permitindo que você percorra um script linha por linha no console do desenvolvedor dos navegadores.
    {{data|json}} HTML Este código pode ser adicionado ao código HTML de uma página para gerar o objeto de dados para a página do portal no formato JSON.
    Verificar restrições de segurança

    Frequentemente, os problemas de exibição do widget são causados por regras de acesso ou critérios do usuário, em vez do script do widget. Verifique os critérios do usuário para registros e verifique se todos os registros que não podem ser acessados em um widget podem ser acessados usando a IU da plataforma. Use o depurador de ACL para garantir que os usuários tenham o acesso esperado aos registros usados por seus widgets. Para obter mais detalhes sobre o depurador, consulte Ferramentas de depuração de ACL.

    Catálogo de serviços itens também podem ser restritos para não aparecer em Portal de serviços. Se você receber uma mensagem de erro Você não está autorizado ou o registro não é válido para um widget Catálogo de serviços, verifique se o item não está oculto de Portal de serviços.

    Verifique os provedores angulares associados
    Verifique se os provedores angulares necessários estão associados aos widgets. Remover os provedores angulares padrão associados a um widget do sistema de base pode causar um comportamento inesperado. Por exemplo, remover os provedores angulares scToggleData ou scBindHtmlCompile do widget de item do catálogo SC.
    Criar uma referência ao escopo dos widgets no console
    Use a referência a um widget para manipular dados de escopo ou executar manualmente os scripts de cliente e servidor dos widgets. Use as etapas a seguir para criar a referência.
    • 1. Clique com o botão direito do mouse no widget e escolha Inspecionar.
    • 2. Na guia Elementos das ferramentas de desenvolvimento, clique para realçar o elemento com o atributo widget=widget. Você pode encontrá-lo alguns elementos acima do elemento atualmente inspecionado. Este elemento aponta a ferramenta de script $0 para o widget.
    • No console Javascript, execute o seguinte código:
      var scopeRef = angular.element($0).scope();
    Use a referência ao seu widget para mudar os dados no console. Veja o exemplo a seguir. Lembre-se de executar o AngularJS $apply() no escopo para aplicar as mudanças à página.
    scopeRef.data.prop1 = "Pear";
    scopeRef.$apply();
    Execute qualquer função definida no controlador do cliente de widgets a partir da sua referência usando a sintaxe abaixo.
    scopeRef.exampleFunction();

    Use o comando de atualização para executar manualmente o script do servidor de widgets.

    scopeRef.server.refresh();