Qué us dedicais?
Despliegue de informes de Jasper Reports desde el entorno de Desarrollo al entorno de Producción
2 Gener 2013

Este artículo pretende ser una guía para definir, en el marco de una gran organización, cómo desarrollar, probar y publicar informes de Jasper Reports  en los diferentes entornos de servidores JasperReports Server (desarrollo, preproducción, producción).

 

Revisando el material publicado por JasperSoft a este respecto, encontramos el tutorial “Driving Reports from Development to Production Tutorial” en la siguiente dirección:

 

https://www.jaspersoft.com/driving-reports-development-production

 

En él se detalla como exportar e importar informes utilizando las herramientas js-export y js-import en distintos entornos.

Sin embargo, a medida que avanzamos en el tutorial vemos que para que el proceso se realice satisfactoriamente se plantean algunos problemas:

  • debemos editar a mano algunos archivos XML;
  • no se trata adecuadamente el problema de la creación y uso de datasources tanto en el desarrollo de los propios informes como una vez instalados en el JasperReports Server, ello dificulta la correcta gestión de la seguridad y el uso de contraseñas (los desarrolladores de informes no deben conocer las contraseñas de los entornos de preproducción y producción, y éstas no deben figurar de ninguna manera en el archivo ZIP con los informes que son entregados al departamento de sistemas encargado de su despliegue).

Aquí plantearemos una manera de sortear estos problemas para que el paso de informes de desarrollo a producción se realice de la manera más simple, eficaz y segura posible.

Usualmente en una gran organización encontramos tres entornos de trabajo: desarrollo, preproducción y producción.

  • Donde los desarrolladores (que trabajan en el Departamento de Desarrollo) crean informes contra bases de datos y servidores (JasperReports Server) de prueba (desarrollo) de los que conocen las contraseñas de acceso para operar a su gusto.
  • No obstante, los servidores y las bases de datos de preproducción y producción son controlados por el Departamento de Sistemas (responsable de la implantación de aplicaciones) que gestiona las credenciales de acceso a dichos entornos y en ningún caso las pone en conocimiento de los miembros del departamento de desarrollo ya que se produciría un problema de seguridad.
  • Los desarrolladores únicamente tienen acceso al entorno de preproducción para ejecutar los planes de pruebas (ejecución de informes) que verifiquen que los informes funcionan correctamente, y en ningún caso se les concede acceso al entorno de producción (ya que el entorno de preproducción es un clon del entorno de producción y el adecuado para realizar las pruebas).
  • El entorno de producción usualmente es un cluster de servidores (JasperReports Server) preparado para dar respuesta a una importante carga de trabajo.

 

El siguiente esquema describe este escenario:

 

 

Donde cada nodo de JasperReports Server dispone de su propia base de datos interna (que será MySQL o Postgres según la configuración que establezcamos y la versión de JasperReports Server de que se trate 3.X o 4.X). Los informes de las aplicaciones acceden a bases de datos externas que pueden ser Postgres, Oracle, etc.

 

Por otra parte, es muy importante para la organización definir una forma estandarizada de crear los paquetes o lotes de informes de las aplicaciones, que especifique entre otras cosas cómo se organizan los informes, subinformes, recursos e imágenes en carpetas. Esta estandarización facilitará enormemente el mantenimiento de los informes de las aplicaciones.

 

En este punto sugerimos adoptar una estructura similar a la definida por la herramienta  de código abierto JDeploy que podremos encontrar en:

http://sourceforge.net/projects/jaspertools/?source=directory

 

La herramienta JDeploy nos permite realizar operaciones sobre un servidor JasperReports Server desde la línea de comandos (desplegar lotes de informes, crear datasources, etc). JDeploy sugiere agrupar todos los informes de una aplicación en un archivo ZIP de acuerdo a la siguiente estructura:

 

 

Donde:

  • los informes y sus archivos de internacionalización se encuentran en el directorio raíz. Los subinformes específicos de cada informe se ubican en la subcarpeta “subinformes”, asimismo los subinformes compartidos que son utilizados por más de un informe de la carpeta raíz se ubican en “subinformescomp”.
  • En cuanto a las imágenes, las imágenes específicas de cada informe se ubican en “imaxes”, las imágenes compartidas por varios informes se ubican en “imaxescomp”. Los nombres de estos directorios están parametrizados, de forma que la herramienta nos permite cambiarlos de acuerdo a nuestras necesidades. Durante el despliegue de informes, JDeploy reproduce en el servidor la estructura de carpetas que encuentre en el ZIP, creando los directorios (en el servidor) que sean necesarios.

 

Dicho esto, los pasos que se deberán seguir en un proceso típico de desarrollo e implantación de informes son los siguientes:

  1. Desarrollo de los informes: para ello podremos utilizar la conocida herramienta iReport de JasperSoft. Los informes deben ser desarrollados utilizando DataSources cuyo nombre debe ser invariable en los tres entornos (desarrollo, preproducción y producción), si bien la definición de los mismos es independiente (credenciales de acceso, bases de datos a las que apuntan, etc). La estructura de carpetas donde guardemos los informes, imágenes, recursos, ect,  deberá ser la señalada anteriormente.
  2. Creación del fichero ZIP con los informes: una vez finalizados los informes, los empaquetaremos en un fichero ZIP con la estructura estándar, que en la práctica se reduce a comprimir la carpeta con los informes y darle un nombre adecuado.
  3. Despliegue del fichero ZIP con los informes: para el despliegue de los informes en los entornos de desarrollo, preproducción y producción, el desarrollador tan solo debe remitir el paquete ZIP al responsable correspondiente que, utilizando el comando de despliegue de JDeploy (deploy.sh) desplegará en cada servidor el paquete ZIP con los informes.  Obviamente, para que los informes funcionen, el responsable del despliegue de los mismos debe crear en los servidores JasperReports los datasources que estos utilizan gracias al comando createds.sh que proporciona JDeploy, indicando las credenciales específicas de cada entorno donde se desea desplegar.  Listo!, ya podemos ejecutar los informes en el entorno correspondiente.

 

Como se ha visto, aunque el  despliegue de los informes resulta muy sencillo, las buenas prácticas de desarrollo de software aconsejan que los informes sean desplegados en primer lugar en el entorno de desarrollo, donde habitualmente los desarrolladores tienen permisos para crear datasources y desplegar informes directamente, y pueden probar sus informes antes de darlos por correctos y solicitar su publicación en preproducción.

 

Para crear los datasources se utiliza el comando createds de JDeploy. Un ejemplo de uso de este comando es el siguiente:

 

./createds.sh catalogo1DS -rd /datasources -drv oracle.jdbc.OracleDriver - url

jdbc:oracle:thin:@195.55.126.20:1521:PRUEBAS -dsusr root -dspwd root -t jdbc

–h localhost:8081

 

Donde los parámetros utilizados representan la siguiente información:

 

 

Una vez creado el datasource ya podemos desplegar el lote de informes (archivo ZIP) mediante el comando deploy de JDeploy. Un ejemplo de utilización de este comando sería:

 

./deploy.sh /opt/api/zip/catalogo1.zip -rd /aplicacion1 -ds catalogo1DS -h

localhost:8081

 

Donde los parámetros utilizados representan la siguiente información:

 

 

El resultado correcto de esta operación desplegará el lote de informes en la ubicación especificada con la estructura de directorios definida anteriormente.  Se puede visualizar los cambios haciendo uso del comando list o desde la consola de administración de JasperReports Server.

 

Si utilizamos list (ver manual de usuario de JDeploy), obtendremos un listado como el que sigue:

 

 

Los mismos datos podremos observar desde la consola de administración de JasperReports Server:

 

 

Tras la ejecución exitosa del plan de pruebas de los informes en el entorno de desarrollo, el desarrollador remitirá el ZIP con el lote de informes al departamento de sistemas, que realizará este mismo proceso de despliegue en el entorno de preproducción. Y tras la ejecución exitosa del plan de pruebas en el entorno de preproducción, el departamento de sistemas ya puede desplegar los informes mediante este mismo proceso en el entorno de producción.

 

En este artículo hemos visto cómo desplegar de una forma eficaz los informes Jasper Reports en los distintos entornos de desarrollo, preproducción y producción, y todo ello gracias a una útil herramienta como es JDeploy.

 

En futuros artículos explicaremos cómo monitorizar y gestionar adecuadamente un entorno de producción de servidores JasperReports.

Sdweb S.L. Santiago de Compostela - Barcelona