Professional Documents
Culture Documents
com Java e
Software Livre
Fernando Lozano
http://www.lozano.eti.br
Consultor Associado – Neki Technologies
Colunista da Revista Java Magazine
●
Requerimentos para Relatórios Corporativos
●
Software Livre em Java para Relatórios
●
Porque relatórios baseados em Objetos
●
Design Visual com iReport
●
Geração de Relatórios com JasperReport
●
Demo
●
Acesso direto a BDs relacionais
●
Totalização, Agrupamento, Ordenação, etc
●
Formatos Mestre/Detalhe
●
Suporte a logotipos, imagens, gráficos dinâmicos
●
Integração com ferramentas de desenvolvimento
para Desktop (GUI)
●
Pré-visualização
●
Acesso via Web ou e-mail
●
Formatos múltiplos de documentos de saída
(HTML, PDF, XLS, RTF)
✓ Independência do visualizador!
●
Agendamento e caching para maior performance
●
Integração com Servidores de Aplicação e Objetos
Distribuídos
●
Acesso via URLs
●
Pre-visualizadores nativos
●
JavaBeans utilizando JNI
(Overhead de conversão de objetos)
●
Restrições de plataformas suportadas pelos Report
Servers
●
Solução: engines de relatórios escritos em Java!
✓ Engines baseados em Java podem ser utilizados
diretamente por outras linguagens, como PHP
●
Atendem a uma ou mais categorias:
●
Bibliotecas (Engines de Relatórios)
⇨ JasperReports, JFreeReport, Eclipse BIRT
⇨ Agata Reports (em PHP)
●
Servidores de Relatórios
⇨ OpenReports, JBoss Reporting Portal, JasperServer
●
Front-Ends (Desenhadores de Relatórios)
⇨ iReport, JasperEdit, JFreeReport, Eclipse BIRT
●
Business Inteligence
⇨ JasperInteligence
●
iText
●
Biblioteca para manipulação de documentos PDF
✗ Construção da página à partir de elementos gráficos de
baixo nível
✗ Controle manual da paginação
●
Apache FOP
●
Biblioteca para rasterização de documentos XSL-FO
✗ Descreve um documento genérico, não um relatório
estruturado
●
HTML e CSS
✗ O padrão não fornece controle de página
●
Desenhador visual para descrições (layouts) do
JasperReports
●
Utiliza o JasperReports para compilar e executar o
relatório
●
Incorpora também o JFreeChart para geração
dinâmica de gráficos nos relatórios
●
Originalmente uma aplicação apenas para Windows;
à partir de 2003 Pure-Java (Swing)
●
Ritmo acelerado de evolução
●
Empresa criada pelos desenvolvedores do
JasperReports e iReports
●
Filiada ao JBoss Federation
●
Dedicada a fornecer suporte e treinamento nos odis
produtos
●
Desenvolve novas soluções livres sobre o
JasperReports, como as soluções de servidor de
Relatórios (JasperServer) e de BI (JasperIntelligence)
●
Faixas:
Título, Sumário, Colunas, Cabeçalhos, Rodapés,
Detalhe e Grupos
●
Elementos visuais estáticos e dinâmicos
●
Elementos dinâmicos são expressões Java, Groovy,
JavaScript (Rhino) ou BeanShell
●
Elementos “alargáveis” e flutuantes
●
Subrelatórios
●
Parâmetros
(estáticos durante uma execução do relatório)
●
Variáveis
(Expressões recalculadas em faixas pré-definidas)
●
Campos
(Mudam a cada linha / registro de detalhes)
●
Fonte de Dados
(Conexão JDBC, Coleção de Beans, Array, etc)
●
Consulta SQL ou HQL
(Apenas para Conexão JDBC ou Hibernate)
●
Connection ou Resultset JDBC
●
Sessão Hibernate com ou sem Spring
●
Consulta EJBQL (EJB3)
●
Arquivo XML
●
Arquivo texto (CSV)
●
JavaBeans Serializados
●
Conexão Mondrian (OLAP)
●
Customizada (crie sua própria classe!)
●
Janela Swing (adaptada do JasperReports)
●
Documentos PDF, HTML, XLS, RTF, XML, CSV
(mediante visualizadores externos)
●
Além dos visualizadores do JasperReports e
visualizadores externos, pode ser utilizado o
JasperAssistant, que fornece um visualizador SWT
✗ O designer baseado em SWT (do JasperAssistant) não é
software livre
●
Biblioteca de geração de relatórios para uso em
aplicações Java
●
Fornece um previsualizador Swing customizável
●
Utiliza outras biblitoecas livres para geração da
saída: iText (PDF), POI (XLS)
●
Utiliza ainda vários dos Jakarta-Commons
●
O desenvolvedor não necessita de conhecimento
das outras bibliotecas utilizadas, exceto pela sua
inclusão no classpath da aplicação
Geração /
Relatório
Compilação
Preenchimento Impressão
Saída PDF/
Renderização
outra
Renderização JasperExportManager.exportReportToPdfFile(impressao,
pdf);
●
Várias sobrecargas de cada método, ex:
String (nome de arquivo), InputStream, instância em
memória, recurso
●
Em geral o nome do arquivo original, um objeto File,
um InputStream ou o objeto interno do
JasperReports são intercambiáveis nas chamadas
aos métodos da fachada
●
Cada etapa intermediária pode ser serializada para
continuar o processamento posteriormente,
fornecendo suporte para a construção de servidores
de relatórios
(como o OpenReports e o JBoss Reporting Portal)
●
Integração com ETI
(migrar dados operacionais para a DatawareHouse)
●
Fontes de dados Multidimensionais
●
Rearranjos do layout e drill down interetivo
(Ênfase em servidores de relatórios e visualizadores
de relatórios mais sofisticados)
●
É o foco da JasperSoft e do Eclipse BIRT
●
jasperreports.sourceforge.net
●
ireport.sourceforge.net
●
openreports.sourceforge.net
●
jfreereport.sourceforge.net
●
www.eclipse.org/birt
●
Dúvidas:
fernando@lozano.eti.br
●
Palestras, Artigos e Apostilas:
www.lozano.eti.br
●
Consultoria e Capacitação:
www.neki.com.br