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