AutoReport: mudanças entre as edições
Criou página com 'O AutoReport é um serviço do BIS com a finalidade de criar relatórios e gráficos de forma automatizada utilizando a estrutura de dados do BIS. = Funcionamento e Objetivos...' |
|||
Linha 13: | Linha 13: | ||
Imagine que desejamos criar um relatório com os dados dos lançamentos financeiros das conta do BIS. Para isso precisamos definir com o AutoReport buscará os dados: | Imagine que desejamos criar um relatório com os dados dos lançamentos financeiros das conta do BIS. Para isso precisamos definir com o AutoReport buscará os dados: | ||
Exemplo de criação do Definition | Exemplo de criação do Definition: | ||
{{java|Criando o AutoReportDefinition|<syntaxhighlight lang="java"> | {{java|Criando o AutoReportDefinition|<syntaxhighlight lang="java"> | ||
final AccountBankStatementVO_ v_ = AccountBankStatementVO_.VO; | final AccountBankStatementVO_ v_ = AccountBankStatementVO_.VO; | ||
AutoReportDefinition<AccountBankStatementVO> def = new AutoReportDefinition<AccountBankStatementVO>(AccountBankStatementVO.class); | AutoReportDefinition<AccountBankStatementVO> def = new AutoReportDefinition<AccountBankStatementVO>(AccountBankStatementVO.class); | ||
</syntaxhighlight>}} | |||
Note que o definition é instanciado com a classe que servirá de referência (tabela principal do Select) para que o BISDAO faça os joins e buscas no banco de dados. | |||
Uma vez criado o definition, precisamos agora informar que colunas desejamos que sejam recuperadas. Similar ao SELECT do banco de dados, aqui selecionamos os campos dos VOs que queremos para que esses dados estejam disponíveis no relatório. | |||
Note que é possível utilizar a estrutura do [[BISField]] para definir funções e outras operações para serem executadas diretamente no banco de dados. | |||
{{java|Seleção das Colunas|<syntaxhighlight lang="java"> | |||
AutoReportColumn columnID = def.addSelect(BISField.field("id")); | AutoReportColumn columnID = def.addSelect(BISField.field("id")); | ||
AutoReportColumn columnDate = def.addSelect(BISField.field(v_.date())); | AutoReportColumn columnDate = def.addSelect(BISField.field(v_.date())); | ||
Linha 38: | Linha 46: | ||
BISField.field(v_.accountStatementList().billPaymentVO().categoryMapList().value()))); | BISField.field(v_.accountStatementList().billPaymentVO().categoryMapList().value()))); | ||
</syntaxhighlight>}} | </syntaxhighlight>}} | ||
{{nota|Utilização do BISDAO|Note que apesar do AutoReport utilizar a estrutura de objetos do BISDAO o conteúdo da consulta é retornado uma lista de ''Object[]'' com os objetos retornados diretamente do banco de dados. Assim, é necessário solicitar cada campo do VO que se deseja no relatório (cada coluna da tabela). Diferentemente das consultas por objeto do BISDAO, em que solicitar um campo do VO já trás todo o objeto populado. | |||
Há alguns motivos para esse funcionamento: | |||
* A consulta completa e a montagem dos objetos é muito mais "cara" em questão de processamento e memória. Muitas vezes o relatório manipula muitos dados de uma única vez, assim precisaríamos de máquinas mais potentes e caras para rodar os relatórios. | |||
* Outro problema seriam colocar as colunas que foram manipuladas com as funções do [[BISField]], por exemplo: Imagine uma coluna do banco de dados "X" que é do tipo data. Mas recuperamos ela com a função BISField.month("X"). Essa função retornaria um valor inteiro com o número do mês da data, o que já não seria possível fazer um cast para o tipo do campo existente no objeto para a coluna X. | |||
}} |
Edição das 20h52min de 23 de dezembro de 2019
O AutoReport é um serviço do BIS com a finalidade de criar relatórios e gráficos de forma automatizada utilizando a estrutura de dados do BIS.
Funcionamento e Objetivos
A finalidade desta ferramenta é permitir que o desenvolver simplesmente passe uma consulta, similar à um SQL mas utilizando a estrutura do BIS, para que a própria ferramente recupere os dados. E depois disso, a partir de algumas informações de estrutura a própria ferramente estrutura os dados retornados do banco de forma coerente e gera objetos que possam ser traduzidos em diversas interfaces para o usuário. Onde interface neste caso pode ser um Grid/Tabela/Tree na UI, um gráfico na UI com opções de iteração, ou mesmo as informações impressas em PDF, exportar para arquivos como Excel, CSV, etc..
Como utilizar o AutoReport
Para criar um relatório, o primeiro passo é criar um AutoReportDefinition. Esta classe de nome sugestivo, tem as definições do relatório. Nela montamos o que seria similar ao SELECT para ser utilizado no banco de dados e recuperar as informações para serem exibidas.
AutoReportDefinition
Imagine que desejamos criar um relatório com os dados dos lançamentos financeiros das conta do BIS. Para isso precisamos definir com o AutoReport buscará os dados:
Exemplo de criação do Definition:
![]() |
Criando o AutoReportDefinition
final AccountBankStatementVO_ v_ = AccountBankStatementVO_.VO;
AutoReportDefinition<AccountBankStatementVO> def = new AutoReportDefinition<AccountBankStatementVO>(AccountBankStatementVO.class);
|
Note que o definition é instanciado com a classe que servirá de referência (tabela principal do Select) para que o BISDAO faça os joins e buscas no banco de dados.
Uma vez criado o definition, precisamos agora informar que colunas desejamos que sejam recuperadas. Similar ao SELECT do banco de dados, aqui selecionamos os campos dos VOs que queremos para que esses dados estejam disponíveis no relatório.
Note que é possível utilizar a estrutura do BISField para definir funções e outras operações para serem executadas diretamente no banco de dados.
![]() |
Seleção das Colunas
AutoReportColumn columnID = def.addSelect(BISField.field("id"));
AutoReportColumn columnDate = def.addSelect(BISField.field(v_.date()));
AutoReportColumn columnDisplayline = def.addSelect(BISField.field(v_.displayLine()));
AutoReportColumn columnOperation = def.addSelect(BISField.field(v_.operation()));
AutoReportColumn columnValue = def.addSelect(BISField.field(v_.value()));
AutoReportColumn columnDisplayline = def.addSelect(BISField.field(v_.accountStatementList().displayLine()));
AutoReportColumn columnCatMapID = def.addSelect(BISField.field(v_.accountStatementList().billPaymentVO().categoryMapList().id()));
AutoReportColumn columnCat = def.addSelect(
BISField.coalesce(
BISField.field(v_.accountStatementList().categoryMapList().categoryVO().name()),
BISField.field(v_.accountStatementList().billPaymentVO().categoryMapList().categoryVO().name())));
AutoReportColumn columnCatValue = def.addSelect(
BISField.coalesce(
BISField.field(v_.accountStatementList().categoryMapList().value()),
BISField.field(v_.accountStatementList().billPaymentVO().categoryMapList().value())));
|
![]() |
|