Relatórios Corporativos com Java e Software Livre

42
© 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 1 Relatórios Corporativos Relatórios Corporativos com Java e com Java e Software Livre Software Livre Fernando Lozano Fernando Lozano http://www.lozano.eti.br http://www.lozano.eti.br Consultor Associado – Neki Technologies Colunista da Revista Java Magazine

Transcript of Relatórios Corporativos com Java e Software Livre

Page 1: Relatórios Corporativos com Java e Software Livre

© 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 1

Relatórios Corporativos Relatórios Corporativos com Java ecom Java e

Software LivreSoftware Livre

Fernando LozanoFernando Lozanohttp://www.lozano.eti.brhttp://www.lozano.eti.br

Consultor Associado – Neki TechnologiesColunista da Revista Java Magazine

Page 2: Relatórios Corporativos com Java e Software Livre

© 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 2

Sobre o AutorSobre o Autor

● Red Hat Certified EngineerLPI Certified Professional Level ISair GNU/Linux Certified Professional

● IBM Certified Network EngineerIBM Certified DB2 Administrator & Developer

● Microsoft Certified Systems EngineerMicrosoft Certified Solutions Developer

● Webmaster do Projeto GNU

● Proctor, Reviewer & Item Writer do LPI

● Community Manager do Java.Net

● Autor do Livro "Java em GNU/Linux"Ed. Alta Books www.altabooks.com.br

Page 3: Relatórios Corporativos com Java e Software Livre

© 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 3

AgendaAgenda

● 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

Page 4: Relatórios Corporativos com Java e Software Livre

© 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 4

RequerimentosRequerimentos

Page 5: Relatórios Corporativos com Java e Software Livre

© 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 5

Perfis de Sistemas Perfis de Sistemas Desenvolvedores de Desenvolvedores de

RelatóriosRelatórios● Aplicação Cliente/servidor desktop

● Ferramentas tradicionais:Crystal Reports, Oracle Reports, Access

● Aplicação Web● Adaptação de ferramentas tradicionais

Crystal Server, Oracle Reports Server

● Aplicação OO baseada em Design Patterns, Frameworks e TDD

● Nova geração de ferramentas JavaJasperReports, JReport, Style Reports, BIRT

Page 6: Relatórios Corporativos com Java e Software Livre

© 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 6

Exemplo TradicionalExemplo Tradicional

Page 7: Relatórios Corporativos com Java e Software Livre

© 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 7

Requerimentos TradicionaisRequerimentos Tradicionais

● 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

Page 8: Relatórios Corporativos com Java e Software Livre

© 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 8

Ferramentas TradicionaisFerramentas Tradicionais(não-Java, não-Web)(não-Java, não-Web)

● Crystal Reports

● Oracle Reports

● Report Smith (Borland Delphi)

● Componentes ActiveX / OLE Controls

● CLIs / APIs programáticas (DLLs)

● ODBC / OLE DB / BDE / dbExpress

Page 9: Relatórios Corporativos com Java e Software Livre

© 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 9

Problemas com a Abordagem Problemas com a Abordagem TradicionalTradicional

● Vínculo com a ferramenta de relatório, com a linguagem de programação e sistema operacional

● Duplicação de esforço:consultas SQL na aplicação GUI e no Relatório

● Pouco aproveitamento das capacidades de BDs Relacionais

● Dificuldades de adaptação à Web

● Dependência em relação a um visualizador proprietário

Page 10: Relatórios Corporativos com Java e Software Livre

© 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 10

Novos RequerimentosNovos Requerimentos

● 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

Page 11: Relatórios Corporativos com Java e Software Livre

© 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 11

Nova Geração de Nova Geração de FerramentasFerramentas

● APIs para fontes de dados

● Report Servers(stand-alone ou como extensão para servidores web / servidores de aplicação)

● Múltiplas APIs de acesso (bindings)

● Integração com ferramentas de BI

Page 12: Relatórios Corporativos com Java e Software Livre

© 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 12

Exemplo Nova GeraçãoExemplo Nova Geração

Page 13: Relatórios Corporativos com Java e Software Livre

© 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 13

Nova Geração x JavaNova Geração x Java

● 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

Page 14: Relatórios Corporativos com Java e Software Livre

© 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 14

Software Livre para Software Livre para RelatóriosRelatórios

Page 15: Relatórios Corporativos com Java e Software Livre

© 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 15

Soluções LivresSoluções Livres

● 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

Page 16: Relatórios Corporativos com Java e Software Livre

© 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 16

Por Que Relatórios Baseados Por Que Relatórios Baseados em Objetosem Objetos

Page 17: Relatórios Corporativos com Java e Software Livre

© 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 17

Demandas Adicionais do Demandas Adicionais do Desenvolvedor JavaDesenvolvedor Java

● Suporte a Mecanismos de persistência de Objetos

● Suporte a Design Patterns

● Suporte a frameworks MVC ou IoC populares

⇨ Se a lógica de negócios, de persistência e mesmo a interface com o usuário hoje é baseada em modelos OO, porque a geração de relatórios deve seguir uma visão relacional?

Page 18: Relatórios Corporativos com Java e Software Livre

© 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 18

Evite Soluções Baixo Nível!Evite Soluções Baixo Nível!

● 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

Page 19: Relatórios Corporativos com Java e Software Livre

© 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 19

Design Visual com iReportDesign Visual com iReport

Page 20: Relatórios Corporativos com Java e Software Livre

© 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 20

Sobre o iReportSobre o iReport

● 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

Page 21: Relatórios Corporativos com Java e Software Livre

© 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 21

Sobre a JasperSoftSobre a JasperSoft

● 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)

Page 22: Relatórios Corporativos com Java e Software Livre

© 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 22

Novidades no iReport / Novidades no iReport / JasperReportsJasperReports

● Relatórios cross-over

● Fontes de dados OLAP

● Linguagens de script

● Virtualização(Relatórios não precisam caber inteiramente em memória RAM)

● LAFs embutidos

Page 23: Relatórios Corporativos com Java e Software Livre

© 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 23

iReportiReport

Page 24: Relatórios Corporativos com Java e Software Livre

© 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 24

Estrutura do RelatórioEstrutura do Relatório

● 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

Page 25: Relatórios Corporativos com Java e Software Livre

© 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 25

Dados para o RelatórioDados para o Relatório

● 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)

Page 26: Relatórios Corporativos com Java e Software Livre

© 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 26

Fontes de DadosFontes de Dados

● 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!)

Page 27: Relatórios Corporativos com Java e Software Livre

© 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 27

Previsualização do RelatórioPrevisualização do Relatório

● 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

Page 28: Relatórios Corporativos com Java e Software Livre

© 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 28

Geração de Relatórios com Geração de Relatórios com JasperReportsJasperReports

Page 29: Relatórios Corporativos com Java e Software Livre

© 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 29

Sobre o JasperReportsSobre o JasperReports

● 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

Page 30: Relatórios Corporativos com Java e Software Livre

© 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 30

Ciclo de Funcionamento do Ciclo de Funcionamento do JasperReportsJasperReports

● Definição (layout) do relatório em XML

● Geração de classe Java à partir do layout

● Compilação da classe (arquivo *.jasper)

● Carga da classe

● Preenchimento do relatório (execução da classe)

● Renderização do relatório (em tela, impressora ou arquivo)

Page 31: Relatórios Corporativos com Java e Software Livre

© 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 31

Ciclo de RelatóriosCiclo de Relatórios

Layout XML Carga Layout

Relatório Geração /Compilação

Preenchimento Impressão

Saída PDF/outra

Renderização

Page 32: Relatórios Corporativos com Java e Software Livre

© 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 32

API e Fachada do API e Fachada do JasperReportsJasperReports

● Cada elemento de um relatório e cada operação do ciclo são realizadas por classes em uma API de “baixo nível”

✓ Flexibilidade para usar a API em um visualizador customizado ou gerar novos elementos e renderizadores

● Fachada em classes utilitárias (Jasper*Manager) para as operações mais comuns

✓ Simplicidade de uso da biblioteca em aplicações gráficas ou web

Page 33: Relatórios Corporativos com Java e Software Livre

© 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 33

JasperReports APIJasperReports API

Page 34: Relatórios Corporativos com Java e Software Livre

© 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 34

Exemplo de Compilação eExemplo de Compilação ePrevisualização de RelatórioPrevisualização de Relatório

● import net.sf.jasperreports.engine.*;import net.sf.jasperreports.view.*;

private static final String layout = "produto.jrxml";

JasperReport relatorio = JasperCompileManager.compileReport(layout);

Map parametros = new HashMap();parametros.put("idProduto", new Integer(Integer.parseInt(args[0])));

JasperPrint impressao = JasperFillManager.fillReport( relatorio, parametros, con);

JasperViewer viewer = new JasperViewer(impressao, true);viewer.show();

Carga +Compilação

Preenchimento

Renderização

Page 35: Relatórios Corporativos com Java e Software Livre

© 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 35

Exemplo de Geração de PDF Exemplo de Geração de PDF com Relatório Pré-Compiladocom Relatório Pré-Compilado

● import net.sf.jasperreports.engine.*;

private static final String relatorio = "produto.jasper";private static final String pdf = "produto.pdf";

Map parametros = new HashMap();parametros.put("idProduto", new Integer(Integer.parseInt(args[0])));

JasperPrint impressao = JasperFillManager.fillReport( relatorio, parametros, con);

JasperExportManager.exportReportToPdfFile(impressao, pdf);

Carga +Preenchimento

Renderização

Page 36: Relatórios Corporativos com Java e Software Livre

© 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 36

Flexibilidade da APIFlexibilidade da API

● 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)

Page 37: Relatórios Corporativos com Java e Software Livre

© 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 37

Automação eAutomação eRelatórios DinâmicosRelatórios Dinâmicos

● Task customizada do Ant para compilação de relatórios

● Subrelatórios

● Linguagens de script (Groove, BeanShell) dentro dos relatórios

● Folhas de estilo XSL para geração dinâmica dos layouts

● Plug-ins do iReport

Page 38: Relatórios Corporativos com Java e Software Livre

© 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 38

O FuturoO Futuro

Page 39: Relatórios Corporativos com Java e Software Livre

© 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 39

BI - Business InteligenceBI - Business Inteligence

● 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

Page 40: Relatórios Corporativos com Java e Software Livre

© 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 40

DemoDemo

Page 41: Relatórios Corporativos com Java e Software Livre

© 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 41

ReferênciasReferências

● jasperreports.sourceforge.net

● ireport.sourceforge.net

● openreports.sourceforge.net

● jfreereport.sourceforge.net

● www.eclipse.org/birt

Page 42: Relatórios Corporativos com Java e Software Livre

© 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 42

Perguntas?Perguntas?

● Dúvidas:[email protected]

● Palestras, Artigos e Apostilas:www.lozano.eti.br

● Consultoria e Capacitação:www.neki.com.br