# Crystal Reports - Cache de arquivos RPT

**URL:** <https://community.latromi.com.br/t/crystal-reports-cache-de-arquivos-rpt/449>\
**Category:** Changelog\
**Tags:** melhoria, crystal-reports\
**Created:** [Agosto 7, 2020, 8:38pm UTC](https://community.latromi.com.br/t/crystal-reports-cache-de-arquivos-rpt/449 "2020-08-07T20:38:45Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![daniel.giacomelli](https://community.latromi.com.br/user_avatar/community.latromi.com.br/daniel.giacomelli/32/1476_2.png) [@daniel.giacomelli](https://community.latromi.com.br/u/daniel.giacomelli)\
**Post date:** [Agosto 7, 2020, 8:38pm UTC](https://community.latromi.com.br/t/crystal-reports-cache-de-arquivos-rpt/449/1 "2020-08-07T20:38:45Z")

</div>

Os relatórios do Crystal Reports são processados por um WebService chamado “WSApp”, que é instalado no servidor junto com o site. É este serviço que gera os arquivos PDF a partir dos arquivos RPT.

O sistema executa os passos abaixo para processar um arquivo RPT após a solicitação do usuário:

1. **Site** - Extração do arquivo RPT salvo no banco de dados.
2. **Site** - Envio do arquivo RPT, junto do valor dos parâmetros e dados de conexão, para o Web Service WSApp.
3. **WSApp** - O arquivo RPT é recebido.
4. **WSApp** - O arquivo RPT é processado para gerar o arquivo PDF.
5. **WSApp** - O arquivo PDF é retornado.
6. **Site** - O arquivo PDF é recebido e carregado para o usuário

## Melhoria

Para melhorar o desempenho da aplicação e evitar o desperdício de recursos do servidor, modificamos a rotina de geração de arquivos PDF para que o arquivo RPT seja enviado para Web Service apenas na primeira vez que o relatório for gerado. Nessa ocasião, o arquivo RPT fica salvo em uma pasta dentro da pasta raiz do Web Service.

Se a geração de um relatório com uma versão mais recente de um arquivo RPT previamente armazenado na pasta do Web Service for solicitada, este será considerado como um novo arquivo, e as duas versões do arquivo RPT ficarão armazenas na pasta.

O processo passa a ser da seguinte forma:

1. **Site** - Obtenção do ID do arquivo RPT salvo no banco de dados.
2. **Site** - Tentativa de geração de PDF enviando apenas o ID do arquivo RPT para o Web Service.
3. **WSApp** - Tenta encontrar o arquivo RPT na pasta usando o ID recebido.
4. **WSApp** - Arquivo RPT foi encontrado?
  - Sim
    1. **WSApp** - O arquivo RPT é processado para gerar o arquivo PDF.
    2. **WSApp** - O arquivo PDF é retornado.

  - Não
    1. **WSApp** - Um erro específico é disparado, indicando que o arquivo não foi encontrado.
    2. **Site** - O erro é interpretado pelo site, que faz uma nova tentativa enviado dessa vez o ID e o Próprio arquivo RPT.
    3. **WSApp** - O arquivo RPT é recebido no Web Service e armazenado junto com o ID deste.
    4. **WSApp** - O arquivo RPT é processado para gerar o arquivo PDF.
    5. **WSApp** - O arquivo PDF é retornado.

5. **Site** - O arquivo PDF é recebido e carregado para o usuário

Quando o Web Service WSApp for atualizado, os arquivo armazenas serão excluídos, reiniciando todo o ciclo apresentando acima.

---

<div class="post-metadata">

**Author:** ![daniel.giacomelli](https://community.latromi.com.br/user_avatar/community.latromi.com.br/daniel.giacomelli/32/1476_2.png) [@daniel.giacomelli](https://community.latromi.com.br/u/daniel.giacomelli)\
**Post date:** [Maio 12, 2022, 2:46pm UTC](https://community.latromi.com.br/t/crystal-reports-cache-de-arquivos-rpt/449/2 "2022-05-12T14:46:48Z")

</div>


