Dúvidas sobre o Extrator de Arquivos

Boa tarde.

Criamos uma consulta em que usuários podem realizar o upload de arquivos e documentos, colocamos um botão para que este documento seja visualizado usando o extrator de arquivos.

O painel foi criado com a intenção de que o usuário faça um upload de um documento editável, que seja revisado pelo setor de qualidade e seja feito um novo upload do documento em pdf não editável para consulta.

O problema que estamos enfrentando é que em alguns casos, o documento que sai do popup para visualização do extrator não é o documento revisado que foi importado pelo usuário, notamos que essa situação acontece quando o usuário utiliza o botão criado para deletar a linha em que se encontra o registro do banco de dados do documento incluído.

Cada linha do histórico do documento é uma linha no banco de dados:


O upload do arquivo revisado está configurado como banco de dados com os parâmetros abaixo:

Algumas dúvidas:

  • Arquivo bytea do banco de dados é excluído quando rodamos um delete nessa linha do banco de dados?
  • O arquivo fica em uma área temporária mesmo após o ConfirmUploads?

Sei que estamos utilizando a versão legado do extrator de arquivos, porém não consegui utilizar o novo extrator pois ele não salva a conexão que coloco na fonte de dados.

Desde já agradeço.

Olá @GuilhermeMunhoz!

Você deve estar enfrentando um problema de cache.

Na versão legado do Extrator de Arquivos, o cache ocorre do lado do servidor:

  1. Antes de extrair o arquivo, o sistema verifica se ele já foi extraído anteriormente no servidor.

  2. Se já foi extraído, ele usa o mesmo arquivo, caso contrário faz a extração e mantém o arquivo em um diretório no servidor.

O arquivo extraído fica salvo em um caminho que termina com o nome do arquivo retornado no comando SQL. Na seu caso seria algo do tipo:

/documento_historico/apelidosetor-000-nomearquivo.ext

Se o registro for excluído do banco de dados, e um novo registro for incluído, resultando no mesmo nome de arquivo, o sistema continuará retornando o arquivo previamente extraído.

Para resolver essa situação com o Extrator de Arquivos antigo, basta adicionar uma informação única no caminho, como por exemplo: versão, hora do upload ou hash do arquivo.

Exemplos:

/documento_historico/v2/apelidosetor-000-nomearquivo.ext
/documento_historico/v3/apelidosetor-000-nomearquivo.ext
/documento_historico/202305231900/apelidosetor-000-nomearquivo.ext

Já no Extrator de Arquivos novo, o cache ocorre do lado do navegador. Neste caso, é o mecanismo de cache padrão do navegador entrando em ação, que armazena as resposta usando a URL como chave para isso.

Por exemplo, quando um arquivo for solicitado passando o parâmetro “codigo” com valor valor “1”, acontece uma requisição HTTP para o seguinte endereço:

api/fileextractors/<Codigo do Extrator>/downloadfile/?codigo=1

Neste caso, o navegador armazena o arquivo obtido em cache, e na próxima vez que a mesma URL for solicitada, a requisição não vai nem sequer chegar ao servidor.

Qualquer alteração na URL, romperia o cache. Por exemplo:

api/fileextractors/<Codigo do Extrator>/downloadfile/?codigo=2
api/fileextractors/<Codigo do Extrator>/downloadfile/?codigo=1&v=2

Neste caso, existem duas alternativa para solucionar o problema:

  1. Criar um parâmetro no Extrator de Arquivos para passar um valor capaz de gerar uma URL diferente e romper o cache (ex. “v” de versão)

  2. Desabilitar o cache, informando 0 no tempo de duração do mesmo. Essa é uma opção exclusiva do Extrator de Arquivos novo.


Quanto ao fato de não estar salvando a conexão informada no Extrator de Arquivos novo, isso acontece porque nenhum Código de Atualização (Cód. Atualização) foi informado no cadastro da conexão. Uma mensagem de crítica deve estar sendo exibida na validação do Extrator, antes de salvar, apontando este erro.

O Código de Atualização é um identificador universal da conexão (e de qualquer Objeto), usado para encontrar referências em outros ambientes, quando os objetos desenvolvidos são exportados e importados. Todos os novos objetos, desenvolvimentos ou convertidos após o lançamento do Bot de Mensagens usam este código como identificador da conexão. Neste caso, basta clicar no botão “Gen” ao lado do campo para gerar um novo código, e depois salvar a conexão.

Obrigado pela resposta @daniel.giacomelli

Vamos verificar o cache do servidor para o extrator antigo.

Como havia comentado não estou conseguindo utilizar o extrator de arquivos novo pois ele não está salvando a conexão do banco de dados em Fonte de dados.

Quando seleciono a base ITMS-Homologação e aperto no botão salvar ocorre um erro que não foi informado o banco de dados, quando eu clico em outro lugar como “Parâmetros” ao retornar para a Fonte de dados o campo conexão fica vazio.

Testei com outro banco de dados e está salvando normalmente. Mas nossos arquivos estão no ITMS, gostaríamos de utilizar o novo extrator para testes, mas estou com esse impeditivo.

Desde já agradeço.

@GuilhermeMunhoz faça iso no cadastro da conexão