Você está na página 1de 34

Construindo um aplicativo de relatório Visão geral do aplicativo de

relatório Um aplicativo de relatório usa a API BIRT Report Engine


para gerar relatórios de arquivos de design de relatório (.rptdesign), ou
seja os relatórios nascem do design. Normalmente, o aplicativo produz o
relatório como um arquivo formatado ou fluxo, em formato HTML ou
PDF. Alternativamente, o aplicativo cria um arquivo de documento de
relatório (.rptdocument) que contém o conteúdo do relatório na forma
binária e renderiza o relatório para um dos formatos de saída
suportados mais tarde, ou seja a prtir deste documento se gera um pdf
um excel. Este capítulo descreve os requisitos fundamentais de um
aplicativo de relatório e descreve as classes e interfaces da API BIRT que
você usa no aplicativo. Este capítulo também fornece informações
detalhadas sobre as tarefas que um relatório aplicativo executa.
Existem dois ambientes de tempo de execução do Report Engine. O
mais novo é um configuração simplificada do Plain Old Java Object
(POJO) e a outra é um OSGi tempo de execução. Escolha de
implantação de tempo de execução POJO ou OSGi O tempo de execução
padrão do BIRT Report Engine é um tempo de execução POJO. É
recomendado para a maioria dos propósitos de desenvolvimento de
aplicativos, incluindo instalação em um Java Servidor de aplicativos
Enterprise Edition (EE) para executar relatórios na web. O tempo de
execução do POJO está incluído na Instalação Completa do Eclipse do
Report Designer (All-in-One) download, que fornece um ambiente
Eclipse completo para BIRT. Um aplicativo que gera um relatório deve
completar as tarefas necessárias descrito nas seções a seguir. Tarefas
adicionais, como fornecer os valores inseridos pelo usuário para os
parâmetros são opcionais. Criação e configuração de um mecanismo
de relatório. Um único objeto de mecanismo de relatório pode gerar
vários relatórios de vários relatórios designs. Use o método
Platform.createFactoryObject () para criar um ReportEngine objeto. Para
OSGi, defina o diretório inicial BIRT no ambiente BIRT_HOME variável,
que define a localização dos plug-ins e bibliotecas necessários. Abrindo
um design de relatório ou documento de relatório. Use um dos
métodos openReportDesign () da classe ReportEngine para abrir um
design de relatório de um nome de arquivo String ou um fluxo de
entrada. Esses métodos retornam um Objeto IReportRunnable. Use o
método openReportDocument () da classe ReportEngine para abrir um
arquivo de documento de relatório (.rptdocument) de um nome de
arquivo String. Este método retorna um objeto IReportDocument.
Garantir o acesso à fonte de dados Certifique-se de que o mecanismo
de relatório pode localizar as classes que se conectam à fonte de dados e
fornecer dados ao conjunto de dados. O mecanismo de relatório pode
criar uma conexão com o fonte de dados ou use um objeto Connection
que o aplicativo fornece. Preparação para criar um relatório nos
formatos de saída suportados Use um objeto IRenderOption para
definir o formato de saída, o nome do arquivo de saída ou stream, a
localidade e configurações específicas de formato. A classe
HTMLRenderOption suporta o formato de saída HTML. Para saída em
PDF, use PDFRenderOption. Gerar um relatório em um dos
formatos de saída suportados Use um objeto IRunAndRenderTask
para criar o relatório do IReportRunnable objeto. Use um objeto
IRenderTask para criar o relatório de um IReportDocument objeto.
Como alternativa, use uma URL para acessar o servlet do visualizador
de relatório, como quando implantar um relatório BIRT em um servidor
de aplicativos, conforme descrito anteriormente neste livro. O
visualizador de relatórios pode gerar um relatório a partir de um projeto
ou arquivo de documento. Destrua o mecanismo de relatório após o
aplicativo gerar todos os relatórios necessários. Tarefas opcionais As
tarefas na lista a seguir são opcionais para um aplicativo de relatório.
Tipicamente, o aplicativo executa uma ou mais dessas tarefas. ■ Reúna
valores para parâmetros. Se o aplicativo usa um design de relatório
com parâmetros, use o padrão valores para os parâmetros ou definir
valores diferentes Crie um arquivo de documento de relatório. Um
arquivo de documento de relatório contém o relatório em um formato de
armazenamento binário. Se o aplicativo usa um design de relatório, use
um objeto IRunTask para criar o relatório document como um objeto
IReportDocument. ■ Exportar dados de um documento de relatório.
Use um objeto IDataExtractionTask para extrair valores de dados de
qualquer item ou conjunto de itens no documento de relatório. Exporte
os valores dos dados para um arquivo ou outro aplicativo ou realizar
processamento adicional nos dados. Sobre o ambiente de
desenvolvimento O ambiente de desenvolvimento para um aplicativo de
relatório deve fornecer acesso a todas as bibliotecas de API necessárias.
Para OSGi, que inclui plug-ins além de jars da biblioteca, o principal
requisito para o aplicativo é o caminho para a página inicial do BIRT
diretório. Sobre plug-ins na página inicial do BIRT (somente OSGi)
O subdiretório de plug-ins do diretório inicial BIRT contém o
org.eclipse.birt e outros plug-ins que fornecem a funcionalidade de um
aplicativo de relatório. Dependendo dos requisitos de seu aplicativo de
relatório e os itens em seus designs de relatório, você pode omitir plug-
ins que fornecem funcionalidade que o aplicativo e projetos não usam.
Sobre as bibliotecas BIRT O subdiretório lib contém arquivos JAR que
fornecem classes e classes BIRT API que suportam as APIs. Escolha de
implantação de tempo de execução POJO ou OSGi O tempo de
execução padrão do BIRT Report Engine é um tempo de execução
POJO. É recomendado para a maioria dos propósitos de
desenvolvimento de aplicativos, incluindo instalação em um Java
Servidor de aplicativos Enterprise Edition (EE) para executar relatórios
na web. O tempo de execução do POJO está incluído na Instalação
Completa do Eclipse do Report Designer (All-in-One) download, que
fornece um ambiente Eclipse completo para BIRT. As APIs BIRT no
pacote org.eclipse.birt.report.engine.api suportam o processo de
geração de um relatório a partir de um design de relatório. Este pacote
fornece a Classe ReportEngine e interfaces e classes de suporte.
Opcionalmente, o aplicativo de relatório pode usar a API BIRT
Design Engine para acessar a estrutura de designs de relatório,
modelos e bibliotecas. Usando esta API, o aplicativo pode criar e
modificar designs de relatório antes de gerar um relatório. Esta API
suporta a criação e modificação de itens de relatório e outros elementos
dentro designs. O pacote org.eclipse.birt.report.model.api e seus
subpacotes fornecem acesso a todos os itens que compõem um design
de relatório. Para obter informações completas sobre todos os métodos e
campos das classes e interfaces nesses pacotes, consulte o Javadoc
online. Você deve ter o BIRT SDK pacote instalado para acessar o
Javadoc. Instruções para instalar o SDK são fornecidos em Instalando
e implementando o BIRT. Para visualizar o Javadoc, abra o ajuda online
e navegue para BIRT Programmer Reference➛Reference➛API Referência.
Escolha Referência da API Report Engine para a API Report Engine e
Report Object Model API Reference para a Design Engine API. O
Javadoc também mostra pacotes de suporte na API pública.
CONSTRUINDO UM APLICATIVO DE RELATÓRIO Um aplicativo que
gera um relatório deve completar as tarefas necessárias descrito nas
seções a seguir. Tarefas adicionais, como fornecer valores inseridos pelo
usuário para parâmetros, são opcionais. Criação e configuração de
um mecanismo de relatório Um único objeto de mecanismo de
relatório pode gerar vários relatórios de vários relatórios designs. Use o
método Platform.createFactoryObject () para criar um ReportEngine
objeto. Para OSGi, defina o diretório inicial BIRT no ambiente
BIRT_HOME variável, que define a localização dos plug-ins e bibliotecas
necessários. Abrindo um design de relatório ou documento de relatório
Use um dos métodos openReportDesign () da classe ReportEngine para
abrir um design de relatório de um nome de arquivo String ou um fluxo
de entrada. Esses métodos retornam um Objeto IReportRunnable. Use o
método openReportDocument () da classe ReportEngine para abrir um
arquivo de documento de relatório (.rptdocument) de um nome de
arquivo String. Este método retorna um objeto IReportDocument.
Garantir o acesso à fonte de dados Certifique-se de que o mecanismo de
relatório pode localizar as classes que se conectam à fonte de dados e
fornecer dados ao conjunto de dados. O mecanismo de relatório pode
criar uma conexão com o fonte de dados ou use um objeto Connection
que o aplicativo fornece. Preparação para criar um relatório nos
formatos de saída suportados Use um objeto IRenderOption para definir
o formato de saída, o nome do arquivo de saída ou stream, a localidade
e configurações específicas de formato. A classe HTMLRenderOption
suporta o formato de saída HTML. Para saída em PDF, use
PDFRenderOption. Gerar um relatório em um dos formatos de saída
suportados Use um objeto(Task) IRunAndRenderTask para criar o
relatório do IReportRunnable Objeto(Task). Use um objeto IRenderTask
para criar o relatório de um IReportDocument objeto. Como alternativa,
use uma URL para acessar o servlet do visualizador de relatório, como
quando implantar um relatório BIRT em um servidor de aplicativos,
conforme descrito anteriormente neste livro. O visualizador de relatórios
pode gerar um relatório a partir de um projeto ou arquivo de
documento. Destruindo o motor Destrua o mecanismo de relatório após
o aplicativo gerar todos os relatórios necessários. Tarefas opcionais As
tarefas na lista a seguir são opcionais para um aplicativo de relatório.
Tipicamente, o aplicativo executa uma ou mais dessas tarefas. ■ Reúna
valores para parâmetros. Se o aplicativo usa um design de relatório com
parâmetros, use o padrão valores para os parâmetros ou definir valores
diferentes. Crie um arquivo de documento de relatório. Um arquivo de
documento de relatório contém o relatório em um formato de
armazenamento binário. Se o aplicativo usa um design de relatório, use
um objeto IRunTask para criar o relatório document como um objeto
IReportDocument. ■ Exportar dados de um documento de relatório. Use
um objeto IDataExtractionTask para extrair valores de dados de
qualquer item ou conjunto de itens no documento de relatório. Exporte
os valores dos dados para um arquivo ou outro aplicativo ou realizar
processamento adicional nos dados.
Sobre o ambiente de desenvolvimento O ambiente de
desenvolvimento para um aplicativo de relatório deve fornecer acesso a
todas as bibliotecas de API necessárias. Para OSGi, que inclui plug-ins
além de jars da biblioteca, o principal requisito para o aplicativo é o
caminho para a página inicial do BIRT diretório.
Sobre plug-ins na página inicial do BIRT (somente OSGi) O
subdiretório de plug-ins do diretório inicial BIRT contém o
org.eclipse.birt e outros plug-ins que fornecem a funcionalidade de um
aplicativo de relatório. Dependendo dos requisitos de seu aplicativo de
relatório e os itens em seus designs de relatório, você pode omitir plug-
ins que fornecem funcionalidade que o aplicativo e projetos não usam.
Sobre as bibliotecas BIRT O subdiretório lib contém arquivos JAR que
fornecem classes e classes BIRT API que suportam as APIs.
Para o tempo de execução POJO, JARs aplicáveis de sua biblioteca
subdiretório precisa estar no caminho de construção de seu aplicativo
ou, no caso de um aplicativo, no diretório WEB-INF / lib.
Para OSGi, o diretório inicial BIRT garante que o carregador de classes
do servidor de aplicativos ou JVM no qual você implementa o
mecanismo de relatório pode localizar as bibliotecas. Dependendo dos
requisitos do seu aplicativo de relatório e os itens em seus designs de
relatório, você pode omitir bibliotecas que fornecem funcionalidade que
o aplicativo e os designs não usam. A Tabela 5-1 lista e descreve todos
os arquivos JAR no diretório POJO lib. Tabela 5-2 lista e descreve todos
os arquivos JAR no diretório lib OSGi.
Sobre os drivers JDBC necessários Os aplicativos BIRT carregam os
drivers JDBC do diretório plugins /
org.eclipse.birt.report.data.oda.jdbc_ <versão> / drivers.

Coloque o driver classes ou arquivos Java (.jar) que você precisa para
acessar fontes de dados JDBC neste local.

Configurando o caminho de construção e acessando Javadoc


Para acessar as APIs BIRT durante o desenvolvimento de aplicativos
usando o Java perspectiva no Eclipse Workbench, inclua arquivos JAR
de API no caminho de construção. Para visualizar o Javadoc, abra a
ajuda online e navegue até Programador BIRT
Referência➛Referência➛Referência de API. Escolha Referência da API do
Report Engine para Referência da API Report Engine e API do modelo de
objeto de relatório para o design API do motor.
Como adicionar bibliotecas BIRT e API Javadoc ao caminho de
construção de um aplicativo Java Use a perspectiva Java no Eclipse
Workbench para executar essas etapas em um projeto Java existente. 1
Se você não começou com o download do BIRT All-in-One, descompacte
a execução do BIRT tempo para um diretório. Para OSGi, esse diretório
é o diretório inicial do BIRT. 2 No Package Explorer, clique com o botão
direito do mouse no projeto Java. Escolha o caminho de construção
➛Configure o caminho de construção. 3 Em Propriedades para <nome
do projeto> - Caminho de construção Java, selecione Bibliotecas. Para
adicionar um Arquivo JAR para o caminho de construção, escolha
Adicionar JARs externos. 4 Na Seleção JAR, você tem duas opções: ■
Para BIRT All-in-One, navegue até o diretório eclipse \ plugins onde
todos os BIRT JARs estão localizados. ■ Navegue até o diretório no qual
você descompactou o tempo de execução do BIRT passo 1. 5 Selecione
um arquivo JAR necessário. Escolha Abrir. O arquivo JAR aparece em
JARs e pastas de classe no caminho de construção. 6 Para associar o
Javadoc aos arquivos de classe em uma biblioteca BIRT API, execute o
seguintes passos: 1 Expanda o arquivo JAR da API em JARs e pastas de
classe no caminho de construção. Selecione Localização Javadoc:
(Nenhum). Escolha Editar. 2 Em Javadoc para <nome do arquivo JAR>,
selecione URL Javadoc. Em localização Javadoc caminho, digite ou
navegue até o diretório que contém o Javadoc. 3 Escolha Validar.
Validar o local Javadoc exibe uma mensagem sobre se o diretório
especificado contém Javadoc. Escolha OK.
4 Se necessário, corrija o caminho para o Javadoc. Em Javadoc para
<Nome do arquivo JAR>, escolha OK. 7 Repita as etapas 3 a 6 para
cada arquivo BIRT JAR necessário.
Modificando um design de relatório usando a API
Um aplicativo de relatório pode modificar o design de um relatório antes
de gerá-lo. Por exemplo, o aplicativo pode adicionar ou remover itens do
design do relatório com base no usuário que gera o relatório. Para
fornecer mais personalização de um relatório, durante a geração da
saída, um design de relatório pode usar JavaScript classes ou código
JavaScript incorporado para manipular eventos. As aulas do Design
Suporte à API do mecanismo fazendo alterações em um design de
relatório e incluindo ou alterando scripts. As principais classes do
Design Engine estão no pacote org.eclipse.birt.model.api. Sobre o
ambiente de implantação Um aplicativo implantado deve ser capaz de
acessar todas as classes necessárias para BIRT, as fontes de dados
externas e quaisquer outras classes necessárias. Verifique sua web
documentação do servidor de aplicativos para garantir as bibliotecas e
fontes de dados necessárias estão acessíveis para cada aplicativo. Em
outros ambientes, lembre-se de definir o CLASSPATH para seu
aplicativo e, para OSGi, configure o diretório inicial do BIRT na variável
de ambiente BIRT_HOME.
Gerando relatórios de um aplicativo
As principais tarefas que um aplicativo de relatório deve executar são
configurar o relatório mecanismo, quaisquer valores de parâmetro
necessários e os objetos de tarefa para gerar o relatório documento e,
finalmente, para apresentar o relatório. O aplicativo de relatório não
requer a interface de usuário do BIRT Report Designer para gerar um
relatório. O pacote org.eclipse.birt.report.engine.api contém as classes e
interfaces que um aplicativo usa para gerar relatórios. As principais
classes e interfaces são ReportEngine, EngineConfig,
IReportRunnable, IRenderOption e seus descendentes e
IEngineTask e seus descendentes.
Configurando o mecanismo de relatório
Um mecanismo de relatório é uma instanciação da classe
ReportEngine. Este objeto é a chave componente em qualquer
aplicativo de relatório. Ele fornece acesso a relatório executável designs,
parâmetros, a estrutura de um design de relatório e a tarefa para gerar
um relatório de um design de relatório. Prepare as propriedades do
mecanismo de relatório com um Objeto EngineConfig. Depois de definir
todas as propriedades necessárias, use o mecanismo BIRT fábrica para
criar o mecanismo de relatório. As seções a seguir descrevem os vários
opções de configuração e criação do motor.

A Tabela 5-3 descreve essas propriedades e como defini-las usando


EngineConfig métodos. A classe EngineConfig também fornece métodos
getter para acessar esses propriedades.
Configurando um ambiente de arquivo WAR independente ou
independente Duas propriedades de configuração do mecanismo
dependem se o ambiente em que o aplicativo executa é autônomo ou em
um arquivo web (.war) em um servidor de aplicação. Essas propriedades
são o contexto da plataforma e o HTML configuração do emissor. O
contexto da plataforma fornece ao mecanismo de relatório o mecanismo
para acessar plug-ins. O contexto de plataforma padrão fornece arquivo
direto acesso do sistema a esses plug-ins, conforme usado por um
aplicativo independente. O HTML a configuração do emissor fornece a
funcionalidade de processar imagens e lidar com ações de hiperlinks e
marcadores.
Configurando o contexto da plataforma Como o BIRT é um aplicativo
baseado em Eclipse, ele usa a plataforma OSGi para iniciar os plug-ins
que compõem os mecanismos de relatório e design. O aplicativo BIRT
localiza os plug-ins no caminho de construção Java ou na página inicial
do BIRT usando o contexto da plataforma, que é uma implementação do
org.eclipse.birt.core Interface .framework.IPlatformContext. Esta
interface define o método, getPlatform () que retorna a localização do
diretório de plug-ins. Use o Objeto IPlatformContext como o argumento
para o objeto EngineConfig método setPlatformContext (). A estrutura
BIRT fornece duas implementações do IPlatformContext interface. Essas
implementações fornecem todas as funcionalidades necessárias para o
contexto da plataforma. A implementação padrão, PlatformFileContext,
acessa os plug-ins no Pasta inicial do BIRT no sistema de arquivos.
Para OSGi, o aplicativo define o Local inicial do BIRT no objeto
EngineConfig ou no ambiente do aplicativo contém BIRT_HOME e não é
necessário criar um objeto PlatformFileContext.
Para uma implementação da web, como um aplicativo em execução a
partir de um arquivo WAR em um servidor de aplicativos, use a
implementação PlatformServletContext. Esta aula usa o acesso
baseado em recursos fornecido pela classe J2EE ServletContext para
localizar os plug-ins necessários. O construtor desta classe leva um
argumento, um Objeto ServletContext. Por padrão,
PlatformServletContext encontra plug-ins no / WEB-INF / platform /
diretório usando o ServletContext.getRealPath () método. Alguns
servidores de aplicativos retornam nulo deste método. Nesse caso, o
objeto PlatformServletContext cria um diretório de plataforma no local
definido pela propriedade do sistema, javax.servlet.context.tempdir. o O
objeto PlatformServletContext copia os plug-ins e as pastas de
configuração para este local. A Listagem 5-1 configura um contexto de
plataforma para um aplicativo de relatório que é executado a partir de
um arquivo WAR. Você também pode implementar sua própria versão
de IPlatformContext. Do mesmo jeito quanto aos contextos de
plataforma integrados, chame EngineConfig.setPlatformContext () para
configurar o mecanismo para usar a nova implementação. Como
configurar um mecanismo de relatório como um aplicativo da web 1
Configure o contexto da plataforma, conforme mostrado na Listagem 5-
1
Como configurar um mecanismo de relatório como um aplicativo
autônomo
A Listagem 5-3 mostra um exemplo de configuração de um mecanismo
de relatório como um autônomo aplicativo em um sistema Windows. O
aplicativo usa a casa BIRT localizada em o diretório de tempo de
execução do BIRT. O formato de saída do relatório é HTML.

Abrindo uma fonte para geração de relatório As classes BIRT Report


Engine geram um relatório formatado a partir de um relatório design ou
um documento de relatório binário. Normalmente, esses arquivos têm
as extensões RPTDESIGN e RPTDOCUMENT respectivamente. O motor
também pode gerar um documento de relatório binário de um design de
relatório. Para abrir um design de relatório, chame um dos métodos
openReportDesign () em ReportEngine. Esses métodos instanciam um
objeto IReportRunnable, usando um Sequência que especifica o
caminho para um design de relatório ou fluxo de entrada. Para abrir um
documento de relatório, chame ReportEngine.openReportDocument ().
Este método instancia um objeto IReportDocument, usando um String
que especifica o caminho para um documento de relatório. Manipule a
EngineException que esses métodos lançam. Compreendendo um objeto
IReportRunnable O objeto IReportRunnable fornece acesso direto às
propriedades básicas do design de relatório. Os nomes das propriedades
de design de relatório são campos String estáticos, como como
IReportRunnable.AUTHOR. Para acessar uma propriedade de design de
relatório, use getProperty () com um argumento String que contém um
desses campos. Para gerar um relatório a partir de um design, abra o
design do relatório como mostrado em Listagem 5-4. Em seguida,
execute as tarefas mostradas posteriormente neste capítulo. Como
acessar um design de relatório A Listagem 5-4 mostra como abrir um
design de relatório e encontrar um valor de propriedade. Se o
mecanismo não pode abrir o design de relatório especificado, o código
destrói o mecanismo. o variável, motor, é um objeto ReportEngine.
Listagem 5-4 Acessando um design de relatório

Compreendendo um objeto IReportDocument


O objeto IReportDocument fornece acesso à estrutura e ao conteúdo de
um documento de relatório binário. IReportDocument fornece métodos
para recuperar informações de design de marcador, página e relatório.
Um marcador é um objeto String que localiza uma instância de um
elemento de relatório no documento e a página em em que o elemento
existe. Use as informações da página para processar páginas
individuais no documento para um formato de saída. Os favoritos
também fornecem acesso ao design elementos que geraram a instância
do elemento. Use o método getBookmarks () para obter um objeto List
contendo todos os favoritos no documento. Chame o método
getBookmarkInstance () com um argumento String contendo um
marcador para acessar o elemento de relatório instanciado. Chamando
o método getReportRunnable () retorna um objeto IReportRunnable, que
um aplicativo pode usar para acessar informações de design de relatório
ou gerar outro relatório documento. Feche o documento após o uso,
chamando IReportDocument.close ().

Como acessar um documento de relatório A Listagem 5-5 mostra


como abrir um documento de relatório e localizar uma página. Se o
motor não pode abrir o design de relatório especificado, o código
registra o erro. A variável, engine, é um objeto ReportEngine. Listagem
5-5 Acessando um documento de relatório .
Acessando um parâmetro de relatório Um parâmetro de relatório é
um elemento de relatório que fornece entrada para um design de
relatório antes que um aplicativo gere o relatório. Um documento de
relatório não usa relatório parâmetros para criar um relatório
formatado. Se um aplicativo já tiver o nomes de parâmetros e os valores
a serem definidos ou os valores padrão para todos os relatórios
parâmetros para um design de relatório são sempre válidos ou a fonte
do relatório é um relatório documento, você não precisa executar as
tarefas nesta seção. Os parâmetros de relatório têm atributos que um
aplicativo de relatório pode acessar. o os atributos mais comumente
usados são nome e valor. O mecanismo de relatório usa o a lógica de
design do relatório e os valores dos parâmetros do relatório para realizar
tarefas como filtrar um conjunto de dados ou exibir um valor externo no
relatório. Depois que o aplicativo de relatório define valores para os
parâmetros do relatório, ele deve passar esses valores para a tarefa que
gera o relatório, conforme mostrado mais adiante neste capítulo. Para
acessar os parâmetros do relatório e seus valores padrão e definir os
valores fornecidos pelo usuário a um parâmetro, o aplicativo usa as
classes BIRT Report Engine API e interfaces mostradas na Tabela 5-4.

Um aplicativo pode acessar parâmetros de relatório por nome ou


usando código genérico. Usar código genérico se o aplicativo deve ser
capaz de executar qualquer design de relatório, por exemplo, para
acessar designs de relatório de uma lista que depende da entrada do
usuário. Uma aplicação que executa apenas um conjunto fixo de
designs de relatório conhecidos pode acessar o relatório parâmetros por
nome.
Tabela 5-4 Classes e interfaces que suportam parâmetros de relatório

Criação de um objeto de tarefa de definição de parâmetro para o


design de relatório Um único objeto IGetParameterDefinitionTask
fornece acesso a todos os parâmetros em um design de relatório. Crie
apenas um desses objetos para cada design de relatório, chamando
ReportEngine.createGetParameterDefinitionTask (). Feche o parâmetro
objeto de tarefa de definição após o uso, chamando seu método close ().
Testando se um design de relatório tem parâmetros de relatório Para
testar se um design de relatório tem parâmetros de relatório, chame
getParameterDefns () método em IGetParameterDefinitionTask. Este
método retorna uma coleção. Para teste se a coleção possui elementos,
chame o método Collection.isEmpty (). Um aplicativo que executa
apenas designs de relatório conhecidos não precisa executar esta tarefa.
Obtendo os parâmetros de relatório em um design de relatório Para
acessar um único parâmetro de relatório de um nome conhecido, use o
Método IGetParameterDefinitionTask.getParameterDefn (). Este método
retorna um objeto do tipo IParameterDefnBase. Use o método
IGetParameterDefinitionTask.getParameterDefns () para retornar um
Coleção de objetos IParameterDefnBase. O aplicativo pode então usar
um Iterador para acessar cada parâmetro de relatório desta coleção, por
sua vez. o O método getParameterDefns () recebe um argumento
booleano. Para um valor de argumento de false, o método retorna um
conjunto desagrupado de parâmetros de relatório. Por um valor de
verdadeiro, o método retorna grupos de parâmetros, conforme definido
no design do relatório. Para crie uma interface de usuário que replique
a estrutura do grupo de parâmetros, use um valor de verdade. Para
verificar se um parâmetro de relatório é um grupo, o aplicativo deve
chame IParameterDefnBase.getParameterType (). Este método retorna
IParameterDefnBase.PARAMETER_GROUP se o parâmetro for um grupo
ou IParameterDefnBase.CASCADING_PARAMETER_GROUP se o
parâmetro for um grupo de parâmetros em cascata. Para acessar os
parâmetros de relatório do grupo, use o Método
IParameterGroupDefn.getContents (). Este método retorna um ArrayList
objeto de objetos do tipo IScalarParameterDefn Obtendo o valor padrão
de cada parâmetro do relatório Esta tarefa é opcional. Para obter o valor
padrão de um único parâmetro de relatório conhecido, use
IGetParameterDefinitionTask.getDefaultValue (). Este método retorna
um Objeto. Para determinar a classe efetiva do objeto, use
IScalarParameterDefn .getDataType (). Este método retorna um valor
int, que é um dos campos estáticos em IScalarParameterDefn. Chame
IGetParameterDefinitionTask.getDefaultValues () para obter o valor
padrão de todos os parâmetros no design do relatório. Este método
retorna um objeto HashMap, que mapeia os nomes dos parâmetros do
relatório e seus valores padrão. Obter valores válidos para parâmetros
usando um conjunto restrito de valores Alguns parâmetros de relatório
aceitam apenas valores de uma lista restrita. Em alguns casos, esta
lista é uma lista estática de valores, como RED, BLUE ou GREEN. Em
outros casos, a lista é dinâmica e uma consulta a um banco de dados
fornece os valores válidos. Para Por exemplo, uma consulta pode
retornar o conjunto de regiões de vendas em um banco de dados de
rastreamento de vendas. Para determinar a lista de valores válidos,
chame o método, IGetParameterDefinitionTask.getSelectionList (). Este
método retorna um Coleção de objetos IParameterSelectionChoice.
IParameterSelectionChoice tem dois métodos. getLabel () retorna o texto
de exibição e getValue () retorna o valor. Se a coleção for nula, o
parâmetro do relatório pode assumir qualquer valor. Obtendo os
atributos de cada parâmetro do relatório Esta tarefa é opcional. Para
obter os atributos de um parâmetro de relatório, use o Métodos
IScalarParameterDefn. O aplicativo pode usar os atributos para gerar
uma interface de usuário personalizada. Por exemplo, para obter o tipo
de dados de um relatório parâmetro, use o método getDataType ().
Coletando um valor atualizado para cada parâmetro do relatório Para
fornecer novos valores para os parâmetros do relatório, forneça a lógica
do aplicativo como como uma interface de usuário ou código para
recuperar valores de um banco de dados. Chame
IGetParameterDefinitionTask.setParameterValue () para definir o valor
de parâmetro. Se uma interface de usuário retornar valores de String
para seu aplicativo para data e parâmetros numéricos, converta a
String em um formato independente da localidade antes de definir o
valor. Para realizar esta tarefa, chame o método,
ReportParameterConverter.parse (), antes de chamar setParameterValue
().
Depois de definir os valores dos parâmetros do relatório, chame o
método, IGetParameterDefinitionTask.getParameterValues(). Este
método retorna um Objeto HashMap contendo os valores de parâmetro
atuais, conforme definido por chamadas para
IGetParameterDefinitionTask.setParameterValue (). Use este objeto
HashMap para defina valores de parâmetro para geração de relatório,
conforme descrito posteriormente neste capítulo. Como definir o valor
de um parâmetro de relatório conhecido O exemplo de código na
Listagem 5-6 mostra como definir o valor de um parâmetro de relatório
que tem um nome conhecido. O exemplo cria um objeto HashMap que
contém o valores de parâmetro a serem usados posteriormente para
executar o relatório. A variável, motor, é um Objeto ReportEngine. A
variável, executável, é um objeto do tipo IReportRunnable.
Este exemplo não mostra detalhes de código para recuperar o valor do
parâmetro de uma interface de usuário ou banco de dados. O código
para realizar estes as tarefas dependem dos requisitos do seu aplicativo.
Listagem 5-6 Definindo o valor de um único parâmetro

Como usar a coleção de parâmetros de relatório O exemplo de código


na Listagem 5-7 mostra como usar a coleção de relatório parâmetros. O
exemplo usa a classe ReportParameterConverter para converter o
Valores de string que a interface do usuário fornece no formato correto
para o parâmetro. O exemplo cria um objeto HashMap que contém o
parâmetro valores a serem usados posteriormente para executar o
relatório. A variável, motor, é um ReportEngine objeto. A variável,
runnable, é um objeto IReportRunnable. Esta amostra não mostrar
detalhes do código para recuperar os valores dos parâmetros de uma
interface de usuário ou base de dados. O código para realizar essas
tarefas depende do seu aplicativo requisitos. Listagem 5-7 Definindo os
valores de vários parâmetros sem agrupamento

Obtendo os valores para


parâmetros em cascata
Um grupo de parâmetros em cascata
contém um conjunto ordenado de
parâmetros que fornecem
listas de valores aceitáveis para
o usuário final selecionar. O
valor escolhido para o primeiro
parâmetro limita os valores
disponíveis para o segundo e
assim por diante. o
parâmetros usam uma ou mais
consultas para recuperar os
valores para exibir ao usuário
de um conjunto de dados. A tarefa
de definição de parâmetro usa as
linhas de dados das consultas
para filtrar os valores de cada
parâmetro, com base nos valores
das anteriores
parâmetros no grupo. Por exemplo,
considere um grupo de parâmetros
em cascata que
usa a seguinte consulta:
Preparando para gerar o relatório
O BIRT fornece emissores de saída
para HTML, Adobe PDF, Adobe
PostScript (PS),
Microsoft Excel (XLS), Microsoft
PowerPoint (PPT) e Microsoft Word
(DOC)
formatos. BIRT também suporta
formatos de saída personalizados
fornecidos por renderizadores
desenvolvido a partir dos pontos
de extensão de renderização.
Três classes de tarefas oferecem
suporte à geração de um relatório
de uma fonte. Seções anteriores
em
este capítulo descreveu como
abrir os dois tipos de fonte, um
design de relatório e um
documento de relatório. As
tarefas a seguir suportam a
geração de um relatório do
fonte:
■ IRunAndRenderTask. Um objeto
deste tipo cria um relatório em
um dos
formatos suportados executando um
design de relatório diretamente.
Para instanciar isso
objeto, chame o método
ReportEngine,
createRunAndRenderTask ().
■ IRunTask. Um objeto deste tipo
cria um arquivo de documento de
relatório (.rptdocument)
a partir de um design de
relatório. Para instanciar este
objeto, chame o método
ReportEngine,
createRunTask (). Depois de criar
o documento de relatório em
formato binário, crie o
relatório de saída usando um
objeto IRenderTask.
■ IRenderTask. Um objeto deste
tipo cria um relatório completo
ou um conjunto de páginas
de um relatório, formatando o
conteúdo de um documento de
relatório binário. Para
instancie esse objeto, chame o
método ReportEngine,
createRenderTask ().
Cada tipo de objeto de tarefa
pode atuar em várias fontes.
Quando o aplicativo não
mais precisa do objeto de tarefa,
chame o método close () da
tarefa.
Definir os valores dos parâmetros
para executar um design de
relatório
Para definir os valores dos
parâmetros para gerar um
relatório, use métodos em um
IRunAndRenderTask ou um objeto
IRunTask. Essas tarefas executam
um design de relatório para
gerar saída. IRenderTask suporta
a leitura, mas não a alteração
dos parâmetros
para um relatório porque sua
fonte é um documento de
relatório. O objeto IRunTask que
criou o documento de relatório já
especificou os valores dos
parâmetros.
Chame setParameterValues () para
definir valores para todos os
parâmetros em um design de
relatório.
Este método usa um HashMap como
argumento. Para criar um HashMap
adequado, use
as técnicas mostradas na Listagem
5-6 ou Listagem 5-7,
anteriormente neste capítulo. Pôr
o valor de um único parâmetro ao
gerar um relatório, chame o
método setParameterValue ().
Quando a tarefa gera o relatório
ou o relatório
documento, ele usa os valores
padrão para quaisquer parâmetros
com valores não definidos.
Adicionando ao caminho de classe
do mecanismo de relatório
Alguns designs de relatório
requerem acesso a classes Java
externas. O Relatório BIRT
Engine usa informações de caminho
de classe de várias configurações
em seu ambiente para
localize as classes externas. O
BIRT apóia a definição de alguns
desses locais por
definir propriedades de forma
programática no contexto do
aplicativo ou no
Objeto EngineConfig ou com a
classe Java System. Para definir
as propriedades, use
constantes da classe
org.eclipse.birt.report.engine.ap
i.EngineConstants. Pôr
uma propriedade no contexto do
aplicativo, use o objeto
EngineTask ou o
Objeto EngineConfig, conforme
mostrado nas seguintes linhas de
código, onde MyClass é
a classe que inicia o mecanismo
de relatório:
Para definir uma propriedade
CLASSPATH no objeto EngineConfig,
use um código semelhante ao
seguintes linhas. O valor da
propriedade deve ser um CLASSPATH
válido.
Para usar a classe Java System
para definir uma propriedade
CLASSPATH, use um código
semelhante ao
seguintes linhas. O valor da
propriedade deve ser um CLASSPATH
válido.
O BIRT pesquisa locais para aulas
externas na ordem mostrada a
seguir
Lista:
■ O CLASSPATH para o plug-in do
mecanismo de relatório.
■ O CLASSPATH do carregador de
classe pai que é definido como o
EngineConstants.APPCONTEXT_CLASSL
OADER_KEY. Defina esta
propriedade
no contexto do aplicativo.
■ O CLASSPATH definido como
EngineConstants.WEBAPP_CLASSPATH_
KEY.
Defina esta propriedade usando a
classe Java System ou no
EngineConfig
objeto.
O CLASSPATH definido como
EngineConstants.PROJECT_CLASSPATH
_KEY.
Defina esta propriedade usando a
classe Java System ou no
EngineConfig
objeto.
■ O CLASSPATH em
EngineConstants.WORKSPACE_CLASSPA
TH_KEY.
Defina esta propriedade usando a
classe Java System ou no
EngineConfig
objeto.
■ Arquivos JAR incluídos no
design do relatório.
Fornecendo um objeto externo para
um design de relatório
O BIRT suporta um aplicativo que
passa objetos previamente
instanciados para o
mecanismo de relatório. Usando
essa técnica, o mecanismo não
precisa fornecer o código
para criar o objeto usando
informações externas ao BIRT. O
aplicativo de chamada pode
manipule o objeto na memória
imediatamente antes de chamar o
mecanismo de relatório. UMA
o uso típico de objetos externos
é no ambiente de script BIRT.
Depois de
aplicativo passa o objeto para o
mecanismo de relatório,
expressões de script podem fazer
referência
o objeto por nome no estágio
apropriado no processo de geração
de relatório. Para
fornecer um objeto para o
mecanismo de relatório, usar o
contexto do aplicativo, acessado
de
o objeto EngineConfig ou o objeto
de tarefa, conforme mostrado no
código em
Listagem 5-9.
Preparando para renderizar um
relatório formatado
Renderize um relatório formatado
a partir de um design de
relatório chamando o método
IRunAndRenderTask.run ().
Renderizar um relatório formatado
a partir de um relatório binário
documento chamando o método
IRenderTask.render ().
Configurando as opções de
renderização
Antes de renderizar um relatório
em um formato de saída, o
aplicativo deve definir opções
que determinam os recursos da
saída. As opções devem
especificar uma saída
nome do arquivo ou um fluxo.
Outras configurações, como o tipo
de HTML a ser gerado, são
opcional. BIRT suporta dois tipos
de saída HTML, HTML e
incorporável
HTML. HTML incorporável é
adequado para inclusão em outra
página da web.
Este formato não contém
informações de cabeçalho nem as
tags <body> ou <html>.
O aplicativo usa um objeto de
opções de renderização para
definir as opções de saída em um
IRunAndRenderTask ou um objeto
IRenderTask. Opções de
renderização específicas de
formato
classes implementam IRenderOption
e estendem RenderOption. A
renderização
A classe de opções para o formato
Excel é EXCELRenderOption, para o
formato HTML
é HTMLRenderOption e para o
formato PDF é PDFRenderOption.
Todos os outros
formatos de saída usam a classe
RenderOption.
Depois de criar o objeto de opção
de renderização, chame
setRenderOption () da tarefa
método. Este método usa um objeto
IRenderOption como argumento. Use
o
método setRenderOption () em um
objeto IRenderTask ou
IRunAndRenderTask.
Este método não executa nenhuma
função em um objeto IRunTask,
pois esta tarefa não
renderizar a saída. A Listagem 5-
11 inclui código para definir a
opção de renderização para HTML.
Para aplicar uma configuração de
renderização, use os métodos
setter no objeto de opção de
renderização.
Esses objetos também têm métodos
getter que recuperam as
configurações de renderização.
Comum
configurações de opções são um
URL base para hiperlinks, um
manipulador de ação, uma imagem
manipulador, formato de saída e
formatos de saída de imagem com
suporte.
A configuração de formatos de
imagem com suporte é usada para
itens de relatório estendido,
como
gráficos ou itens estendidos
personalizados. O ambiente de
renderização final para o
relatório,
como o navegador de um relatório
em formato HTML, afeta o valor
desta opção. Pôr
formatos suportados, use
setSupportedImageFormats () com
um argumento String
contendo uma lista dos formatos
de imagem suportados. Os formatos
de imagem são padrão
tipos, como GIF, JPG, PNG e SVG.
Os pontos-e-vírgulas separam os
itens da lista.
O método getSupportedImageFormats
() retorna uma String do mesmo
formato.
Compreendendo as opções de
renderização de HTML
Antes de gerar um relatório HTML
que usa imagens em disco ou cria
imagens ou
gráficos em um relatório, o
aplicativo deve fornecer
configurações adicionais. o
A classe HTMLRenderOption fornece
muitas maneiras de personalizar o
HTML emitido.
A lista a seguir descreve algumas
das opções comumente usadas e
como o
opções interagem entre si:
■ Diretório de imagens. Muitos
relatórios incluem imagens
estáticas ou dinâmicas. Para
Por exemplo, os gráficos são
imagens dinâmicas. Relatórios
HTML colocam todas essas imagens
em um
localização definida. Para
definir esse local, chame o
método setImageDirectory ().
■ URL da imagem de base. Para
implementação na web, como um
arquivo WAR, as imagens criadas
no diretório de imagens deve
estar disponível para o navegador
do usuário. Proporciona a
mecanismo com um prefixo de URL
para aplicar ao diretório da
imagem. Para definir o URL, use
o método setBaseImageURL (),
conforme mostrado na Listagem 5-
2.
■ Manipulador de imagens. Use o
método setImageHandler () para
configurar uma imagem
manipulador, conforme descrito
anteriormente neste capítulo.
■ HTML incorporável. Chame o
método setEmbeddable () com o
argumento,
verdadeiro, para definir esta
opção. O HTML incorporado e
produzido não tem
tags <html> e <body>.
■ Geração da direita para a
esquerda. Para definir o emissor
de HTML para gerar conteúdo certo
para
esquerda, chame o método
setHtmlRtLFlag () com o
argumento, true.
■ Tag do título. Use o método
setHtmlTitle () para escrever uma
tag <title> para o
HTML. Este título aparece na
barra de título do navegador e na
guia de um
janela do navegador com várias
guias.
■ Conteúdo da página mestra. Em
um design de relatório BIRT, o
desenvolvedor usa o mestre
página para configurar tamanhos
de página, cabeçalhos e rodapés.
Essas configurações afetam o
HTML produzido. Para suprimir o
conteúdo da página mestra, chame
o
setMasterPageContent () com o
argumento false. O conteúdo da
página mestra
configuração afeta os resultados
da configuração de HTML paginado
e layout fixo.
■ Rodapé flutuante. Por padrão, o
rodapé da página mestra aparece
diretamente abaixo do
conteúdo de cada página HTML.
Passe o argumento, falso, para o
método setPageFooterFloatFlag ()
para forçar o rodapé para a parte
inferior de um
página mestra de tamanho fixo.
Esta configuração adiciona uma
instrução div com uma altura
atributo para o HTML produzido.
Margens da página mestre. As
margens da página mestra afetam a
aparência do HTML
saída se o relatório usa layout
fixo ou se o valor, verdadeiro, é
o argumento para
o método
setOutputMasterPageMargins ().
■ HTML paginado. Ao renderizar o
relatório em HTML, o mecanismo
suporta
paginar os resultados. A página
mestra do design do relatório
define o tamanho do
página e o conteúdo de seus
cabeçalhos e rodapés. Para exibir
o todo ou
relatório parcial como uma única
página HTML, chame o método
setHtmlPagination ()
com o argumento, falso. Neste
caso, definindo um intervalo de
páginas de tarefa de renderização
de 5-7
renderiza as páginas 5 a 7 como
uma página HTML. Informações de
cabeçalho e rodapé
aparecem várias vezes nesta
página HTML se você optar por
exibir o mestre
Conteúdo da página. Para que seu
aplicativo suporte paginação,
você precisa configurar
controles de paginação
semelhantes ao visualizador da
Web de exemplo.
■ Layout fixo ou automático. Por
padrão, o BIRT gera tabelas com
colunas que
são fixos em tamanho. Quando o
usuário altera a largura da
janela do navegador, o
as larguras das colunas não
mudam. BIRT também suporta layout
automático, no qual
as larguras das colunas são
ajustadas de acordo com a largura
da janela. Layout fixo
produz relatórios com um layout
consistente, mas esta escolha
pode aumentar
tempo de renderização. O atributo
table-layout: fixed é aplicado a
todas as tabelas.
As instruções div apropriadas
definem as larguras e o
preenchimento das colunas. As
configurações div
também são aplicados se o
conteúdo da página mestra for
usado. Para alterar essa
configuração, use o
método setLayoutPreference ().
Passe o LAYOUT_PREFERENCE_AUTO ou
Valor LAYOUT_PREFERENCE_FIXED
como seu argumento.
■ Cálculo de estilo. O método
setEnableAgentStyleEngine ()
fornece o
controle do desenvolvedor sobre
como os estilos são calculados.
Passando um valor de true para
este método emite os estilos
diretamente para o HTML
produzido. Neste caso, o
navegador executa os cálculos de
estilo. Passando um valor false
para o método
faz com que o emissor use o
mecanismo de estilo BIRT para
fazer os cálculos. Como com
a configuração de layout fixo ou
automático, esta configuração
afeta a consistência do
aparência do relatório.
URL base. A maioria dos itens de
relatório BIRT tem uma
propriedade de hiperlink. Ao
construir
este hiperlink no designer de
relatório, o desenvolvedor de
relatório usa um URL, um
marcador interno ou uma operação
de pesquisa completa. O design do
relatório armazena o
resultados da sessão de design. O
método setBaseURL () define o URL
base
para prefixar os hiperlinks
construídos usando o designer.
Use esta configuração para
aplicativos implantados em um
ambiente da web.
■ Manipulador de ação. O emissor
lida com hiperlink, marcador e
detalhamento
ações. Ao renderizar o relatório
como HTML, o BIRT usa o
Classe HTMLActionHandler para
determinar como construir o
hiperlink para estes
ações. A classe HTMLActionHandler
implementa o
Interface IHTMLActionHandler. Se
o HTMLActionHandler padrão não
atender às suas necessidades, use
uma implementação personalizada
de IHTMLInterface. Para
configurar
o novo manipulador de ação, use o
método setActionHandler ().
A classe HTMLRenderOption fornece
métodos getter equivalentes para
o setter
métodos descritos na lista
anterior.
Como configurar propriedades para
um relatório em formato HTML
O exemplo de código na Listagem
5-11 mostra o uso de opções de
renderização em um
Objeto IRunAndRenderTask para
definir valores de parâmetros de
relatório, o formato de saída de
o relatório e o nome do arquivo
de saída. A variável, motor, é um
ReportEngine
objeto. A variável, runnable, é
um objeto do tipo
IReportRunnable. A variável,
name, é o nome do design do
relatório.
Listagem 5-11 Configurando
propriedades em um objeto
IRunAndRenderTask

Você também pode gostar