cap.19_tirando o máximo do javaee6 open source

Embed Size (px)

Citation preview

FRelatrios com Eclipse BIRT. A

Mdulo

Este um mdulo prtico, que traz tutoriais com passos detalhados para confeco de relatrios Web com Eclipse BIRT. Alm de dicas bsicas para a construo de pginas mestre (cabealhos e rodaps), reso de estilos, agrupamentos, totalizaes e quebras de pgina, este mdulo tambm prov dicas e exemplos arquiteturais para uma liberao adequada (segura e eficiente) de relatrios para usurios finais.

Captulo F19

Introduo ao Eclipse BIRT6 A

19

Captulo

Implementao do Caso de Uso UC006 Auditar Operao! - Analisando a Especificao

"Administrador" realizarem auditoria em operaes sobre o cadastro de funcionrios, conforme especificado na Figura A19.1.

O

nosso prximo Caso de Uso tem por objetivo prover um relatrio para usurios com papel

Figura A19.1. Especificao para "UC006 Auditar Operao!".

Por chamarmos de "relatrio", e no "consulta", estamos enfatizando a importncia de provermos um resultado para o usurio com formato excepcionalmente bem ajustado para impresso *, que permita o uso de recursos tais como quebras de pgina, totalizaes e grficos. Muito embora tenhamos desenvolvido uma soluo em HTML com razovel qualidade para impresso no mdulo B, para a Ficha do Funcionrio, ela no seria suficiente para atender a requisitos mais rigorosos de impresso. Alguns exemplos de problema surgiriam quando fosse exigido o posicionamento exato de campos quando impressos (como para impresso sobre formulrios primpressos), quebras de pgina bem feitas ou mesmo a impresso de um grande volume de pginas. Tudo isso porque os Navegadores atuais e a tecnologia HTML ainda so limitados, nesta rea.

*

No jargo de pocas passadas, "relatrios" emitiam informaes impressas diretamente em papel e "consultas" emitiam informaes em um terminal de vdeo. Na medida em que se tornou possvel "visualizar relatrios em terminais de vdeo" e/ou "enviar para a impressora quaisquer consultas", este critrio ficou mais difuso. Portanto, como conveno, iremos chamar de relatrio sadas produzidas em tecnologia Eclipse BIRT que possuam formatao (mesmo que alternativa) mais adequada para impresso, em padro PDF ou DOC.

Captulo F19

Por este motivo, quando especificamos um "relatrio" e no uma "consulta", estamos requerendo uma sada em formato PDF ou outro que possa ser impresso por um programa que no seja o Navegador (como o Adobe Acrobat Reader, por exemplo), mais apropriado para esta finalidade. No caso do jCompany Developer Suite, utilizaremos preferencialmente o Eclipse BIRT, soluo Open Source de base homologada para este fim *.

- O Eclipse BIRTO Eclipse BIRT uma soluo de Business Intelligence de origem comercial cedida pela empresa Actuate Corporation comunidade Open Source h alguns poucos anos atrs. O Eclipse BIRT traz plugins no Eclipse que permitem a confeco visual (WYSIWYG) de relatrios incluindo quebras e totalizaes, cubos, consultas tipo "planilha" (Crosstab), sub-relatrios e muitos outros recursos, obtidos com recursos de "arrasta e solta" e conhecimentos de SQL apenas. Alm dos utilitrios de desenvolvimento, o Eclipse BIRT tambm prov uma arquitetura que facilita a criao de "frameworks de relatrio" que permite a criao de estilos e componentes reutilizveis entre relatrios pela empresa. Por fim, em tempo de execuo, alm de componentes de motor (engine) que permitem a execuo de relatrios com produo de informaes em mltiplos formatos (PDF, DOC, XLS, PPT, CSV, DOC, etc.), o Eclipse BIRT tambm traz uma aplicao que facilita significativamente a tarefa de disponibilizar relatrios para a WEB: o Eclipse BIRT Viewer. Muito embora seja uma soluo recentemente incorporada, o jCompany agrega valor ao Eclipse BIRT com: o Gerncia de Configurao: Instalao e pr-configurao tanto do ambiente de desenvolvimento quanto do de execuo do Eclipse BIRT no Tomcat, garantindo uso imediato sobre uma verso homologada. Framework geral: Framework de base simples, contendo estilos visuais (similares a estilos CSS) para serem imediatamente aplicados em componentes e sees tpicas de relatrios. jCompany BIRT Viewer: Especializaes ao BIRT Viewer, incluindo tradues bsicas para portugus e uma arquitetura que possibilita liberao ultra-simplificada e com solues de reforo na rea de segurana.

o o

No espao que possumos neste livro, cobriremos apenas uma pequena parte das inmeras possibilidades que traz o Eclipse BIRT. Sugerimos os livros de nossa referncia bibliogrfica "BIRT - A Field Guide to Reporting" [Peh, Hannenmann, Reeves, Hague 2006] e "Integrating and Extending BIRT" [Weathersby, French, Bondur, Tchell, Chatalbasheva 2006] para um aprofundamento certamente compensador nesta rea.

- Criando o relatrio com modelo "Tabular"1. No Eclipse, crie o diretrio "rel" abaixo de "src/main/webapp" no projeto "rhtutorial". Voc ver que o nome rel no um qualquer - ele segue uma conveno do jCompany que conheceremos mais a frente, importante para implementao de polticas de segurana de acesso em tempo de execuo. Clique direito sobre o novo diretrio e procure a opo "New -> Report" (Se "Report" no aparecer, clique em "New -> Other... -> Business Intelligence and Reporting Tools -> Report"). D o nome "funcionarioAuditoria" ao nosso primeiro relatrio, preservando o sufixo padro ".rptdesign" do Eclipse BIRT.

2. 3.

*

Uma outra opo seria a dupla Jasper Reports e iReports, recomendadas at a verso 3.1 do jCompany e ainda mantidas em homologao, em paralelo ao Eclipse BIRT. Mas h, no mercado, uma clara tendncia ao uso do Eclipse BIRT devido sua melhor integrao com o Eclipse, documentao e acabamento diferenciado - especialmente devido sua origem comercial.

Introduo ao Eclipse BIRT

Figura A19.2. Criao de um novo relatrio.

4.

V para o prximo passo do Assistente e selecione o modelo "jCompany - Relatrio Tabular".

Figura A19.3. Relatrio utilizando modelo jCompany Relatrio Tabular.

Note que existem diversos modelos (templates) padres do BIRT e dois do jCompany disponveis. Basicamente, estes modelos trazem verses iniciadas de relatrios para facilitar a vida de novatos. Com a experincia, a tendncia usar os modelos mais simples ou mesmo novos modelos, criados sob medida para a empresa ou projeto. O modelo que utilizaremos se presta ao nosso primeiro relatrio que visa trazer uma lista de valores, sem quebras e nenhum recurso especial. 5. Clique em "Finish". Perceba que o Eclipse ir mudar de "perspectiva", apresentando as vises disponibilizadas pelos plugins do Eclipse BIRT, para confeco de relatrios.

Captulo F19

Figura A19.4. Perspectiva do Eclipse BIRT no Eclipse.

#1. Paleta de componentes de relatrio para "arrastar e soltar". #2. A viso de "Outline" exibe a estrutura de componentes do relatrio e especialmente importante quando se trabalha com bibliotecas e para selees refinadas de componentes do relatrio, como veremos. #3. A rea de "Layout" do relatrio traz alguns componentes pr-configurados no modelo do jCompany, inseridos em uma tabela de dados (objeto Table). #4. A rea de "Property Editor - Report" traz propriedades diversas de configurao para componentes de relatrio, sensveis ao contexto! Clique em objetos na rea de "Layout" e perceba como estas propriedades se modificam. #5. Diversos painis agrupam propriedades para cada objeto com um grande nmero de opes de estilos bsicos (Fonte, Cor, Tamanho, Cor de Fundo, alinhamento etc.); formataes para datas, nmeros, dinheiro; expresses de avaliao dinmica; eventos para programao; etc. 6. Clique na aba "Preview", conforme a Figura A19.5.

Figura A19.5. Visualizao de relatrio conforme disponibilizado pelo modelo.

#1. Note que a parte central oferece outras vises alm da principal de "Layout", a saber: o "Layout": Editor WYSIWYG do relatrio.

Introduo ao Eclipse BIRT

o "Master Page": Pgina "mestre", contendo rea para definies de topo e rodap, globais para o relatrio. o "Script": Seo para programao. O BIRT expe eventos que permitem programao via "script" utilizando sintaxe Javascript ou at Java, mediante configuraes especiais. Com isto, possvel se obter efeitos de alto dinamismo com possibilidades ilimitadas. o "XML Source": Todas as definies que se faz nos dilogos visuais ("Layout" e "Property Editor") terminam por gerar entradas em XML, que tambm pode ser editado ou consultado diretamente nesta aba. o "Preview": Permite a visualizao do relatrio, inclusive conectando-se com o Banco de Dados e utilizando dados reais de teste. #2. Janela de captura de argumentos automaticamente gerada pelo BIRT *. Note que o modelo "Tabular" do jCompany j traz um conjunto de argumentos apenas para exemplo e referncia. 7. Clique em "Ok" para aceitar os valores de argumentos propostos. O modelo "Tabular" do jCompany pode ser ento melhor compreendido, como mostra a Figura A19.6.

Figura A19.6. Estilos do modelo "Tabular" em ao.

#1. Um logotipo "da empresa" j vem configurado no canto esquerdo do topo, definido na aba "Master Page". #2. O ttulo do relatrio exibido com o estilo "masterCabecalhoTituloPlc". #3. O subttulo do relatrio exibido com o estilo "masterCabecalhoSubTituloPlc". #4. A data e hora de criao disponibilizada no canto da direita, com estilo "masterCabecalhoDataCriacaoPlc". #5. A barra de "argumentos" destinada a exibir os valores informados como parmetros pelo usurio. Ela includa em uma grade ("Grid"), que por sua vez fica na primeira linha da tabela ("Table") que vinculada (Binding) com uma Tabela de Dados do SGBD-R. - Os rtulos estticos desta rea de argumentos recebem o estilo "cabecalho1RotuloAlinhadoDireitaPlc". - As partes dinmicas de argumentos so exibidas em um estilo que produz um contorno de destaque, chamado "cabecalho1ValorComBordaPlc".

*

Esta janela aparece traduzida quando utilizamos o jCompany BIRT Viewer, em tempo de teste e produo, no Tomcat. Alm disso, ela automaticamente omitida quando enviamos os argumentos dos relatrios via URL, tcnica que usaremos mais adiante.

Captulo F19

#6. Os rtulos que aparecem no cabealho da tabela de dados em si utilizam uma variao sutil de estilos que exibem sublinhados e cores de fundo cinza. - Os que se apresentam centralizados utilizam estilos chamados "tabela1RotuloNumeroPlc". - Os que se apresentam alinhados esquerda utilizam estilos chamados "tabela1RotuloGeralPlc". #7. Os valores de dados numricos utilizam o estilo "tabela1ValorNumeroPlc" que alinha os valores direita (como comum para nmeros). #8. Os valores textuais utilizam o estilo "tabela1ValorTextoPlc" com alinhamento esquerda. #9. Os valores monetrios utilizam o estilo "tabela1ValorDinheiroPlc" que formata o smbolo do real e casas decimais, alm do alinhamento tambm direita. #10. Os valores de data so formatados com "dd/MM/yyyy" e centralizados atravs do estilo "tabela1ValorDataPlc". #11. Os valores de data e hora so formatados com "dd/MM/yyyy HH:mm:ss" atravs do estilo "tabela1ValorDataHoraPlc". #12. Na parte de rodap da tabela de dados uma nova grade inserida com dois objetos: - Um rtulo indicando valor de total com estilo "rodape1RotuloPlc". - E um campo agregado (Aggregation) que conta o total de registros exibidos no relatrio, exibindo-os com o estilo "rodape1TotalPlc". #13. Por fim, tambm definido na pgina mestre est o contador de pginas de rodap contendo uma linha de diviso do corpo. O uso de estilos como os acima descritos deve ser incentivado para relatrios BIRT, assim como o uso de CSS para pginas HTML. Com os estilos obtm-se maior produtividade na reviso e melhor qualidade na padronizao. Naturalmente, tambm possvel especializar e/ou modificar algumas das propriedades dos estilos. 8. 9. Vamos conferir a arquitetura de framework para relatrios BIRT para localizar os estilos utilizados. Clique novamente na aba "Layout" e, na seo da esquerda, na aba de "Resource Explorer". Clique direito sobre "Shared Resources" procure a opo " Add Resource...". Preencha o dilogo conforme Figura A19.7

Figura A19.7. Adicionando biblioteca de base do jCompany para relatrios BIRT.

10. Em seguida, expanda a pasta "jCompanyGeneral.rptlibrary", "Themes" e os dois temas existentes.

Introduo ao Eclipse BIRT

Figura A19.8. Biblioteca de base do jCompany para relatrios BIRT.

#1. Na viso da esquerda, alm da aba "Palette" tambm possvel abrir o "Data Explorer" (Explorador de Dados) e o "Resource Explorer" (Explorador de Recursos). O "Resource Explorer" exibe recursos que o arquivo atual eventualmente reutiliza. #2. No caso do modelo do jCompany "Tabular", uma biblioteca chamada "jCompanyGeneral.rptlibrary" j vem pr-configurada, contendo basicamente estilos para reso e maior padronizao. #3. Os estilos so agrupados, em bibliotecas, na pasta "Themes" (Temas). O tema "defaultTheme" contm estilos que sobrepem os valores default utilizados pelo BIRT. Deste modo, os objetos "itens de relatrio" disponveis na paleta j so introduzidos nos relatrios com alguns dos tipos "primitivos" (como "Table","Grid", etc.) j recebendo customizaes do jCompany. #4. O tema "jCompanyDefaultTheme" define novos estilos no existentes no BIRT, como os citados no passo 7. Assim, recapitulando at aqui, tivemos contato com os trs tipos de arquivos principais do BIRT: o rptdesign, o rpttemplate e o rptlibrary. Criamos um novo relatrio "funcionarioAuditoria.rptdesign" a partir de um modelo de relatrio do jCompany (existe com nome "jCompanyTabular.rpttemplate", pr-configurado nos diretrios dos plugins BIRT). Este novo relatrio, por sua vez, graas ao modelo, j vem com os estilos da biblioteca "jCompanyGeneral.rptlibrary" disponveis. Importante: Note que, para os maiores ganhos, deve-se realizar um trabalho preliminar de padronizao de topos, rodaps, estilos etc., para toda a empresa ou ao menos para um projeto. Novos arquivos dos tipos ".rpttemplate" e ".rptlibrary", contendo generalidades do negcio, podem ento ser disponibilizados em nvel da arquitetura para facilitar os relatrios do dia a dia, a partir da.

- Alterando propriedades gerais do relatrioA primeira providncia aps criarmos um novo relatrio alterarmos os seus dados globais. 1. 2. Abra o dilogo de "Outline" do Eclipse (se no estiver visvel, utilize "Show -> View -> Outline"). Clique na raiz da Treeview, em "Relatrio Tabular", e localize a aba de "Property Editor - Report" no painel mais central. Altere os valores conforme os descritos na Figura A19.9.

Captulo F19

Figura A19.9. Definies globais do relatrio.

- Configurando a conexo com o SGBD-R para o projetoQuando clicamos em "Preview" conseguimos visualizar uma linha de dados em nosso relatrio colocada com valores constantes pelo modelo fornecido pelo jCompany. Mas o mais interessante podermos nos conectar diretamente com a base de desenvolvimento para confeccionar nosso relatrio de forma viva, com alta produtividade, utilizando dados reais de teste. Para isso, temos inicialmente que criar um Data Source (Fonte de Dados), em nosso caso apontando para o nosso banco de dados local, em Apache Derby. 1. 2. Clique na aba "Data Explorer" e expanda o item "Data Source". Clique direito no Data Source que veio pr-configurado, "BancoLocal", e, em seguida, em "Edit". Este um Data Source que traz configuraes para conexo com o Apache Derby, SGBD-R que utilizamos como padro at aqui.

Figura A19.10. Data Source BIRT com dados de conexes para Banco Local padro do jCompany.

#1. Classe do Driver JDBC especfico. Note que, como veio pr-configurado, o Data Source j traz o Driver do Apache Derby selecionado, homologado para acesso ao nosso SGBD local. Para alterar a configurao para qualquer outro SGBD (ou mesmo se houver algum problema nesta configurao), basta utilizar o boto "Manage Drivers..." para configurar um novo Driver. #2. URL de acesso especfica para o Driver. Esta URL pode ser obtida do arquivo "rhtutorial.xml" (arquivo de contexto do Tomcat, ou do manual de cada Driver JDBC utilizado). Esta URL nos atende, j que o jCompany utiliza sempre o nome "bancolocal" como nome do banco de dados local. #3. Usurio "APP" e senha "APP", conforme vm pr-configurados pelo jCompany.

Introduo ao Eclipse BIRT

#4. O campo "JNDI URL" um dos mais importantes desta configurao. Apesar de no ter efeito no desenvolvimento do relatrio em si (se no alterar este campo, ainda assim a conexo em desenvolvimento ir funcionar), se no informarmos um endereo de pool de conexes que seja vlido em tempo de produo, em produo o Apache Derby ir tentar criar uma nova conexo (com o usurio e senha "APP"/"APP") a cada execuo para cada usurio, o que degrada consideravelmente a performance! Felizmente, mais provvel que o relatrio no execute, pois o usurio e senha de desenvolvimento utilizados provavelmente no tero sucesso em conexo no ambiente de produo. Mas note que, se tiver sucesso, este problema pode ser mascarado e, apesar da baixa performance, o relatrio executar de forma sofrvel para os usurios o que pode ser ainda pior do que uma falha, que logo corrigida. 3. Troque o endereo de "###POOL###" para "rhtutorial", que referenciar corretamente o pool de conexes pr-configurado pelo jCompany (basta adicionar o prefixo "java:comp/env" ao Data Source declarado no "web.xml"). Clique em "Test Connection..." para ver se uma mensagem "Connection Sucessfull" aparece. Se no aparecer, certifique-se de que o banco de dados foi ativado no projeto "rhtutorial" e/ou reconfira os parmetros informados para conexo.

4.

- Configurando Data Sets para um relatrioUma mesma Fonte de Dados (Data Source) ser possivelmente reutilizada por vrios relatrios dentro de um mesmo projeto *, mas um Conjunto de Dados (Data Set) tende a ser especfico. Isso porque, ao contrrio do que pode parecer em um primeiro momento, um Conjunto de Dados mais do que um simples mapeamento para uma "Tabela" - ele representa dados j preparados para a finalidade a que se destinam, no relatrio em questo. Um Data Set ser representado, tipicamente , por um "clusula select" que pode envolver projees, junes e agregaes prprias do SQL. Alm disso, uma definio de Data Set poder conter decoraes na forma de "nomes mais significativos" para colunas (propriedades), frmulas e filtros executados no "cliente" (e no no SGBD), dentre outros recursos adicionais ao "select" bsico. Por tudo isso, o recomendado que se definam Data Sets especficos para atendimento ao relatrio em questo, com a maior especializao possvel. Vamos, ento, definir o Data Set para atendimento ao nosso Caso de Uso. 1. Acione clique direito em "Data Set" e a opo "New Data Set". Preencha o primeiro dilogo conforme a Figura A19.11.

Figura A19.11. Definio de um primeiro Data Set.

*

Por este motivo, quando voc estiver mais fluente em Eclipse BIRT, o correto ser definir o Data Source em uma biblioteca de escopo do Projeto para que no fique redundado em vrios relatrios, mas seja reutilizado.

Note que o Eclipse BIRT no trabalha somente com bases relacionais (SGBD-R). Ele pode produzir relatrios tendo arquivos convencionais como Data Source, por exemplo. Neste livro iremos focar somente em acesso a bancos de dados relacionais.

Captulo F19

2.

No segundo passo, perceba que nossas tabelas e colunas esto disponveis em painel da esquerda para auxiliarem na confeco do SQL. Posicione na clusula "from", d um espao e d um duplo clique na tabela "Funcionario" para preencher a clusula.

Figura A19.12. Incio da confeco da clusula SQL, com auxlio.

3.

Posicione o cursor agora na parte "select" e abra uma linha para cada coluna que vamos selecionar. Procure a coluna na relao esquerda e, com duplo clique, selecione cada uma que precisaremos, conforme a Figura A19.13.

Figura A19.13. Relao de colunas definidas no SQL.

Importante: Lembre-se de dar espao aps a ltima coluna para separ-la do "from". Um erro comum esquecer de dar espaos entre as linhas, quando editando SQLs neste dilogo, quando no h vrgulas. 4. Crie agora uma clusula "where" sempre lembrando de dar espaos ao final das linhas. Preencha a clusula conforme a Figura A19.14.

Figura A19.14. Clusula SQL para o Data Set finalizada.

Introduo ao Eclipse BIRT

#1. Intervalo de datas verificado utilizando uma interrogao "?" em lugar de argumentos do relatrio (que veremos a seguir). #2. Para que determinados argumentos tenham o efeito de QBE (Query By Example), ou seja, de no filtrarem quando no informados, podemos utilizar esta tcnica. No caso, se o usurio for informado iremos recuperar apenas modificaes realizadas pelo mesmo. Do contrrio, recuperaremos de todos ("? is null"). Importante: Note que se mantemos o dono ("owner") "APP", esperamos que ele tambm exista em produo - do contrrio devemos omiti-lo. 5. Clique em "Finish". O prximo dilogo se abrir permitindo que se informe nomes mais significativos para as colunas e tambm rtulos que sero utilizados como default. Informe os valores conforme a figura abaixo.

Figura A19.15. Preparando colunas para sada (output).

#1. Em "Name" fica o nome da coluna, incluindo todas que definimos na clusula "select" do SQL. #2. Em "Type" fica o tipo BIRT assumido para a representao da coluna no relatrio. #3. Em "Alias" pode-se definir um valor alternativo para cada coluna, apresentado em dilogos com o Desenvolvedor durante a confeco do relatrio - mas tambm em alguns utilitrios do BIRT que podem ser utilizados pelos usurios finais, como "para exportao de dados". Portanto, vale pena informar um nome significativo para cada coluna aqui. #4. Em "Display Name" pode-se definir um rtulo padro para a coluna, utilizado pelo BIRT como default, em algumas situaes. #5. Em "Display Name Key" pode-se utilizar I18n no relatrio colocando chaves para arquivos de mensagens (como fizemos em HTML) em lugar dos rtulos em portugus diretamente. No utilizaremos este recurso neste livro, mas o Desenvolvedor no encontrar problemas em entender como funciona na prpria documentao do Eclipse BIRT. #6. Ao acionar um "duplo clique" ou o boto "Edit..." um dilogo se abrir, permitindo informar os valores, para cada coluna. Importante: um erro saltar este dilogo sem preench-lo cuidadosamente para "queimar etapas". Ao informarmos bons valores nestas colunas j estamos avanando em nosso objetivo e ganharemos tempo mais adiante, com os valores e rtulos j bem definidos.

Captulo F19

6.

Clique agora, na lista da esquerda, em "Parameters" *. Note que aparecem quatro valores j preenchidos, ou seja, quatro "argumentos" ou "parmetros" do Conjunto de Dados (Data Set). O Eclipse BIRT j inclui um parmetro para cada interrogao "?" que definimos em nossa clusula SQL. Precisaremos neste dilogo, basicamente, vincular os parmetros do Data Set com os parmetros do relatrio (Report Parameters). Note que, na arquitetura flexvel do BIRT, um relatrio pode requisitar, digamos, dois parmetros do usurio (Report Parameters) que, por sua vez, podem ser vinculados a vrios parmetros de conjuntos de dados (Data Set Parameters), inclusive de vrios Data Sets diferentes. Este relatrio modelo j possui, por exemplo, trs parmetros definidos para o relatrio, como vimos no "Preview", requisitando "data de incio", "data de fim" e "usurio" - exatamente os argumentos que precisaremos em nosso Caso de Uso . Assim, edite cada um dos quatro valores de argumentos para o Data Set, conforme exemplifica a Figura A19.16.

Figura A19.16. Parmetros de Data Set j associados a Parmetros do Relatrio.

#1. Dilogo de "Data Set Parameters", que nos permite definir melhor cada parmetro "?" includo na clusula SQL e vincul-lo a um Report Parameter. #2. Em "Name", substitua os nomes gerados por outros mais significativos. #3. Em "Data Type", o Eclipse BIRT j assume valores apropriados. #4. Em "Direction", deixe o padro "Input". #5. Em "Default Value", tambm no modifique. O valor ser assumido dos parmetros do relatrio. #6. Em "Linked to Report Parameter", selecione um parmetro correspondente na lista, utilizando o "usuarioUltAlteracao" duas vezes, para o caso especial (tipo QBE) que definimos.

*

Iremos saltar "Computed Columns", mas seu uso pode ser experimentado pelo Desenvolvedor - um dilogo que, como o nome sugere, permite que criemos "colunas" com valores derivados das demais atravs de frmulas diversas. Neste livro, propusemos uma primeira especificao de relatrio prxima do modelo que vem no jCompany para facilitar o primeiro caso.

Introduo ao Eclipse BIRT

#7. Acione "duplo clique" ou "Edit..." em cada linha para alterar. 7. Agora clique na opo "Preview Results". Se existirem atualizaes realizadas com o usurio "admin", no intervalo de datas que vem no modelo como default (ou o ltimo informado no "Preview"), aparecero resultados como na figura abaixo.

Figura A19.17. Valores retornados pela clusula SQL utilizando valores de argumentos.

8.

Finalize a definio do Data Set com "Ok".

- Entendendo os parmetros de relatriosUma vez criado o Data Set, vamos entender um pouco mais sobre parmetros de relatrios. 1. Expanda o item "Report Parameters" da aba "Data Explorer". possvel criar novos argumentos com um clique direito em "Report Parameters" ou editar os que vm como padro com um duplo clique. Acione duplo clique em "dataUltAlteracaoIniArg".

Figura A19.18. Parmetros de relatrio com agrupamento para intervalo de datas.

#1. Definio de parmetros para o relatrio como um todo. So os parmetros aqui definidos que sero requisitados aos usurios. #2. Podem-se agrupar parmetros para que apaream em uma caixa segmentada no dilogo com o usurio e/ou para vincul-los (como no caso de listas encadeadas de valores. Ex.: Unidades da Federao -> Municpios -> Bairro"). No caso do projeto modelo "Tabular", um grupo vem pr-configurado para agrupar o intervalo de datas. #3. Um terceiro argumento definido fora do grupo, no modelo, que o usurio responsvel pelas alteraes. #4. Nome do argumento. #5. Em "Prompt Text:" informe o texto que se deseja exibir para usurios no dilogo que requisita os parmetros para o usurio. #6. Em "Data Type" informe o tipo dos argumentos. #7. Em "Display Type" pode-se definir para que um valor seja exibido em formatos tais como "Combos", "Listas", "Radio", etc. #8. Em "Display As -> Help Text" informe um texto que aparecer como um balo de ajuda no campo de parmetro.

Captulo F19

#9. Em "Display As -> Format As" possvel definir um formato para exibio dos parmetros. No caso de datas, o formato sugerido, por hora, dd/MM/yyyy ou "Medium Date". #10. Existem outras opes que podem ser informadas para cada argumento. A principal "Is Required" para obrigatrio e "Hidden"/"Do not echo input" para no requisitar ao usurio (assumindo um valor default como constante, por exemplo). #11. Em "Default Value" pode-se informar um valor default que ser exibido para o usurio. Vimos estes valores em ao quando clicamos em "Preview" e a janela de argumento se abriu com valores j preenchidos. 2. Acione um duplo clique agora no parmetro de usurio. Perceba que neste caso o parmetro vem como opcional. O valor default "admin" (mas seria pouco provvel deixar um valor default neste campo, em um caso real).

Figura A19.19. Parmetro do tipo String, para usurio.

3.

Se tornarmos a conferir a janela padro de coleta de parmetros de relatrio do Eclipse BIRT (tambm chamamos de janela de argumento) compreenderemos um pouco melhor seu funcionamento. Confira com a Figura A19.20.

Figura A19.20. Dilogo de solicitao de valores para parmetros de relatrio.

#1. Para chamar novamente o dilogo, clique na aba "Preview" e no boto "Show Report Parameters". #2. O ttulo da janela pode aparecer em ingls, mas em produo vir traduzido. #3. Um texto de explicao de obrigatoriedade tambm aparece traduzido em tempo de execuo. #4. Os grupos de argumento so apresentados com este destaque. #5. Valores obrigatrios aparecem com a marca de asterisco.

Introduo ao Eclipse BIRT

#6. Os valores default esto na formatao definida. #7. Campos opcionais aparecem com uma opo adicional de valor nulo.

- Exibindo tabelas de dados (Table) em relatriosVamos agora associar o nosso conjunto de dados a um elemento visual chamado "tabela" (table), capaz de exibi-lo imediatamente e com formataes apropriadas. O nosso relatrio modelo j traz um objeto deste tipo com valores constantes que iremos substituir. 1. 2. Abra a janela de "Outline" do Eclipse e expanda o item "Body" da Treeview "Relatrio de Auditoria de Funcionrios". Clique em "Table", abaixo de "Body", e na viso "Property Editor - Table". Selecione a pasta "Binding". Em seguida, selecione "FuncionarioAuditoria" (Data Set recm-criado) na lista "Data Set".

Figura A19.21. Dilogo de solicitao de valores para parmetros de relatrio.

#1. A Treeview do outline exibe a estrutura do arquivo XML que contm toda a definio do relatrio (inclusive Data Sources, Data Sets e Libraries), facilitando a seleo de determinados elementos. #2. O segmento corpo contm a parte de apresentao do relatrio em si, excetuando-se a "Master Page", que prov cabealhos e rodaps globais. #3. A viso "Property Editor" dinmica, como j vimos, e exibe informaes complementares (propriedades) para o elemento selecionado, seja no Outline, seja na viso de Design principal. Em nosso caso, exibe propriedades para "Table". #4. A pasta "Binding" permite que se vincule um objeto "tabela" a um "conjunto de dados". #5. Ao vincular, perceba que o nome que definimos utilizado tanto em "Name" quanto em "Expression". 3. Agora vamos seguir para a viso principal de "Layout WYSIWYG. Clique nos campos de amostra na linha "Detail Row" e remova-os. Note que possvel marcar vrios objetos simultaneamente com as tcnicas de edio convencionais de "Control+Clique". Em seguida, selecione a pasta "Data Explorer", expanda a relao de "Data-Sets" e o nosso Data Set "FuncionarioAuditoria". Clique na coluna "Cd." e a arraste para a coluna do Design, conforme a Figura A19.22.

4.

Captulo F19

Figura A19.22. Arrasta e solta do Data Set para a tabela na viso de Design WYSIWYG.

#1. Objetos originais do modelo removidos. #2. Objeto "Cd." criado a partir da coluna do Data Set. Note que somente possvel arrastar porque o objeto Table est vinculado ao Data Set. 5. Arraste as demais colunas que possuem uma correspondncia para a coluna respectiva da tabela do Design. Troque o rtulo de Salrio para CPF e deixe em branco as colunas sem correspondncia, conferindo com a Figura A19.23.

Figura A19.23. Colunas acomodando dados do Data Set.

6.

Agora realize novamente um "Preview" para vermos o resultado at aqui.

Figura A19.24. Visualizao do relatrio com dados de teste.

#1. Se no vierem dados, altere os valores dos parmetros conforme sua amostragem (utilize o plugin Quantum DB se for preciso para ver datas das ltimas alteraes e usurios). #2. Agora vemos dados reais recuperados do banco de dados de teste local, configurado no Data Source. #3. Note que os alinhamentos de nmeros deveriam estar direita e de data, centralizado, segundo recomenda o modelo. Alm disso, a fonte no a mesma. Em suma, os novos objetos ainda no esto seguindo a formatao padro.

Introduo ao Eclipse BIRT

#4. O objeto "Aggregation" pr-definido agora no renderizado, pois exclumos objetos por ele utilizados. O Eclipse BIRT gera ento uma mensagem de erro que aparece de vermelho logo abaixo do relatrio. 7. Vamos melhorar a formatao do nosso relatrio para nos adequarmos especificao. Comece por excluir a coluna que contm "Nascido em", retornando para a viso "Layout" e seguindo as instrues abaixo.

Figura A19.25. Excluso de coluna no Design.

#1. Clique nas caixas cinza superiores ou laterais para selecionar uma coluna ou linhas inteiras do objeto Table. #2. Clique direito para opes de edio bsicas como excluso ou alterao de estilo. Utilize "Delete" para excluir a coluna. 8. Agora vamos inserir uma nova linha na seo de cabealho para conter os totais de includos, alterados e excludos, conforme a especificao da Figura A19.1. Note que temos duas linhas de cabealho e que, para o efeito especificado, devemos incluir uma nova entre as existentes.

Figura A19.26. Inserindo uma nova linha de cabealho.

#1. Linhas de cabealho. Clique direito na primeira e seleciona "Insert -> Row -> Below" para incluir uma nova linha entre as duas existentes. #2. Perceba o cone diferenciado para linha de detalhe. Tambm possvel criar quantas linhas de detalhes forem necessrias - e todas as criadas se repetiro conforme o nmero de linhas do conjunto de dados. #3. Ao final, h uma linha de rodap preenchida por default com uma totalizao. Foi solicitado que os totais ficassem acima - portanto, iremos retir-la daqui, logo adiante. 9. Selecione todas as colunas da nova linha criada e clique direito para acessar a opo "Merge Cells". Acione-a para que possamos mesclar estas clulas em uma nica.

Captulo F19

Figura A19.27. Mesclando colunas de uma linha.

10. Agora clique na linha que possui o rtulo "Total de Registros". Repare que, ao faz-lo, uma aba com indicador "Grid" aparece dinamicamente, revelando o continer do rtulo. Esta aba permite que se selecione o continer em si (e no algum dos objetos contidos) - seja para edio de suas propriedades, seja para redimension-lo ou arrast-lo, como o nosso caso. Com este recurso, o Eclipse BIRT evita aquelas chatas alteraes de camadas "para baixo" ou "para cima" de editores visuais. Clique na aba "Grid" e arraste este objeto todo (contendo o Total de Registros e a Agregao) para a nossa linha recm criada.

Figura A19.28. Arrastando um Grid.

Por que ns no inclumos os totais nas prprias colunas da tabela principal, em vez de criar um Grid? Incluir um Grid permite que possamos definir um subleiaute independente das sees principais da tabela para cabealhos, rodaps ou mesmo outras linhas especiais de detalhe. Na maioria das vezes esta prtica se mostra mais apropriada. Quando, porm, precisamos apenas de um total perfeitamente alinhado com a coluna que est totalizando, o uso das prprias colunas da tabela pode ser mais prtico. 11. Crie mais quatro colunas no Grid original. Precisaremos para os rtulos e totalizadores que constam na especificao. Para tanto, clique direito na coluna e selecione "Insert -> Column to the Right".

Figura A19.29. Incluindo colunas em um Grid.

Introduo ao Eclipse BIRT

12. Crie os rtulos de totais para includos, alterados e excludos, deixando colunas vazias para os valores de totalizao que faremos mais adiante. Para tanto, copie o rtulo existente e cole nas novas colunas, em seguida editando o texto dos rtulos em si. 13. Exclua, tambm, a primeira coluna da tabela principal, antes de cdigo (se no lembrou de fazer juntamente com "Data de Nascimento"). Confira o resultado com a Figura A19.30.

Figura A19.30. Espao para totais criado.

#1. Rtulos para totais, com espaos para as agregaes em si. #2. Primeira coluna removida para finalizao da estrutura do relatrio, de acordo com a especificao.

- Alterando a Master Page (Pgina Mestre)A viso de Master Page, acionvel pela aba "Master Page", alm de permitir as definies de contedo para "Topo" e "Rodap" que j apresentamos, tambm permite diversas opes de formatao globais para o relatrio ou para um conjunto de pginas. Note que um mesmo relatrio pode ter mais de uma Master Page e, deste modo, ser formado por diversas "sees" com margens, topos e rodaps distintos - bem no estilo de editores de texto como o MS Word. Veja, na Figura A19.31, uma breve explanao para esta viso.

Figura A19.31. Viso Master Page.

#1. A aba "Master Page" permite edio WYSIWYG mas tambm de propriedades na viso "Property Editor - Master Page -> Properties". #2. Os contedos do cabealho e do rodap podem ser modificados.

Captulo F19

#3. Vrias opes de configurao esto disponveis, que dizem respeito ao relatrio como um todo ou ao conjunto de pginas que usam uma Master Page especfica. #4. Diversas propriedades permitem a formatao das pginas do relatrio como um todo, incluindo margens, bordas, leiaute (carta, legal, A4 etc.), orientao, etc. #5. Vamos agora alterar o cabealho, para conter o logotipo de nossa empresa e o ttulo apropriado. Clique no texto do ttulo principal e digite "Relatrio de Auditoria" e no subttulo "Relatrio de Auditoria de Manuteno de Funcionrios"*. 2. Agora clique no logotipo e com clique direito acione "Edit". Siga as instrues da Figura A19.32.

Figura A19.32. Insero de imagem em relatrios.

#1. Clique direito na imagem e acione "Edit" para modific-la. #2. Existem vrias opes no Eclipse BIRT para se referenciar imagens: - URI: Aceita endereo de imagens relativo (imagens existentes no arquivo da aplicao) ou absoluto (existentes fora da aplicao). o prefervel, porm a imagem no ser visualizada no caso de endereos relativos em modo de desenvolvimento (apenas por isso no utilizamos inicialmente). - Image File in shared resources: Aceita endereo de imagens em sistema convencional de arquivos (como um driver padro compartilhado na rede interna). Em geral no recomendvel. - Embedded Image: Embute a imagem (em formato hexadecimal) no XML de design do relatrio. Traz a vantagem de encapsular e tornar a imagem "prpria para o relatrio". Por isso no o ideal para um logotipo (se ele muda, deve-se mudar em todos os relatrios! Vamos melhorar isso no prximo relatrio). - Dynamic Image: Permite acesso a imagens armazenadas dentro de colunas de SGBD-R (Blobs). Pode ser necessria em determinadas situaes.

*

A especificao no pede os dois, mas gostamos de sugerir melhorias.

Introduo ao Eclipse BIRT

#3. Vamos adicionar uma imagem embutida alm da que existe do jCompany *. Ela foi disponibilizada pelo Web-Designer especificamente para fins de impresso contendo o logotipo da empresa ACME. Clique em "Add Image..." e procure pela imagem "acme_logo.gif" na pasta "[jCompany]\jcompany_documentacao\rhtutorial\gui\acme". 3. Execute um novo "Preview" e confira o resultado com a especificao. Estamos quase l - faltam os totais e um embelezamento final!

Figura A19.33. Visualizao do estgio atual do relatrio.

- Utilizando agregaes (Aggregation)Para efetuarmos as totalizaes de includos, alterados e excludos, o Eclipse BIRT oferece poderosos recursos. Usaremos o mais simples deles, que suficiente em nosso caso. Apesar disso, recomendado ao Desenvolvedor que se aprofunde nas possibilidades que o BIRT oferece para programaes em linguagem de script (com sintaxe Javascript) ou mesmo em Java. Antes de fazer o clculo em si, vamos compreender como podemos diferenciar includos, alterados e excludos, no conjunto de dados recuperados em um perodo, fazendo um retrospecto de recursos do jCompany que j vimos em outros tutoriais: o No primeiro tutorial do captulo 6, vimos que o jCompany prope a utilizao do que chama de "Auditoria Pauta Mnima" em todos os objetos, atravs do acrscimo de propriedades para "usurio da ltima alterao" e "data da ltima alterao". Vimos tambm que o prprio JPA/Hibernate prope a utilizao de uma propriedade de verso, anotada com "@Version", com o propsito interno de tratamento de concorrncia otimista (O JPA usa este valor na "where" de todo "update" ou "delete"). Mas esta propriedade termina tambm por dar uma informao de "verso" de cada objeto, pois incrementada a cada atualizao, automaticamente. Um outro recurso discutido mais a frente foi "excluso lgica", que utilizamos para a manuteno de funcionrios. Neste padro, em lugar de remover o objeto da persistncia efetivamente, o jCompany altera sua situao de sitHistoricoPlc='A' para sitHistoricoPlc='I'. Includos no perodo: objetos com verso 0 (zero) e data da ltima alterao dentro do perodo. Alterados no perodo: objetos com verso maior que 0 (zero) e data da ltima alterao dentro do perodo. Excludos no perodo: objetos com situao "Inativo" (sitHistoricoPlc='I') e data da ltima alterao dentro do perodo.

o

o

Assim, aps a retrospectiva acima, podemos definir os conjuntos desejados com os seguintes critrios: o o o

Vamos, agora, implementar estas totalizaes no Eclipse BIRT, segundo os critrios acima. 1. 2. Selecione a viso de "Palette" e arraste o componente "Aggregation" para a linha de cabealho, na coluna a frente do rtulo "Total Includos". Um dilogo ir se abrir chamado "Aggregation Builder". Preencha-o como na Figura A19.34.

Note que esta imagem aparece no projeto, mas no pode ser removida, pois se encontra no framework "jCompanyGeneral.rptlibrary".

*

Captulo F19

Figura A19.34. Criao de um componente "Aggregation", para conter frmulas e totalizaes.

#1. A paleta rica em componentes. Veremos uma boa parte deles em nossos tutoriais. #2. Usaremos o componente "Aggregation" para realizar computaes em nvel do relatrio. Note que seria tambm possvel utilizar SQL e recursos do servidor SGBD-R para tal. #3. D nomes para o componente. #4. Altere o valor de "Function" para "COUNT". Ao faz-lo, percorra todas as funes disponveis para conhecer as demais possibilidades oferecidas por este componente. #5. Em Data Field, selecione o campo "Cdigo" (algum que d unicidade a cada linha, preferencialmente). 3. Deixando desta forma, nosso componente j apresentar o total de linhas recuperadas, pois o componente Aggregation assume suas operaes sobre o continer Table. Mas como queremos contar includos, alterados e excludos em separado, teremos que adicionar um "filtro". Acione o boto "fx" em "Filter Condition". O dilogo genrico "Expression Builder" aparecer, como mostra a Figura A19.35. Este dilogo utilizado em diversos contextos onde uma expresso pode ser inserida e um recurso chave a ser dominado para obteno de fluncia em Eclipse BIRT.

Figura A19.35. Filtro definido no dilogo "Expression Builder".

#1. A expresso que montaremos pode ser informada manualmente neste campo, mas as janelas abaixo auxiliam na sua montagem.

Introduo ao Eclipse BIRT

#2. Em "Category" esto as categorias de recursos que podem ser utilizados em expresses BIRT, desde Data Sets at funes e operadores. Em "Avaliable Column Bindings" so exibidos os objetos gerados para o relatrio quando vinculamos o Data Set ao Table. Estes objetos podem possuir formataes e programaes adicionais s colunas disponveis no Data Set. #3. Em "Avaliable Data Sets" pode utilizar uma coluna do Data Set diretamente, que no seja atravs dos "Column Bindings". importante notar a distino dos dois: O Aggregation que criaremos, por exemplo, passar a existir no "Avaliable Column Bindings", mas no em "Avaliable Data Sets"! Acione duplo clique nesta opo e clique na nica "Sub-Category" para selecionar a coluna "Verso", como na Figura A19.35. #4. Em "Reports Parameters", podemos usar os valores informados pelo usurio (ou parmetros constantes!) definidos para o relatrio, nas frmulas. #5. As trs ltimas opes trazem duas categorias de funes e operadores que podem ser utilizados nas expresses. A quantidade de opes impressionante - somente com o tempo ser possvel compreend-las em toda a sua abrangncia. #6. Em "Sub-Category", um segundo nvel de classificao aparece. #7. Conforme a categoria e subcategoria selecionadas, uma lista diferente ser exibida direita. No caso da figura so exibidas as colunas do Data Set selecionado. Altere para "Operators -> Primeira Sub-Categoria" e acione duplo clique em "==" para incluir uma igualdade na expresso. 4. Faa um novo "Preview". Talvez voc precise incluir novos registros para ter uma boa amostragem para teste.

Figura A19.36. Contador com expresso condicional funcionando.

5.

Faa agora o contador para "alterados", conforme a Figura A19.37.

Figura A19.37. Aggregation para "Total de Alterados".

6.

E tambm o contador para "excludos", conforme a Figura A19.38.

Captulo F19

Figura A19.38. Aggregation para "Total de Excludos".

7.

Arraste os Aggregations para suas posies definitivas e confira o resultado final com mais um clique em Preview.

- Aplicando estilos aos componentes de relatriosNo ponto em que estamos j temos um relatrio que atende a nossa especificao do ponto de vista estrutural e da informao exibida, mas que ainda no segue as diretrizes de estilo (aparncia) estabelecidas pela arquitetura! Em nossa hiptese, mesmo que nossa especificao no traga detalhes (o que timo, pois fica sucinta), o Desenvolvedor deve estar a par dos estilos padronizados pela empresa para relatrios. Na prtica, estes estilos existiro customizados com base nos existentes no jCompany, atravs da camada Bridge. Em nosso caso, assumiremos os estilos default do jCompany FS Framework que vm no "jCompanyGeneral.rptlibrary". Vamos ento aplicar os estilos para melhorar a fonte, tamanho e alinhamentos das diversas sees do relatrio. 1. V para a rea de "Layout" do relatrio e selecione os trs Aggregations. Acione clique direito e "Style -> Apply Style". Note que uma lista de estilos prefixados com "jCompanyDefaultTheme" aparecem. So estes os estilos padres que temos que utilizar, preferencialmente. Selecione o estilo "rodape1TotalPlc" (este era o estilo originalmente utilizado no Total que veio como referncia, no relatrio Modelo).

2.

Figura A19.39. Aplicando estilos padres do framework aos campos de formulrios.

#1. Aggregations selecionados, para aplicar estilo em todos simultaneamente. #2. Dilogo que permite a aplicao de estilos, exibindo estilo homologados do "jCompanyGeneral.rptlibrary".

Introduo ao Eclipse BIRT

#3. Estilo para totais "rodape1TotalPlc"*. 3. 4. 5. 6. Utilizando a mesma tcnica, faa a aplicao do estilo "tabela1ValorNumeroPlc" aos objetos "Cdigo" e "Verso" (valores, no os rtulos!). Faa a aplicao do estilo "tabela1ValorTextoPlc" aos objetos "Nome do Funcionrio", "CPF" e "Usurio da ltima Alterao". Faa a aplicao do estilo "tabela1DataHoraPlc" ao objeto "Data da ltima Alterao". Agora realize um novo "Preview" e confira a melhoria. Repare que a fonte utilizada para caracteres agora "Arial" e o tamanho "Medium" (assumido como um tamanho mediano pelo BIRT).

Figura A19.40. Viso do relatrios com estilos nos campos.

#1. Os cdigos (nmeros) ficam agora alinhados direita. #2. Os campos textuais ficam alinhados esquerda #3. O campo data fica centralizado.

- Modificando formataes para ajustes finosMas e se desejarmos realizar refinamentos nos estilos? Ser que somente estes estilos cobrem todas as possibilidades de formatao possveis? Os estilos no iro cobrir todos os casos - so apenas referncias iniciais para as situaes mais comuns, mas que ainda preservam um grau de flexibilidade para criatividades finais (na mesma filosofia do jCompany como um todo). Portanto, teremos que realizar ajustes de refinamentos, bem possivelmente. importante, no entanto, faz-lo somente aps a explorao de tudo o que os estilos podem oferecer. As possibilidades aqui so muito grandes. Vamos apenas realizar uma pequena variao de alinhamento do CPF, por exemplo. Iremos alterar o alinhamento de CPF para que fique centralizado porque, apesar de termos utilizado este valor como "texto", ele representa um cdigo de tamanho fixo que ficar mais bem disposto desta forma. 1. Selecione o objeto "CPF do Funcionrio" e consulte a aba "Properties -> General", em "Property Editor - Data". Note que no h opes de alinhamento horizontal...

*

O uso de numeraes utilizado para manter espao para outras variaes padres (2, 3, 4 etc.), previstas para verses futuras do jCompany.

Captulo F19

Figura A19.41. Opes de propriedades para o objeto "CPF do Funcionrio".

Esta uma confuso comum: o alinhamento uma propriedade da clula que contm o objeto e no do objeto em si. Voc pode selecionar a clula que contm o "CPF do Funcionrio" com o mouse (e um cuidado cirrgico) ou, o que mais prtico, via o Outline. 2. Localize a viso de Outline e clique na aba "Cell" acima de "Data (CPF do Funcionrio)". o mesmo efeito do mouse. Note que agora novas opes para a "clula" aparecem. Selecione "Center".

Figura A19.42. Alinhamento de clula para "centralizado".

Introduo ao Eclipse BIRT

SumrioNeste captulo, fizemos um primeiro relatrio com base na tecnologia Eclipse BIRT, utilizando recursos dos plugins disponibilizados de forma integrada na IDE Eclipse. Conhecemos seus recursos para reso de bibliotecas (via arquivos do tipo ".rptlibrary") e tambm para uso de modelos (via arquivos do tipo ".rpttemplate"). Utilizamos um primeiro modelo "Tabular" do jCompany para criar nosso relatrio, definindo um Data Source e um Data Set para confeco WYSIWYG do relatrio, utilizando dado reais do Banco de Dados de teste. Vinculamos estes dados com componentes visuais de apresentao para o corpo do relatrio, incluindo totalizadores com expresses e personalizamos uma pgina mestre, contendo topo e rodap, para finalizar a estrutura geral do relatrio. Aprendemos, por fim, como aplicar estilos do framework para obteno de aparncia padronizada entre relatrios, e tambm como refinar estes estilos de forma especfica. No prximo captulo, veremos as opes de tempo de execuo que o BIRT e o jCompany oferecem para execuo deste relatrio, com flexibilidade e segurana.