Pregunta

Estoy buscando integrar JasperReports en una aplicación web existente para generar informes. La aplicación web se encuentra en la parte superior de 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.

Lo que quiero ver es escribir algún tipo de envoltorio alrededor de nuestra capa de acceso a datos existente ( escrito para hacer nuestra vida más fácil hablar con el db antiguo y complejo mencionado anteriormente ). ¿Alguien tiene alguna experiencia de escribir fuentes de datos personalizadas para JasperResports, o de hacer algo como esto?

Actualizado

Creo que probablemente no estaba claro en mi pregunta, lo que probablemente se deba a que mis requisitos tampoco están claros. Quiero proporcionar alguna manera para que los usuarios finales puedan usar algo como iReport para crear informes en la base de datos, y luego usar JasperReportServer para programar / ver los informes. Sin embargo, la base de datos es muy, muy desagradable y nunca fue diseñada para usarse 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 lejos de la base de datos por completo, y la idea de una fuente de datos personalizada que utilizara la capa de acceso parecía una buena opción. Sin embargo, he encontrado muy poca documentación sobre cómo hacerlo. Tal vez es mucho más fácil de lo que creo que es, y solo estoy tratando de hacer que una cosa muy simple sea demasiado complicada.

Actualizado

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

¿Fue útil?

Solución

Cada plantilla de JasperReports puede tener dos fuentes de datos diferentes. Uno lo está conectando directamente a una base de datos utilizando algún controlador jdbc o, en su caso, proporcionando una colección de Java Beans (POJO), generalmente lista.

La plantilla JasperReports es similar a una definición de 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 Java más populares).

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

UPDATE

Permitir que los clientes que crean plantillas de JasperReports, compilen y agreguen al classpath significa que necesitará abrir demasiado su sistema. 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 se exponen a través de la IU, los usuarios pueden cambiar el comportamiento de los informes en tiempo de ejecución.

Si realmente necesita permitir más flexibilidad, utilice la API proporcionada por JasperReports para crear plantillas. Me imagino un DLS simple para que los usuarios avanzados se comuniquen con su sistema creando informes sobre la marcha.

Otros consejos

Los informes de Jasper le permiten usar un "JavaBean" fuente de datos. Puede cargar sus datos en cualquier estructura de Java Bean y compilar los informes contra eso. Funciona bien.

Consulte el " Fuente de datos personalizada " sección aquí .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top