Escolar Documentos
Profissional Documentos
Cultura Documentos
Relatoriosjava2 1232197276772899 2
Relatoriosjava2 1232197276772899 2
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
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
Slide 3
Requerimentos
Slide 4
Aplicao Web
Slide 5
Exemplo Tradicional
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
Slide 7
Crystal Reports Oracle Reports Report Smith (Borland Delphi) Componentes ActiveX / OLE Controls CLIs / APIs programticas (DLLs) ODBC / OLE DB / BDE / dbExpress
Slide 8
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
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
Slide 10
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
Slide 11
Slide 12
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
Slide 13
Slide 14
Solues Livres
Servidores de Relatrios
OpenReports, JBoss Reporting Portal, JasperServer
Business Inteligence
JasperInteligence
Slide 15
Slide 16
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?
Slide 17
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
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
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)
Slide 21
Relatrios cross-over Fontes de dados OLAP Linguagens de script Virtualizao (Relatrios no precisam caber inteiramente em memria RAM) LAFs embutidos
Slide 22
iReport
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
Slide 24
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)
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!)
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
Slide 27
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
Slide 29
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)
Slide 30
Ciclo de Relatrios
Layout XML Carga Layout
Relatrio
Gerao / Compilao
Preenchimento
Impresso
Renderizao
Slide 31
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
Slide 32
JasperReports API
Slide 33
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
Slide 34
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
Renderizao
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
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
Slide 37
O Futuro
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
Slide 39
Demo
Slide 40
Referncias
Slide 41
Perguntas?
Slide 42