Particionamento do conteúdo na execução
A ferramenta de Relatórios permite particionar o conteúdo na execução. Desta forma, não é necessário emitir repetidamente o mesmo relatório com parâmetros diferentes. Quer entender como funciona? Acompanhe as informações abaixo e fique por dentro!
Exemplo:
Para emitir cinco relatórios em formato PDF, cada um deles contendo a listagem de empenhos de um determinado exercício, de 2014 à 2018. Para isto, teria que executar cinco vezes o mesmo relatório, informando os argumentos de cada exercício para cada execução. Não seria melhor executar o relatório uma única vez? Informando os cinco exercícios nos parâmetros durante a execução e obter os cinco relatórios em formato PDF em uma pasta zipada? Como exibido na imagem abaixo:
Um dos recursos disponibilizados pela ferramenta de relatórios é a capacidade de particionar o arquivo gerado de acordo com uma expressão. Para que o particionamento funcione corretamente, é necessário que os dados sejam ordenados e agrupados, de modo que todos os dados pertencentes ao mesmo grupo sejam gerados de forma sequencial.
Configuração
A configuração do particionamento é feita no desenvolvimento do relatório, utilizando um conjunto de variáveis reservadas.
Basta inserir as seguintes variáveis no modelo (.jrxml) utilizando a ferramenta Jaspersoft.
Variáveis
Chave | Tipo | Descrição |
---|---|---|
BTH_PARTICIONAMENTO_EXPRESSAO | String | Armazena o valor que será utilizado para classificar a qual grupo a página atual pertence. Essa variável é lida sempre que uma nova página é adicionada ao relatório. |
BTH_PARTICIONAMENTO_DESCRICAO | String | Descrição que será adicionada no arquivo json , criado dentro do zip, que vai conter as informações das partições; |
BTH_PARTICIONAMENTO_NOME_ARQUIVO | String | Nome que será utilizado na exportação da partição, não deve conter a extensão. |
BTH_PARTICIONAMENTO_PROPRIEDADES_[NOME_PROP] | String | Propriedades adicionais que serão adicionadas à lista de propriedades no arquivo json . Nesse caso a chave da propriedade vai ser NOME_PROP . |
BTH_PARTICIONAMENTO_PROTOCOLO | String | UUID da partição atual, essa variável é somente leitura, e é configurada automaticamente pela ferramenta em tempo de execução. |
Exemplo
Segue como exemplo, um relatório padrão, que utiliza a fonte de execuções, agrupando por tipo de extensão.
- Os dados devem vir ordenados da origem ou serem ordenados no relatório, lembrando que para a ordenação no relatório temos um limite de no máximo 800000 registros.
- Configurar a variável com a expressão de compartilhamento, geralmente é o mesmo campo que está sendo usado na ordenação.
É importante não concatenar nada no valor retornado, principalmente se a ordenação está sendo feita dentro do relatório, pois caso contrário uma página duplicada será gerada.
- Criar um grupo, para que os itens sejam colocados em páginas distintas no relatório.
▸ Resultado do particionamento, arquivo zip
▸ Exemplo do conteudo.json
1 [
2 {
3 "expressao": "RELATORIO",
4 "protocolo": "1f9e8915-5029-4dc6-bfde-c3d6f677bba1",
5 "descricao": null,
6 "arquivo": "RELATORIO.pdf",
7 "propriedades": [ ]
8 },
9 {
10 "expressao": "SCRIPT",
11 "protocolo": "91d27583-ea95-47da-9e98-f301d55ca1a6",
12 "descricao": null,
13 "arquivo": "SCRIPT.pdf",
14 "propriedades": [ ]
15 }
16 ]
É importante que a ordenação do relatório siga os campos utilizados na expressão para que o particionamento seja feito corretamente! O ideal é criar um grupo e ordenar por ele.
Caso deseje recuperar outras informações do conteúdo particionado, basta criar variáveis utilizando o prefixo:
BTH_PARTICIONAMENTO_PROPRIEDADES_
acrescido do nome da propriedade, por exemplo: BTH_PARTICIONAMENTO_PROPRIEDADES_NOME
.
O valor destas propriedades e das outras variáveis serão geradas no arquivo conteudo.json que será disponibilizado junto aos arquivos PDF que também serão particionados.
Salientamos que neste primeiro momento, quando o relatório for particionado não será possível enviá-lo para assinatura!