SlideShare una empresa de Scribd logo
1 de 42
Descargar para leer sin conexión
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
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
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
Requerimentos




© 2006 Fernando Lozano, http://www.lozano.eti.br   Relatórios Corporativos com Java e SL   Slide 4
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
Exemplo Tradicional




© 2006 Fernando Lozano, http://www.lozano.eti.br   Relatórios Corporativos com Java e SL   Slide 6
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
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
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
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
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
Exemplo Nova Geração




© 2006 Fernando Lozano, http://www.lozano.eti.br   Relatórios Corporativos com Java e SL   Slide 12
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
Software Livre para
                              Relatórios




© 2006 Fernando Lozano, http://www.lozano.eti.br   Relatórios Corporativos com Java e SL   Slide 14
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
Por Que Relatórios Baseados
                  em Objetos




© 2006 Fernando Lozano, http://www.lozano.eti.br   Relatórios Corporativos com Java e SL   Slide 16
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
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
Design Visual com iReport




© 2006 Fernando Lozano, http://www.lozano.eti.br   Relatórios Corporativos com Java e SL   Slide 19
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
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
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
iReport




© 2006 Fernando Lozano, http://www.lozano.eti.br     Relatórios Corporativos com Java e SL   Slide 23
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
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
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
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
Geração de Relatórios com
                  JasperReports




© 2006 Fernando Lozano, http://www.lozano.eti.br   Relatórios Corporativos com Java e SL   Slide 28
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
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
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
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
JasperReports API




© 2006 Fernando Lozano, http://www.lozano.eti.br   Relatórios Corporativos com Java e SL   Slide 33
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
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
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
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
O Futuro




© 2006 Fernando Lozano, http://www.lozano.eti.br   Relatórios Corporativos com Java e SL   Slide 38
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
Demo




© 2006 Fernando Lozano, http://www.lozano.eti.br   Relatórios Corporativos com Java e SL   Slide 40
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
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

Más contenido relacionado

Similar a Relatórios corporativos com Java e software livre

Java EE no ambiente corporativo: primeiros passos WebLogic 12c
Java EE no ambiente corporativo: primeiros passos WebLogic 12cJava EE no ambiente corporativo: primeiros passos WebLogic 12c
Java EE no ambiente corporativo: primeiros passos WebLogic 12cBruno Borges
 
TechEd Brasil 2015 - Novidades do SQL Server 2016 para Business Intelligence
TechEd Brasil 2015 - Novidades do SQL Server 2016 para Business IntelligenceTechEd Brasil 2015 - Novidades do SQL Server 2016 para Business Intelligence
TechEd Brasil 2015 - Novidades do SQL Server 2016 para Business IntelligenceDiego Nogare
 
Laszlo, Framework focado em MVC
Laszlo, Framework focado em MVCLaszlo, Framework focado em MVC
Laszlo, Framework focado em MVCraquelcarsi
 
Javascript levado a serio
Javascript levado a serioJavascript levado a serio
Javascript levado a serioJaydson Gomes
 
O que ganhamos com Java e Cloud Computing?
O que ganhamos com Java e Cloud Computing?O que ganhamos com Java e Cloud Computing?
O que ganhamos com Java e Cloud Computing?Bruno Borges
 
DevCommerce Conference 2016 - Workshop: Velocidade e confiabilidade em e-comm...
DevCommerce Conference 2016 - Workshop: Velocidade e confiabilidade em e-comm...DevCommerce Conference 2016 - Workshop: Velocidade e confiabilidade em e-comm...
DevCommerce Conference 2016 - Workshop: Velocidade e confiabilidade em e-comm...iMasters
 
TDC2018FLN | Trilha Python - RASA.ai - ChatBots com inteligência artificial e...
TDC2018FLN | Trilha Python - RASA.ai - ChatBots com inteligência artificial e...TDC2018FLN | Trilha Python - RASA.ai - ChatBots com inteligência artificial e...
TDC2018FLN | Trilha Python - RASA.ai - ChatBots com inteligência artificial e...tdc-globalcode
 
Javascript levado a sério
Javascript levado a sérioJavascript levado a sério
Javascript levado a sériosaspi2
 
Pentaho: Inteligência de Negócios utilizando software livre @Campus Party 2011
Pentaho: Inteligência de Negócios utilizando software livre @Campus Party 2011Pentaho: Inteligência de Negócios utilizando software livre @Campus Party 2011
Pentaho: Inteligência de Negócios utilizando software livre @Campus Party 2011Caio Moreno
 
Pentaho: Inteligência de Negócios utilizando Software Livre @ Telefonica Camp...
Pentaho: Inteligência de Negócios utilizando Software Livre @ Telefonica Camp...Pentaho: Inteligência de Negócios utilizando Software Livre @ Telefonica Camp...
Pentaho: Inteligência de Negócios utilizando Software Livre @ Telefonica Camp...IT4biz IT Solutions
 
Pentaho inteligência de negócios utilizando software livre campus party 2011
Pentaho  inteligência de negócios utilizando software livre   campus party 2011Pentaho  inteligência de negócios utilizando software livre   campus party 2011
Pentaho inteligência de negócios utilizando software livre campus party 2011Campus Party Brasil
 
JavaServer Faces - Desenvolvendo aplicações web com produtividade
JavaServer Faces - Desenvolvendo aplicações web com produtividadeJavaServer Faces - Desenvolvendo aplicações web com produtividade
JavaServer Faces - Desenvolvendo aplicações web com produtividadeRafael Ponte
 
Encontro no .NET Architects - Application Architecture Guide (AppArchGuide)
Encontro no .NET Architects - Application Architecture Guide (AppArchGuide)Encontro no .NET Architects - Application Architecture Guide (AppArchGuide)
Encontro no .NET Architects - Application Architecture Guide (AppArchGuide)Luciano Condé
 
GlassFish, Maven, Cloud e Java EE
GlassFish, Maven, Cloud e Java EEGlassFish, Maven, Cloud e Java EE
GlassFish, Maven, Cloud e Java EEBruno Borges
 

Similar a Relatórios corporativos com Java e software livre (20)

Comparativo de funcionalidades Crystal Solutions
Comparativo de funcionalidades Crystal SolutionsComparativo de funcionalidades Crystal Solutions
Comparativo de funcionalidades Crystal Solutions
 
Software Livre Java
Software Livre JavaSoftware Livre Java
Software Livre Java
 
Java EE no ambiente corporativo: primeiros passos WebLogic 12c
Java EE no ambiente corporativo: primeiros passos WebLogic 12cJava EE no ambiente corporativo: primeiros passos WebLogic 12c
Java EE no ambiente corporativo: primeiros passos WebLogic 12c
 
TechEd Brasil 2015 - Novidades do SQL Server 2016 para Business Intelligence
TechEd Brasil 2015 - Novidades do SQL Server 2016 para Business IntelligenceTechEd Brasil 2015 - Novidades do SQL Server 2016 para Business Intelligence
TechEd Brasil 2015 - Novidades do SQL Server 2016 para Business Intelligence
 
Laszlo, Framework focado em MVC
Laszlo, Framework focado em MVCLaszlo, Framework focado em MVC
Laszlo, Framework focado em MVC
 
SpugRIA
SpugRIASpugRIA
SpugRIA
 
Jee6
Jee6Jee6
Jee6
 
Javascript levado a serio
Javascript levado a serioJavascript levado a serio
Javascript levado a serio
 
O que ganhamos com Java e Cloud Computing?
O que ganhamos com Java e Cloud Computing?O que ganhamos com Java e Cloud Computing?
O que ganhamos com Java e Cloud Computing?
 
DevCommerce Conference 2016 - Workshop: Velocidade e confiabilidade em e-comm...
DevCommerce Conference 2016 - Workshop: Velocidade e confiabilidade em e-comm...DevCommerce Conference 2016 - Workshop: Velocidade e confiabilidade em e-comm...
DevCommerce Conference 2016 - Workshop: Velocidade e confiabilidade em e-comm...
 
TDC2018FLN | Trilha Python - RASA.ai - ChatBots com inteligência artificial e...
TDC2018FLN | Trilha Python - RASA.ai - ChatBots com inteligência artificial e...TDC2018FLN | Trilha Python - RASA.ai - ChatBots com inteligência artificial e...
TDC2018FLN | Trilha Python - RASA.ai - ChatBots com inteligência artificial e...
 
Easy Rails
Easy RailsEasy Rails
Easy Rails
 
Javascript levado a sério
Javascript levado a sérioJavascript levado a sério
Javascript levado a sério
 
Pentaho: Inteligência de Negócios utilizando software livre @Campus Party 2011
Pentaho: Inteligência de Negócios utilizando software livre @Campus Party 2011Pentaho: Inteligência de Negócios utilizando software livre @Campus Party 2011
Pentaho: Inteligência de Negócios utilizando software livre @Campus Party 2011
 
Pentaho: Inteligência de Negócios utilizando Software Livre @ Telefonica Camp...
Pentaho: Inteligência de Negócios utilizando Software Livre @ Telefonica Camp...Pentaho: Inteligência de Negócios utilizando Software Livre @ Telefonica Camp...
Pentaho: Inteligência de Negócios utilizando Software Livre @ Telefonica Camp...
 
Pentaho inteligência de negócios utilizando software livre campus party 2011
Pentaho  inteligência de negócios utilizando software livre   campus party 2011Pentaho  inteligência de negócios utilizando software livre   campus party 2011
Pentaho inteligência de negócios utilizando software livre campus party 2011
 
JavaServer Faces - Desenvolvendo aplicações web com produtividade
JavaServer Faces - Desenvolvendo aplicações web com produtividadeJavaServer Faces - Desenvolvendo aplicações web com produtividade
JavaServer Faces - Desenvolvendo aplicações web com produtividade
 
Programação web e o front-end
Programação web e o front-endProgramação web e o front-end
Programação web e o front-end
 
Encontro no .NET Architects - Application Architecture Guide (AppArchGuide)
Encontro no .NET Architects - Application Architecture Guide (AppArchGuide)Encontro no .NET Architects - Application Architecture Guide (AppArchGuide)
Encontro no .NET Architects - Application Architecture Guide (AppArchGuide)
 
GlassFish, Maven, Cloud e Java EE
GlassFish, Maven, Cloud e Java EEGlassFish, Maven, Cloud e Java EE
GlassFish, Maven, Cloud e Java EE
 

Más de elliando dias

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slideselliando dias
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScriptelliando dias
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structureselliando dias
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de containerelliando dias
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agilityelliando dias
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Librarieselliando dias
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!elliando dias
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Webelliando dias
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduinoelliando dias
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorceryelliando dias
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Designelliando dias
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makeselliando dias
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.elliando dias
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebookelliando dias
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Studyelliando dias
 

Más de elliando dias (20)

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slides
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScript
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structures
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de container
 
Geometria Projetiva
Geometria ProjetivaGeometria Projetiva
Geometria Projetiva
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agility
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Libraries
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!
 
Ragel talk
Ragel talkRagel talk
Ragel talk
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Web
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
Minicurso arduino
Minicurso arduinoMinicurso arduino
Minicurso arduino
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorcery
 
Rango
RangoRango
Rango
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Design
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makes
 
Hadoop + Clojure
Hadoop + ClojureHadoop + Clojure
Hadoop + Clojure
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebook
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Study
 

Relatórios corporativos com Java e software livre

  • 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. 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. 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. Requerimentos © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 4
  • 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. Exemplo Tradicional © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 6
  • 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. 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. 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. 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. 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. Exemplo Nova Geração © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 12
  • 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. Software Livre para Relatórios © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 14
  • 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. 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. 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. 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. Design Visual com iReport © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 19
  • 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. 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. 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. iReport © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 23
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. JasperReports API © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 33
  • 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. 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. 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. 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. O Futuro © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 38
  • 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. Demo © 2006 Fernando Lozano, http://www.lozano.eti.br Relatórios Corporativos com Java e SL Slide 40
  • 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. 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