Guia de solução de problemas do widget
Use as ferramentas a seguir para investigar e resolver comportamento inesperado em seu personalizado Portal de serviços widgets.
- Reduza a complexidade
- Desative widgets não relacionados ao widget do qual você está solucionando problemas 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 a execução de scripts associados.
- Use 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 enviam informações para este console.
Se você tiver problemas de desempenho, verifique o console JavaScript para ver se há erros, um grande número de solicitações HTTP ou solicitações HTTP que demoram muito tempo para serem resolvidas. Você pode usar o console para identificar widgets que carregam lentamente. Para obter mais informações, consulte Como identificar um widget lento em uma página [KB0744521] artigo na Base de conhecimento do Now Support.
- Determine 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 Platform performance.
- Determine se o problema afeta todo o portal ou páginas específicas. Se todas as páginas do portal estiverem lentas, verifique se itens de menu com script no menu de cabeçalho ou temas com fonte grande ou arquivos de imagem 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] quanto a 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 Seis armadilhas de desempenho comuns no Portal de serviços e como evitá-las [KB0634588] artigo na Base de conhecimento do Now Support.
- Use o menu de contexto do widget para acessar informações e opções
- CTRL e clique com o botão direito do mouse um widget para acessar as opções de configuração do widget. Também há opções para enviar o objeto de dados de escopo e escopo para o console do navegador. Para obter mais detalhes sobre este menu, consulte Usando 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 em seu código do lado do servidor e 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 Saída de logs para as entradas de log do Portal de serviços [ sp_log tabela ], quando o usuário conectado tem sp_adminouadministradorfunção.gs.log() Servidor Saída de logs para a tabela Log [syslog]. Nota:gs.log cria registros na tabela syslog. O uso excessivo pode afetar negativamente o desempenho.gs.warn() Servidor Produz saída de nível de aviso na tabela Log [syslog]. gs.error() Servidor Produz 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. ErrorMessage() 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. (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. - Verifique se há restrições de segurança
Muitas vezes, 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 estão acessíveis em um widget estão acessíveis 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 um Você não está autorizado ou o registro não é válido mensagem de erro para um Catálogo de serviços widget, verifique se o item não está oculto Portal de serviços.
- Verifique os provedores Angular associados
- Verifique se os provedores Angular necessários estão associados a widgets. Remover os provedores Angular padrão associados a um widget do sistema de base pode causar um comportamento inesperado. Por exemplo, removendo os provedores angular scToggleData ou scBindHtmlCompile do widget Item do catálogo SC.
- Crie uma referência ao escopo dos widgets no console
- Use referência a um widget para manipular dados de escopo ou executar manualmente os scripts de cliente e servidor de 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 widget de atributo
widget. Alguns elementos acima do elemento inspecionado no momento. 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();
AngularJS()no escopo para aplicar 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 refresh para executar manualmente o script do servidor de widgets.
scopeRef.server.refresh();