AutoReport: mudanças entre as edições
Linha 10: | Linha 10: | ||
== AutoReportDefinition == | == AutoReportDefinition == | ||
=== SELECT === | |||
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: | ||
Linha 47: | Linha 49: | ||
</syntaxhighlight>}} | </syntaxhighlight>}} | ||
Utilizando a estrutura dos [[MetaObject]] para selecionar o campo SEMPRE a partir do objeto utilizado como raiz, o AutoReport utilizará o BISDAO para unir as tabelas e trazer os dados coerentemente. | |||
: Assim a parte do "FROM" do SQL é criada automaticamente pelo BISDAO. | |||
{{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. | {{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. |
Edição das 20h55min 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
SELECT
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())));
|
Utilizando a estrutura dos MetaObject para selecionar o campo SEMPRE a partir do objeto utilizado como raiz, o AutoReport utilizará o BISDAO para unir as tabelas e trazer os dados coerentemente.
- Assim a parte do "FROM" do SQL é criada automaticamente pelo BISDAO.
![]() |
|