2009-08-04 27 views
5

Estoy buscando incrustar JasperReports en una aplicación web existente para generar informes. La aplicación web se encuentra sobre una base de datos existente que es antigua y compleja, y realmente no es adecuada para que los redactores de informes la utilicen para escribir informes directamente.JasperReports y orígenes de datos personalizados

Lo que quiero ver es escribir una especie de envoltorio alrededor de nuestra capa de acceso a datos existente (escrita para facilitar nuestra vida hablando de la anterior y compleja db). ¿Alguien tiene alguna experiencia de escribir fuentes de datos personalizadas para JasperResports, o de hacer algo como esto?

Actualizado

supongo que probablemente no estaba claro en mi pregunta - que es probablemente porque mis necesidades no están claras tampoco. Quiero proporcionar una forma en que los usuarios finales puedan usar algo como iReport para crear informes contra la base de datos, y luego usar JasperReportServer para programar/ver los informes. Sin embargo, la base de datos es realmente desagradable y nunca fue diseñada para su uso de esta manera. Tenemos una capa de acceso a su alrededor que la aplicación web usa para hablar con ella. Quiero mantener a mis usuarios finales alejados del DB, y la idea de una fuente de datos personalizada que use la capa de acceso me pareció una buena opción. Sin embargo, he encontrado muy poca documentación sobre cómo hacer eso. Tal vez sea mucho más fácil de lo que creo, y solo estoy tratando de hacer una cosa muy simple demasiado complicada.

Actualizado

Gracias por las respuestas. No creo que mi problema haya sido resuelto, pero creo que las respuestas han ayudado a informar la fase de requisitos.

Respuesta

3

Cada plantilla de JasperReports puede tener dos orígenes de datos diferentes. Una es conectarla directamente a una base de datos utilizando algún controlador jdbc o, en su caso, proporcionar una colección de beans Java (POJO), generalmente lista.

La plantilla de JasperReports es similar a la definición de un método. Tiene un nombre, es decir, un objeto JR compilado y parámetros (fuente de datos y una lista de parámetros de entrada de algunos de los tipos de Java más populares).

Mi sugerencia es utilizar la herramienta iReport. Abra un ejemplo que viene con el paquete JasperReports, analícelo y modifíquelo. No es tan complicado.

ACTUALIZACIÓN

clientes Dejar que las plantillas de autoría de JasperReports, la compilación y la adición a la ruta de clase significa que tendrá que abrir su sistema demasiado. Por lo general, los clientes proporcionan una descripción de un informe deseado y los desarrolladores crean la fuente de datos y diseñan la plantilla. JasperReports puede tener parámetros. Si estos parámetros están expuestos a través de la interfaz de usuario, los usuarios pueden cambiar el comportamiento de los informes en el tiempo de ejecución.

Si realmente necesita permitir más flexibilidad, utilice la API proporcionada por JasperReports para las plantillas de autoría. Podría imaginar algunos DLS simples para que los usuarios avanzados se comuniquen con su sistema y creen informes inmediatos.

+0

No sabía que pudieran tener datos múltiples fuentes. El plan es usar iReport para la creación de informes. Creo que lo que me falta aquí es sobre consultar mi capa de acceso, ninguno de los ejemplos que he visto ha mostrado nada al respecto. He actualizado la pregunta. –

4

Los informes de Jasper le permiten utilizar una fuente de datos "JavaBean". Puede cargar sus datos en cualquier estructura de Java Bean y crear informes contra eso. Funciona bien.

Consulte la sección "Origen de datos personalizados" here.

+0

Gracias. Ya lo he visto, y solo muestra un ejemplo básico.Creo que puedo ver cómo sacar los diversos parámetros del informe. Lo que no puedo ver es cómo presentar los campos disponibles al autor del informe. –

+1

La forma en que lo hicimos fue creando un archivo jar con todos los Java Beans para los informes en él. Luego agrega el archivo jar a la ruta de clase en iReport. Colocamos la clase de proveedor como se muestra en la Figura 3.5 en el enlace de arriba. Ha pasado un tiempo, pero creo que así fue como funcionó. –

+0

@Jacob Schoen Hola, me pregunto si se puede pasar el parámetro a Java Bean. Entonces podemos procesar alguna lógica de negocios, gracias. – coastline

Cuestiones relacionadas