Manejador de informes de EGL

Las características estándar de la biblioteca de informes de código fuente abierto JasperReports permiten crear salida bastante compleja. Si necesita informes más sofisticados, puede crear un manejador de informes de EGL.

El manejador de informes de EGL es un componente manejador de EGL de tipo JasperReport. El motor de JasperReports considera el manejador de informes como scriptletClass. Para los usuarios no familiarizados con Java, esto implica que el archivo de diseño de JasperReports puede llamar a métodos (similares a funciones) del manejador de informes.

A continuación figura una lista rápida de los usos comunes de un manejador de informes, con detalles posteriores:

Puede crear el manejador de informes desde un archivo vacío o utilizar el asistente de EGL Manejador de informes nuevo. El asistente de manejador de informes ofrece un esquema inicial que incluye el nombre de cada función predefinida (relacionada con eventos) que el motor de JasperReports puede invocar al confeccionar el informe. Para obtener una lista completa de estos eventos, consulte la sección Funciones predefinidas del manejador de informes de EGL.

Responder a eventos

EGL tiene diversos nombres de funciones predefinidas que corresponden a eventos que pueden producirse cuando JasperReports confecciona un informe. Tales eventos incluyen entrar o salir de una página, iniciar o finalizar un elemento de línea, etc. Cuando ocurre uno de estos eventos, el motor de JasperReports comprueba si el manejador de informes contiene una función que corresponda al evento. Si es así, el motor de JasperReports invocará automáticamente dicha función.

Uno de los eventos que EGL reconoce es la inicialización de un grupo definido por usuario. El código <group> del archivo fuente de diseño XML permite especificar una expresión que define un grupo. Por ejemplo, puede agrupar los clientes cuyos números van de 2000 a 2999. Puede imprimir subtotales para el grupo mediante los códigos estándar del código fuente de diseño XML, o realizar manipulaciones más complejas mediante el manejador de informes.

Crear funciones invocadas explícitamente

No puede realizar ninguna codificación Java compleja (multilínea) dentro del propio archivo fuente XML de JasperReports. Sin embargo, escribiendo código EGL en el manejador de informes puede crear funciones a las que el motor de JasperReports podrá acceder durante la ejecución. Estas funciones no tienen que estar necesariamente asociadas a ningún evento específico ni invocarse desde una de las funciones predefinidas relacionadas con eventos. Por ejemplo, puede crear una función que busque una variable SQL de tipo DATE y devuelva la fecha en una serie de caracteres formateada. Puede llamar a esta función directamente desde el código fuente XML que imprime el detalle de una transacción.

la operación funciona debido a que EGL genera una scriptletClass desde el archivo fuente del manejador de informes. La scriptletClass es una clase Java a la que el motor de JasperReports puede acceder y, durante la impresión, el motor puede invocar los métodos de dicha clase. Esos métodos son las funciones que ha creado.

El manejador de informes tiene pleno acceso a otros recursos de EGL, como por ejemplo componentes de registro, funciones del sistema y bibliotecas.

Almacenar y recuperar datos

El paso de datos a un subprograma es un proceso de dos pasos.
  1. Utilice la función de sistema ReportLib.addReportData() en el manejador de informes para almacenar datos para su uso posterior por parte de un subinforme.
  2. Dentro del código <subreport> del archivo de diseño, configure un código <dataSourceExpression> para pasar datos al archivo de diseño del subinforme. Dentro del código <dataSourceExpression>, invoque el método incorporado getDataSource() del manejador de informes. Este método devuelve los datos en formato interno. Debe convertir temporalmente el valor de retorno como JRDataSource para que el subinforme pueda utilizar los datos.
A continuación, el subinforme puede utilizar los datos recuperados para suministrar detalles de cada elemento de línea.

Para obtener más detalles y ejemplos, consulte los apartados Crear un manejador de informes de EGL y Funciones adicionales del manejador de informes de EGL.

Salida generada

Cuando se genera un manejador de informes, EGL crea estos archivos:
  • nombreManejador.java es el manejador de informes propiamente dicho. JasperReports realiza llamadas a este programa utilizando tipos de datos Java.
  • nombreManejador_lib.java es una biblioteca que contiene funciones EGL convertidas. El manejador de informes (nombreManejador.java) llama a estas funciones con los tipos de datos convertidos desde Java.
nombreManejador
Nombre del archivo fuente manejador de informes de EGL (menos la extensión .egl)

Durante la generación, EGL utiliza el archivo fuente manejador de informes de EGL para crear una clase JRDefaultScriplet, que es una subclase de la clase de scriptlet de JasperReports. Esa subclase contiene un método para cada función que ha codificado. Durante la ejecución, el motor de JasperReports comprueba la existencia de un atributo scriptletClass en el código <jasperReports>. Si este atributo existe, el motor de informes carga la clase de scriptlet y pone los métodos de la clase a disposición del diseño de informes. Para obtener más información sobre los scriptlets de JasperReports y la clase de scriptlet, consulte la documentación de JasperReports.

Cuando EGL genera archivos .java, los nombres de clase están en minúsculas. Asegúrese de cualquier nombre de clase especificado en un documento de diseño XML esté en minúsculas.

Comentarios
(C) Copyright IBM Corporation 2000, 2005. Reservados todos los derechos.