Relatórios Corporativos com Java e Software Livre

5.144 visualizações

Publicada em

Publicada em: Tecnologia, Negócios
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
5.144
No SlideShare
0
A partir de incorporações
0
Número de incorporações
31
Ações
Compartilhamentos
0
Downloads
125
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Relatórios Corporativos com Java e Software Livre

  1. 1. Relatórios Corporativos com Java e Software Livre Fernando Lozano http://www.lozano.eti.br Consultor Associado – Neki Technologies Colunista da Revista Java Magazine © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 1
  2. 2. 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 quot;Java em GNU/Linuxquot; ● Ed. Alta Books www.altabooks.com.br © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 2
  3. 3. Agenda 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 ● © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 3
  4. 4. Requerimentos © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 4
  5. 5. Perfis de Sistemas Desenvolvedores de Relató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 Java ● JasperReports, JReport, Style Reports, BIRT © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 5
  6. 6. Exemplo Tradicional © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 6
  7. 7. Requerimentos 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 ● © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 7
  8. 8. Ferramentas Tradicionais (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 ● © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 8
  9. 9. Problemas com a Abordagem Tradicional 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 © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 9
  10. 10. Novos 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 © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 10
  11. 11. Nova Geração de Ferramentas 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 ● © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 11
  12. 12. Exemplo Nova Geração © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 12
  13. 13. Nova 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 © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 13
  14. 14. Software Livre para Relatórios © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 14
  15. 15. Soluçõ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 © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 15
  16. 16. Por Que Relatórios Baseados em Objetos © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 16
  17. 17. Demandas Adicionais do Desenvolvedor 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? © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 17
  18. 18. 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 ✗ © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 18
  19. 19. Design Visual com iReport © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 19
  20. 20. Sobre 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 ● © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 20
  21. 21. 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 soluções livres sobre o ● JasperReports, como as soluções de servidor de Relatórios (JasperServer) e de BI (JasperIntelligence) © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 21
  22. 22. Novidades no iReport / JasperReports 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 ● © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 22
  23. 23. iReport © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 23
  24. 24. Estrutura 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 ● © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 24
  25. 25. Dados 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) © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 25
  26. 26. Fontes 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!) ● © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 26
  27. 27. Previsualizaçã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 © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 27
  28. 28. Geração de Relatórios com JasperReports © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 28
  29. 29. Sobre 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 © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 29
  30. 30. Ciclo de Funcionamento do JasperReports 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) © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 30
  31. 31. Ciclo de Relatórios Layout XML Carga Layout Geração / Relatório Compilação Preenchimento Impressão Saída PDF/ Renderização outra © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 31
  32. 32. API e Fachada do JasperReports 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 © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 32
  33. 33. JasperReports API © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 33
  34. 34. Exemplo de Compilação e Previsualização de Relatório import net.sf.jasperreports.engine.*; ● import net.sf.jasperreports.view.*; private static final String layout = quot;produto.jrxmlquot;; JasperReport relatorio = Carga + JasperCompileManager.compileReport(layout); Compilação Map parametros = new HashMap(); parametros.put(quot;idProdutoquot;, new Integer(Integer.parseInt(args[0]))); JasperPrint impressao = JasperFillManager.fillReport( Preenchimento relatorio, parametros, con); JasperViewer viewer = new JasperViewer(impressao, true); Renderização viewer.show(); © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 34
  35. 35. Exemplo de Geração de PDF com Relatório Pré-Compilado import net.sf.jasperreports.engine.*; ● private static final String relatorio = quot;produto.jasperquot;; private static final String pdf = quot;produto.pdfquot;; Map parametros = new HashMap(); parametros.put(quot;idProdutoquot;, new Integer(Integer.parseInt(args[0]))); JasperPrint impressao = JasperFillManager.fillReport( Carga + Preenchimento relatorio, parametros, con); JasperExportManager.exportReportToPdfFile(impressao, Renderização pdf); © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 35
  36. 36. Flexibilidade 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) © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 36
  37. 37. Automação e Relató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 ● © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 37
  38. 38. O Futuro © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 38
  39. 39. BI - 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 ● © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 39
  40. 40. Demo © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 40
  41. 41. Referências jasperreports.sourceforge.net ● ireport.sourceforge.net ● openreports.sourceforge.net ● jfreereport.sourceforge.net ● www.eclipse.org/birt ● © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 41
  42. 42. Perguntas? Dúvidas: ● fernando@lozano.eti.br Palestras, Artigos e Apostilas: ● www.lozano.eti.br Consultoria e Capacitação: ● www.neki.com.br © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 42

×