Você está na página 1de 42

Relatrios Corporativos com Java e Software Livre

Consultor Associado Neki Technologies Colunista da Revista Java Magazine

Fernando Lozano http://www.lozano.eti.br

2006 Fernando Lozano, http://www.lozano.eti.br

Relatrios Corporativos com Java e SL

Slide 1

Sobre o Autor

Red Hat Certified Engineer LPI Certified Professional Level I Sair GNU/Linux Certified Professional IBM Certified Network Engineer IBM Certified DB2 Administrator & Developer Microsoft Certified Systems Engineer Microsoft 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

2006 Fernando Lozano, http://www.lozano.eti.br

Relatrios Corporativos com Java e SL

Slide 2

Agenda

Requerimentos para Relatrios Corporativos Software Livre em Java para Relatrios Porque relatrios baseados em Objetos Design Visual com iReport Gerao de Relatrios com JasperReport Demo

2006 Fernando Lozano, http://www.lozano.eti.br

Relatrios Corporativos com Java e SL

Slide 3

Requerimentos

2006 Fernando Lozano, http://www.lozano.eti.br

Relatrios Corporativos com Java e SL

Slide 4

Perfis de Sistemas Desenvolvedores de Relatrios

Aplicao Cliente/servidor desktop

Ferramentas tradicionais: Crystal Reports, Oracle Reports, Access

Aplicao Web

Adaptao de ferramentas tradicionais Crystal Server, Oracle Reports Server

Aplicao OO baseada em Design Patterns, Frameworks e TDD

Nova gerao de ferramentas Java JasperReports, JReport, Style Reports, BIRT

2006 Fernando Lozano, http://www.lozano.eti.br

Relatrios Corporativos com Java e SL

Slide 5

Exemplo Tradicional

2006 Fernando Lozano, http://www.lozano.eti.br

Relatrios Corporativos com Java e SL

Slide 6

Requerimentos Tradicionais

Acesso direto a BDs relacionais Totalizao, Agrupamento, Ordenao, etc Formatos Mestre/Detalhe Suporte a logotipos, imagens, grficos dinmicos Integrao com ferramentas de desenvolvimento para Desktop (GUI) Pr-visualizao

2006 Fernando Lozano, http://www.lozano.eti.br

Relatrios Corporativos com Java e SL

Slide 7

Ferramentas Tradicionais (no-Java, no-Web)

Crystal Reports Oracle Reports Report Smith (Borland Delphi) Componentes ActiveX / OLE Controls CLIs / APIs programticas (DLLs) ODBC / OLE DB / BDE / dbExpress

2006 Fernando Lozano, http://www.lozano.eti.br

Relatrios Corporativos com Java e SL

Slide 8

Problemas com a Abordagem Tradicional

Vnculo com a ferramenta de relatrio, com a linguagem de programao e sistema operacional Duplicao de esforo: consultas SQL na aplicao GUI e no Relatrio Pouco aproveitamento das capacidades de BDs Relacionais Dificuldades de adaptao Web Dependncia em relao a um visualizador proprietrio

2006 Fernando Lozano, http://www.lozano.eti.br

Relatrios Corporativos com Java e SL

Slide 9

Novos Requerimentos

Acesso via Web ou e-mail Formatos mltiplos de documentos de sada (HTML, PDF, XLS, RTF)

Independncia do visualizador!

Agendamento e caching para maior performance Integrao com Servidores de Aplicao e Objetos Distribudos

2006 Fernando Lozano, http://www.lozano.eti.br

Relatrios Corporativos com Java e SL

Slide 10

Nova Gerao de Ferramentas

APIs para fontes de dados Report Servers (stand-alone ou como extenso para servidores web / servidores de aplicao) Mltiplas APIs de acesso (bindings) Integrao com ferramentas de BI

2006 Fernando Lozano, http://www.lozano.eti.br

Relatrios Corporativos com Java e SL

Slide 11

Exemplo Nova Gerao

2006 Fernando Lozano, http://www.lozano.eti.br

Relatrios Corporativos com Java e SL

Slide 12

Nova Gerao x Java

Acesso via URLs Pre-visualizadores nativos JavaBeans utilizando JNI (Overhead de converso de objetos) Restries de plataformas suportadas pelos Report Servers Soluo: engines de relatrios escritos em Java!

Engines baseados em Java podem ser utilizados diretamente por outras linguagens, como PHP

2006 Fernando Lozano, http://www.lozano.eti.br

Relatrios Corporativos com Java e SL

Slide 13

Software Livre para Relatrios

2006 Fernando Lozano, http://www.lozano.eti.br

Relatrios Corporativos com Java e SL

Slide 14

Solues Livres

Atendem a uma ou mais categorias: Bibliotecas (Engines de Relatrios)


JasperReports, JFreeReport, Eclipse BIRT Agata Reports (em PHP)

Servidores de Relatrios
OpenReports, JBoss Reporting Portal, JasperServer

Front-Ends (Desenhadores de Relatrios)


iReport, JasperEdit, JFreeReport, Eclipse BIRT

Business Inteligence
JasperInteligence

2006 Fernando Lozano, http://www.lozano.eti.br

Relatrios Corporativos com Java e SL

Slide 15

Por Que Relatrios Baseados em Objetos

2006 Fernando Lozano, http://www.lozano.eti.br

Relatrios Corporativos com Java e SL

Slide 16

Demandas Adicionais do Desenvolvedor Java

Suporte a Mecanismos de persistncia de Objetos Suporte a Design Patterns Suporte a frameworks MVC ou IoC populares
Se a lgica de negcios, de persistncia e mesmo a

interface com o usurio hoje baseada em modelos OO, porque a gerao de relatrios deve seguir uma viso relacional?

2006 Fernando Lozano, http://www.lozano.eti.br

Relatrios Corporativos com Java e SL

Slide 17

Evite Solues Baixo Nvel!

iText

Biblioteca para manipulao de documentos PDF Construo da pgina partir de elementos grficos de baixo nvel Controle manual da paginao

Apache FOP

Biblioteca para rasterizao de documentos XSL-FO Descreve um documento genrico, no um relatrio estruturado

HTML e CSS

O padro no fornece controle de pgina


Relatrios Corporativos com Java e SL Slide 18

2006 Fernando Lozano, http://www.lozano.eti.br

Design Visual com iReport

2006 Fernando Lozano, http://www.lozano.eti.br

Relatrios Corporativos com Java e SL

Slide 19

Sobre o iReport

Desenhador visual para descries (layouts) do JasperReports Utiliza o JasperReports para compilar e executar o relatrio Incorpora tambm o JFreeChart para gerao dinmica de grficos nos relatrios Originalmente uma aplicao apenas para Windows; partir de 2003 Pure-Java (Swing) Ritmo acelerado de evoluo

2006 Fernando Lozano, http://www.lozano.eti.br

Relatrios Corporativos com Java e SL

Slide 20

Sobre 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 solues livres sobre o JasperReports, como as solues de servidor de Relatrios (JasperServer) e de BI (JasperIntelligence)

2006 Fernando Lozano, http://www.lozano.eti.br

Relatrios Corporativos com Java e SL

Slide 21

Novidades no iReport / JasperReports

Relatrios cross-over Fontes de dados OLAP Linguagens de script Virtualizao (Relatrios no precisam caber inteiramente em memria RAM) LAFs embutidos

2006 Fernando Lozano, http://www.lozano.eti.br

Relatrios Corporativos com Java e SL

Slide 22

iReport

2006 Fernando Lozano, http://www.lozano.eti.br

Relatrios Corporativos com Java e SL

Slide 23

Estrutura do Relatrio

Faixas: Ttulo, Sumrio, Colunas, Cabealhos, Rodaps, Detalhe e Grupos Elementos visuais estticos e dinmicos Elementos dinmicos so expresses Java, Groovy, JavaScript (Rhino) ou BeanShell Elementos alargveis e flutuantes Subrelatrios

2006 Fernando Lozano, http://www.lozano.eti.br

Relatrios Corporativos com Java e SL

Slide 24

Dados para o Relatrio

Parmetros (estticos durante uma execuo do relatrio) Variveis (Expresses recalculadas em faixas pr-definidas) Campos (Mudam a cada linha / registro de detalhes) Fonte de Dados (Conexo JDBC, Coleo de Beans, Array, etc) Consulta SQL ou HQL (Apenas para Conexo JDBC ou Hibernate)

2006 Fernando Lozano, http://www.lozano.eti.br

Relatrios Corporativos com Java e SL

Slide 25

Fontes de Dados

Connection ou Resultset JDBC Sesso Hibernate com ou sem Spring Consulta EJBQL (EJB3) Arquivo XML Arquivo texto (CSV) JavaBeans Serializados Conexo Mondrian (OLAP) Customizada (crie sua prpria classe!)

2006 Fernando Lozano, http://www.lozano.eti.br

Relatrios Corporativos com Java e SL

Slide 26

Previsualizao do Relatrio

Janela Swing (adaptada do JasperReports) Documentos PDF, HTML, XLS, RTF, XML, CSV (mediante visualizadores externos) Alm dos visualizadores do JasperReports e visualizadores externos, pode ser utilizado o JasperAssistant, que fornece um visualizador SWT

O designer baseado em SWT (do JasperAssistant) no software livre

2006 Fernando Lozano, http://www.lozano.eti.br

Relatrios Corporativos com Java e SL

Slide 27

Gerao de Relatrios com JasperReports

2006 Fernando Lozano, http://www.lozano.eti.br

Relatrios Corporativos com Java e SL

Slide 28

Sobre o JasperReports

Biblioteca de gerao de relatrios para uso em aplicaes Java Fornece um previsualizador Swing customizvel Utiliza outras biblitoecas livres para gerao da sada: iText (PDF), POI (XLS) Utiliza ainda vrios dos Jakarta-Commons O desenvolvedor no necessita de conhecimento das outras bibliotecas utilizadas, exceto pela sua incluso no classpath da aplicao

2006 Fernando Lozano, http://www.lozano.eti.br

Relatrios Corporativos com Java e SL

Slide 29

Ciclo de Funcionamento do JasperReports

Definio (layout) do relatrio em XML Gerao de classe Java partir do layout Compilao da classe (arquivo *.jasper) Carga da classe Preenchimento do relatrio (execuo da classe) Renderizao do relatrio (em tela, impressora ou arquivo)

2006 Fernando Lozano, http://www.lozano.eti.br

Relatrios Corporativos com Java e SL

Slide 30

Ciclo de Relatrios
Layout XML Carga Layout

Relatrio

Gerao / Compilao

Preenchimento

Impresso

Sada PDF/ outra

Renderizao

2006 Fernando Lozano, http://www.lozano.eti.br

Relatrios Corporativos com Java e SL

Slide 31

API e Fachada do JasperReports

Cada elemento de um relatrio e cada operao do ciclo so realizadas por classes em uma API de baixo nvel

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

Fachada em classes utilitrias (Jasper*Manager) para as operaes mais comuns

Simplicidade de uso da biblioteca em aplicaes grficas ou web

2006 Fernando Lozano, http://www.lozano.eti.br

Relatrios Corporativos com Java e SL

Slide 32

JasperReports API

2006 Fernando Lozano, http://www.lozano.eti.br

Relatrios Corporativos com Java e SL

Slide 33

Exemplo de Compilao e Previsualizao de Relatrio

import net.sf.jasperreports.engine.*; import net.sf.jasperreports.view.*; private static final String layout = "produto.jrxml";

Carga + Compilao

JasperReport relatorio = JasperCompileManager.compileReport(layout); Map parametros = new HashMap(); parametros.put("idProduto", new Integer(Integer.parseInt(args[0])));

Preenchimento

JasperPrint impressao = JasperFillManager.fillReport( relatorio, parametros, con); JasperViewer viewer = new JasperViewer(impressao, true); viewer.show();

Renderizao

2006 Fernando Lozano, http://www.lozano.eti.br

Relatrios Corporativos com Java e SL

Slide 34

Exemplo de Gerao de PDF com Relatrio 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])));

Carga + Preenchimento

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

Renderizao

2006 Fernando Lozano, http://www.lozano.eti.br

Relatrios Corporativos com Java e SL

Slide 35

Flexibilidade da API

Vrias sobrecargas de cada mtodo, ex: String (nome de arquivo), InputStream, instncia em memria, recurso Em geral o nome do arquivo original, um objeto File, um InputStream ou o objeto interno do JasperReports so intercambiveis nas chamadas aos mtodos da fachada Cada etapa intermediria pode ser serializada para continuar o processamento posteriormente, fornecendo suporte para a construo de servidores de relatrios (como o OpenReports e o JBoss Reporting Portal)
Relatrios Corporativos com Java e SL Slide 36

2006 Fernando Lozano, http://www.lozano.eti.br

Automao e Relatrios Dinmicos

Task customizada do Ant para compilao de relatrios Subrelatrios Linguagens de script (Groove, BeanShell) dentro dos relatrios Folhas de estilo XSL para gerao dinmica dos layouts Plug-ins do iReport

2006 Fernando Lozano, http://www.lozano.eti.br

Relatrios Corporativos com Java e SL

Slide 37

O Futuro

2006 Fernando Lozano, http://www.lozano.eti.br

Relatrios Corporativos com Java e SL

Slide 38

BI - Business Inteligence

Integrao com ETI (migrar dados operacionais para a DatawareHouse) Fontes de dados Multidimensionais Rearranjos do layout e drill down interetivo (nfase em servidores de relatrios e visualizadores de relatrios mais sofisticados) o foco da JasperSoft e do Eclipse BIRT

2006 Fernando Lozano, http://www.lozano.eti.br

Relatrios Corporativos com Java e SL

Slide 39

Demo

2006 Fernando Lozano, http://www.lozano.eti.br

Relatrios Corporativos com Java e SL

Slide 40

Referncias

jasperreports.sourceforge.net ireport.sourceforge.net openreports.sourceforge.net jfreereport.sourceforge.net www.eclipse.org/birt

2006 Fernando Lozano, http://www.lozano.eti.br

Relatrios Corporativos com Java e SL

Slide 41

Perguntas?

Dvidas: fernando@lozano.eti.br Palestras, Artigos e Apostilas: www.lozano.eti.br Consultoria e Capacitao: www.neki.com.br

2006 Fernando Lozano, http://www.lozano.eti.br

Relatrios Corporativos com Java e SL

Slide 42

Você também pode gostar