JASPER TOOLS PROJECT BLOG

jasper

JDeploy 02.00 is available!

Escrito por jaspertools 29-05-2012 en General. Comentarios (0)

The JDeploy contributors are happy to deliver to all our users a new version of this Jasper Reports Server tool.

JDeploy v.02.00 new features and bug patches:

* compatible with JasperReports Server 3.7 and 4.5
* deploying resource bundles associated to reports
* deployment optimization to avoid timeout errors
* invocation scripts in English language
* connection URL to the JasperReports Server web services configurable
* configurable directory names of the reports packages (.zip archive)
* reports execution from console and Java applications (API)
* solved bug on export reports to ODT, ODS, DOCX, XLSX formats
* other small improvements

How to deploy Reports from development to production environment.

Escrito por jaspertools 25-05-2012 en General. Comentarios (0)


This article is intended as a guide to define, within a large organization, how to develop, test and publish reports of JasperReports in different JasperReports Server environments (development, pre-production, production).


Reviewing the material published by JasperSoft in this regard, we find the tutorial "Driving Reports from Development to Production Tutorial" at the following address:


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


It details how to export and import reports using js-export and js-import in different environments. However, as we move forward in the tutorial we see that for the process to be successful appears some problems: we must hand-edit some XML files and it is not treated properly the problem of creating and using datasources, both the development of the reports themselves and once installed on the JasperReports Server, this hinders the proper security and passwords management (reports developers must not know the passwords of preproduction and production environments, and these should not appear in any way in the ZIP file with the reports that are delivered to the Systems Department for deployment).

This post exposes how to circumvent these problems so that the transition from developmentto production environment is done in the most simple, effective and safe way.

Usually in a large organization there are three environments: development, preproduction and production, where developers (working in the Development Department) create reports from databases and test servers (those who passwords are known by developers). However, servers and preproduction and production databasesare controlled by the Systems Department (responsible of applications deployment) that manages the credentials for access to these environments because of security considerations. The developers only have access to pre-production environment to execute test plans to verify that the reports are working properly, and in no case they have grants to access to production environment (since the pre-production environment is a clone production environment and suitable for testing). The production environment is usually a cluster of servers (JasperReports Server) prepared to respond to a major workload.

The following outline describes this scenario:

 

 

Where each node JasperReports Server has its own internal database (MySQL or Postgres, based on the settings and version of JasperReports Server, 3.X or 4.X). Application reports access external databases that can be Postgres, Oracle,…

On the other hand, is very important for the organization to define a standardized way to create packages or lots of application reports specifying, among other things, how to organize the reports, subreports, resources and images in folders. This standardization will greatly facilitate the maintenance of application reports.

At this point we suggest adopt a similar structure to that defined by the open source tool JDeploy, that can be found in:


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

 

JDeploy tool allows us to perform operations on a JasperReports Server from the command line (batch deploy reports, create datasources, …).

JDeploy suggests grouping all application reports on a ZIP file according to the following structure:


 

Where reports and internationalization files are in the root directory. Specific application subreports are located in the subfolder "subreports", and shared subreports, that are used by more than one report of the root folder, are located in "subinformescomp". Specific images of each report are located in "imaxes", the reports shared images  are located in "imaxescomp" directory. The names of these directories are parameterized so that the tool allows us to change them according to our needs. During reports deployment, JDeploy clone in the server the ZIP folder structure, creating the necessary directories on the server.

That said, the steps to be followed in a typical process of development and deployment of reports are:


1.       Development of reports: for this we use the familiar JasperSoft iReport tool. Reports should be developed using DataSources whose name should be consistent in all three environments (development, preproduction and production), although their definition is independent (access credentials, at pointed databases, etc). The folder structure where we keep the reports, pictures, resources, , should be the specified above.

2.       Reports ZIP file creation: after develop the reports, we must repackage them into a ZIP file with the standard structure, which in practice boils down to compress the folder with the reports and give an appropriate name.

3.       Reports ZIP file deployment: to deploy reports in development, preproduction and production environments, the developer only has to forward the ZIP packet to deployment responsible that using the deploy command (deploy.sh) ,deploy the reports ZIP file on each server. Obviously, for the reports work, the deployment responsible, must create the appropiate JasperReports datasources using the command provided by JDeploy (createds.sh), indicating the specific environment credentials. That’s all!.


As seen, although the reports deployment is very simple, nice software development practices advised that the reports must be deployed primarily in the development environment, where developers usually have permission to create datasources and deploy reports directly, and can test their reports before validate them. After this, developers can request a  publication on preproduction environment.

To create the datasources you must use the command createds of JDeploy. An example use of this command is:


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

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

–h localhost:8081

 

Where the parameters used represent the following information:

 

 

After creating the datasource we can deploy the batch reporting (ZIP file) using the deploy command of JDeploy. An example of using this command is:

 

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

localhost:8081

 

Where the parameters used represent the following information:


 

The correct result of this operation will display the batch of reports in the specified location with the directory structure defined above. You can view the changes by using the list command or the JasperReports Server Management Console.

If we use list (see usermanual JDeploy), we get a listlike the following:

 



We can observe the same data at the JasperReports Server management console.

 

 

After a successful execution of the reports test plan on the development environment, the developer shall send the ZIP with the batch of reports to the systems department that perform this same process of deployment in the pre-production environment. And after the successful execution of the test plan in the pre-production environment, the IT department can finally deploy the reports using this same process in the production environment.


In this article we have seen how effectively deploy a Jasper Reports reports in different development environments, preproduction and production, and all thanks to a useful tool as JDeploy. In future articles we will explain how to properly monitor and manage a production environment JasperReports server.

Cómo desplegar reports desde el entorno de Desarrollo al entorno de Produccion

Escrito por jaspertools 21-05-2012 en General. Comentarios (0)

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 Reportsfrom 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 y 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 dedesarrollo 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 Departamentode 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). Elentorno 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. Desarrollode 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 -dsusrroot -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 observarlos 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.