Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.


01. DADOS GERAIS

Produto:

Solucoes_totvs
SolucaoTOTVS Manufatura

Linha de Produto:

Linhas_totvs
SegmentoDistribuição
RegionConstrução Projetos
LinhaLinha Datasul

Segmento:

Segmentos_totvs
SegmentoTecnologia

Módulo:MenuMNU
Função:Pesquisa de ProgramasTicket:
Requisito/Story/Issue (informe o requisito relacionado) :DFWKFOUNDATION-1123


02. SITUAÇÃO/REQUISITO

Exceções causadas ao pesquisar os seguintes exemplos com usuário configurado em inglês ou espanhol.

EXCEPTION 1:

Bloco de código
2019-09-17 17:17:12,656 ERROR [org.hibernate.hql.PARSER] line 1:19230: unexpected token: s
2019-09-17 17:17:12,657 WARN  [org.hibernate.hql.ast.HqlParser] processEqualityExpression() : No expression to process!
2019-09-17 17:17:12,657 ERROR [org.hibernate.hql.PARSER] line 1:19846: unexpected token: ','
2019-09-17 17:17:12,657 ERROR [org.hibernate.hql.PARSER] line 1:20109: unexpected token: ','
2019-09-17 17:17:12,658 WARN  [org.hibernate.hql.ast.HqlParser] processEqualityExpression() : No expression to process!
2019-09-17 17:17:12,658 ERROR [org.hibernate.hql.PARSER] line 1:25867: unexpected token: ,
SIMULAÇÃO:

Buscar pela palavra "REPORT" ou "EPI" na barra de busca de programas.

ANÁLISE:

Problema ocorre quando um nome verbalizado possui aspas simples no seu conteúdo, causando erro SQL na cláusula IN. 
Deve ser avaliada ou a substituição das aspas simples por aspas duplas (pois na base está gravado com aspas duplas) ou mudar a base de dados para não ter esse tipo de caracter no nome verbalizado

--------------------------------------------------------------------------------------

EXCEPTION 2:

Bloco de código
2019-10-01 10:23:35,425 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/menu-html].[Jersey REST Service]] Servlet.service() for servlet Jersey REST Service threw exception
org.hibernate.QueryParameterException: could not locate named parameter [logVisualizMenu]

SIMULAÇÃO:

Buscar por qualquer letra com o usuário em inglês: "a, c, ca"

 --------------------------------------------------------------------------------------

EXCEPTION 3:

Bloco de código
2019-10-01 10:31:43,479 WARN  [org.hibernate.util.JDBCExceptionReporter] SQL Error: 0, SQLState: HY000
2019-10-01 10:31:43,479 ERROR [org.hibernate.util.JDBCExceptionReporter] [DataDirect][OpenEdge JDBC Driver]Software caused connection abort: recv failed.
2019-10-01 10:31:43,480 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/menu-html].[Jersey REST Service]] Servlet.service() for servlet Jersey REST Service threw exception
java.sql.SQLException: [DataDirect][OpenEdge JDBC Driver]Software caused connection abort: recv failed.
SIMULAÇÃO:

Buscar por "is, ts, ep" com o usuário em inglês.

---------------------------------------------------------------------------------------

EXCEPTION 4:

Bloco de código
2019-10-01 10:46:24,937 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/menu-html].[Jersey REST Service]] Servlet.service() for servlet Jersey REST Service threw exception
java.lang.StringIndexOutOfBoundsException: String index out of range: -1

SIMULAÇÃO:

Buscar por "is" com o usuário em espanhol

03. SOLUÇÃO

Das exceções listadas, apenas a de número 2 ("could not locate named parameter [logVisualizMenu]") foi simulada. Esta exceção é causada porque o hibernate espera como valor de parâmetro qualquer classe que herde da classe Object do Java, porém como era passado o valor "true", estava sendo utilizado o tipo primitivo de dados "boolean", que não herda da classe Object.

A solução encontrada foi alterar a cláusula WHERE da consulta gerada para outros idiomas, alterando o filtro do logVisualizMenu para não ser passado como parâmetro, mas sim ser utilizado um valor fixo direto no SQL. Antes, apesar de ser passado como parâmetro pro hibernate, o filtro logVisualizMenu sempre recebia "true", não variando. Isto faz com que seja desnecessário utilizá-lo como parâmetro, uma vez que sempre possuirá o mesmo valor, independente das variações da consulta.

A implementação desta correção no back-end foi implementada na sub-tarefa 

Jira
serverId0c783de1-186e-383b-975c-a1acd7d76cb5
keyDFWKFOUNDATION-2054
.

Mesmo não sendo simulações das demais exceções listadas, todos os testes apresentaram a exceção "org.hibernate.exception.GenericJDBCException: could not execute query", cuja causa está na maneira em que é realizada a consulta de programas quando o usuário está em um idioma diferente do português. Para realizar o filtro, primeiro são buscadas na tabela StringExtProdut todas as traduções que possuem o termo pesquisado, gerando uma lista de traduções. Em seguida, esta lista é utilizada para compor múltiplas cláusulas IN no SQL gerado sobre a tabela de programas. Quando a lista de traduções é muito extensa, são criadas múltiplas clausulas IN de tamanho 1000 (mil) cada, separadas por OR, para montar o SQL. Se este SQL final for muito extenso, o hibernate gera a exceção de connection timed out

Inconsistência ao pesquisar por apenas uma letra (ex.: "a", "b", etc.) no campo de pesquisa do menu, quando o usuário está configurado com idioma diferente do Português.

03. SOLUÇÃO

Foi inserida uma validação no campo de pesquisa do Para solucionar esta exceção, seria necessário re-estruturar a maneira como é realizada a consulta de programas para usuários em outro idioma. Por outro lado, em reunião diária realizada no dia 18 de Fevereiro de 2020, foi acordado pelo time FRAMEWORK FOUNDATION, criar uma validação na tela de menu, para que seja limitada a pesquisa para no mínimo três caracteres. A justificativa para a criação desta validação foi de que, até a data desta reunião, não havia sido apontada por cliente a problemática ao pesquisar por menos de três caracteres, evidenciando o fato de que a pesquisa por menos de três caracteres não deve ser utilizada.A implementação desta validação no front-end foi implementada na sub-tarefa 

Jira
serverId0c783de1-186e-383b-975c-a1acd7d76cb5
keyDFWKFOUNDATION-2161
.