Birt

Visita este artí­culo en http://www.estadobeta.com/2007/12/03/birt/

Por vladimir en Desarrollo, artículos

Sistema de reportes para aplicaciones web.

Todo sistema tiene como finalidad final entregar un resultado. En un buen numero de casos, el programador requiere construir reportes…si, los tan odiosos reportes. En web la cosa se complica, ya que no existen herramientas agradables para ello. Las librerías existentes conocidas diagraman todo por código, haciendo el diseño un proceso laborioso, tedioso y lento. Lo ideal sería que existiera un software tal que diagramara el reporte de forma agradable, digamos tipo Dreamweaver, con ventanitas e iconos y literalmente ir dibujando tablas y demases.

Business Intelligence and Reporting Tools, para los amigos BIRT, es un software con esas tan deseadas características. Funciona en dos modos:

  1. el diseñador (birt-designer): una interfaz visual para Eclipse el cual se tiene varias similitudes con Dreamweaver. Pinchando y arrastrando objetos, vas dibujando el reporte deseado. Aquí se establecen conexiones a BD, SQL, parámetros, scripts, etc. y todo queda en un archivo XML con extensión .rptdesign
  2. el visualizador (birt-viewer): funciona bajo un servidor de servlets o paginas jsp como Tomcat. Este toma en tiempo de ejecución el archivo .rptdesign y lo muestra en varios formatos: html, pdf, cvs, excel. Este puede trabajar perfectamente con cualquier otro lenguaje, digamos php, y sólo has de llamar a una URL para que esta haga el trabajo de crear el reporte. La URL es del tipo:http://midominio:puertotomcat/birt-viewer/run?__report=report\mireporte.rptdesign&parametro1=valor1&parametro2.

Así cuando quieras descargarlo tendrás que descargar ambos, ya que son uña y mugre. Uno funciona offline para diseño en tu pc, y el otro funciona en el servidor. El designer lo puedes descargar sólo, como plugin para una instalación ya hecha de Eclipse, o derechamente Eclipse completo con BIRT Designer incluído.

tip: si ya eres usuario de Eclipse, puede que te interese mucho un servicio online para elegir los plugins que deseas incluir en tu Eclipse.

La instalación de Designer es simple, pero la del Viewer puede ser escabrosa. En Windows puede que menos, pero en linux y despues de harto buscar, encontre algo bastante simple.

ATENCIÓN: BIRT corre bajo Tomcat (digamos java) y el diseñador en Eclipse, pero eso no indica que debas programar en java. Nooo, no señor. El diseñador es eso, diseño. Y el viewer hay que verlo como un ejecutable que convierte en tiempo real lo creado por el designer. Así entonces, podrás llamar al viewer desde cualquier entorno de programación, ya que trabaja “solito”.

Yo, por ejemplo, lo utilizo desde PHP. Creo un formulario php con los parámetros necesarios para el reporte, y cuando doy submit, lo mando a una pagina (URL) alojada bajo Tomcat (en un puerto que no choque con Apache claro). Lo toma birt-viewer y me lanza el resultado como un PDF a descargar (el reporte). cool no? más información de como se usa desde php desde aqui.

BIRT Designer

Bases de datos

Tanto designer como viewer se pueden conectar a casi cualquier base de datos, en mi caso utilizaré la archi conocida MySQL. Su uso lo hice a través de JDBC (el ODBC de Java) de MySQL, el cual se instala en el lugar que quieras, pero lo debes agregar en el administrador de conectores interno, al momento de crear un DataSource que es indispensable para todo lo demás.

Su creación es simple: botón derecho sobre los DataSource, y eliges Add New Data Source, eliges el tipo JDBC, el nombre, el driver com.jdbc.driver, la url del tipo jdbc:mysql://127.0.0.1/mibasededatos, el usuario y la contraseña.

Explorador de Datos

Birt Data Explorer
Los DataSources son los necesarios para las conecciones a las BDs. Puedes tener varios de ellos.

Los DataSets son los que almacenan las SQL (si es que procede), sus parametros, sus filtros, etc.

Los Report Paramaters son los parametros que le envías al reporte en tiempo de ejecución.

Los Data Cubes son una forma de crear datos cruzados (uso avanzado).

Al comienzo te irás por lo simple, crearás el DataSource, luego el DataSet (sql) y listo. Pero a poco andar querras crear un reporte más complejo y verás que se “hacen chicas” las alternativas del designer y querrás cambiar la sql a tu gusto en tiempo de ejecución. Aunque lo más probable es que exista “the BIRT way” para hacerlo, también es posible cambiar por completo la sql a tu gusto en tiempo de ejecución. Para ello haz de crear un parámetro, digamos parSql, y ahi vendrá la sql que haz construido. Luego seleccionas tu DataSet y cambias de a Scripts, y en el evento BeforeOpen escribes:

this.setQueryText(params["parSql"]);

Esto hará que antes de abrir el DataSet cambiará la sql del mismo por la que le pasas como parametro (desde PHP hay que tener ciertas consideraciones). Si es un script, y se parece mucho a JavaScript, y es porque ES javascript y así puedes contralar muchos aspectos del reporte en tiempo de ejecusión. Incluso se podría dibujar completo el reporte en base a scripts en tiempo de ejecusión. Esto es así ya que el archivo resultante está en formato XML el cual es completamente editable.

Paleta de Herramientas

Birt Paleta de Colores
Como verás en la imagén existen herramientas muy didácticas para crear el reporte. Estas cambian a medida que cambias la página visual de BIRT (Layout para el diseño del detalle, Master Page para el encabezado y pie, Script para escribir codigo, XML para ver la fuente resultante y Preview…obvio :) ).

El diseño se basa en tablas HTML las cuales puedes ir anidando tal cual se hace en DreamWeaver. Bordes, Fuentes, Negritas, Cursivas son de fácil adaptación y uso. Cada una de ellas, incluyendo paginas, encabezados, pies, detalles, etc, tiene propiedades. En cada una de ellas, si procede, también verás esas características (negritas, cursivas, etc) y otras más, como filtrado, enlaces, nombres, etc.

Estas herramientas se trabajan en 4 herramientas básicas:

  • Table: forma del típico reporte con detalle, cabecera de tabla y pie de tabla.
  • List: igual que table, pero sirve para hacer detalles de detalles (o reportes de reportes).
  • CrossTab: ¿te acuerdas de tablas dinámicas de excel? igualito igualito.
  • Chat: para hacer gráficos de barras, lineas o tortas (pie).

Tambien existe el concepto de grupos, con los cuales puedes agrupar por un campo de tu sql. Así, por ejemplo, podrías calcular lo vendido por productos. Los grupos tambien poseen encabezado y pie.

BIRT Viewer

Asumiendo que instalaste bien Viewer, deberás instalar jdbc en el servidor. En mi caso lo instalé en:
ubicaciondetomcat/webapps/birt-viewer/WEB-INF/platform/plugins/org.eclipse.birt.report.data.oda.jdbc/drivers

Suponiendo que está en localhost y bajo el puerto 8080, y que tienes un reporte de nombre mireporte, deberás copiarlo en:
ubicaciondetomcat/webapps/birt-viewer/report

Así, bastará lo siguiente para ver los primeros resultados:
http://localhost:8080/birt-viewer/run?__report=report\mireporte.rptdesign

run es uno de los modos de ejecución el cual permite la ejecución y su visualización directa. __report es uno de los parámetros predefinidos que indica la ubicación del reporte a ejecutar. Existen otros parámetros que modifican la visualización: que la salida sea pdf, html, doc, ppt, etc; cambiar los modos: run, preview, frameset. este último es toda una interfaz web integrada. etc.

Por si aun te quedan dudas, puedes ver un video bastante explicativo el cual me imagino aclara la pelicula.

13 comentarios para “Birt”

  1. Gravatarm79 Dice:

    Que buen programa siempre espere algo similar a dreamweaver, yo soy diseñador gráfico y me interesa cada vez más la programación para sitios webs, onda programación es chino para mi, con este software creo q se me hara más facil el manejo de css, php, html, etc.. ahora estoy aprendiendo Joomla! y se me ha hecho un alibio desarrollar sitios web html, igual paso a modificar templates css y html de joomla en el dreamweaver para la identidad del cliente aunke la modificación no es desde cero sino de un template gratuito, pero este programa lo kiero probar, aunke la instalacion esta media complicada.
    Gracias por el dato Ismael saludos

  2. GravatarIsmael Dice:

    Gracias M79. Los agradecimientos van a Vladimir, autor de este articulo

  3. Gravatarvladimir prieto Dice:

    @m79:

    como dice ismael, gracias.

    un detalle si. según percibo de tus palabras, birt no es para hacer diseñar html ni css. es para hacer reportes tipo pdf, excel, y demases.

    saludos!

  4. Gravatarm79 Dice:

    Ah sorry gracias por la aclaración taba super perdido, ahora cache mejor q es un reporte.

    saben donde abran ejemplos on-line de reportes hechos con birt?
    asi como para ver algo más didactico.

  5. Gravatarvladimir prieto Dice:

    @m79: no he visto ninguno en la página del proyecto. sólo videos demostrativos.

  6. GravatarEstadoBeta » Archivo » La fecha 0000-00-00 de MySql Dice:

    […] o una fecha válida. Después de muchos cabezazos frente al teclado llegué a la conclusión de que Birt (en el fondo es Java el que reclama) se caía con el valor de esta extraña […]

  7. Gravatarmile Dice:

    como hago la conexion entre eclipse birt y una funcion de mi base de datos

  8. Gravatarmile Dice:

    gracias por la ayuda

  9. Gravatarvladimir prieto Dice:

    @mile: lo siento no he trabajado con funciones personalizadas en mysql. imagino (y supongo) que al hacer la conexión en un dataset te aparecerán, ya que aperecen todas las tablas.

    ahora bien, muy superficialmente, no veo la necesidad de funciones personalizadas para hacer consultas (lease SELECTs). a lo mejor te refieres a funciones internas de mysql como las de strings y similares?

    como sea, y hasta donde entiendo, es posible que dichas funciones el jdbc las deje pasar y el mismo recupere solo tuplas (que al fin y al cabo es lo que interesa). tendrías que probar.

  10. Gravatartoño Dice:

    Yo he trabajado extensivamente con esta clase de cosas y te digo que BIRT es muy inmaduro comparado con los grandes (open source) Pentaho y Jasper Server, con los cuales puedes incluso añadir un análisis multidimensional de los datos en los reportes, o crear dashboards, etc.

    Saludos!
    toño.

  11. GravatarFer Dice:

    veo que la conexion a la BD es a traves de drivers, habra alguna forma de cargar un dataset en el xml.rptdesign, o hacer el manejo de la BD con JDO o Hibernate, haciendo uso claro de un framework.

  12. Gravatarvladimir Dice:

    @Fer: aquí encontré algo, no mucho pero de algo sirve.

  13. Gravatarlizardo Dice:

    esta bueno esto pero necesito sabes si alguien ha hecho un reporte en birt con los crosstab programado en java ok me pueden contactar a travesde lizandro.rodriguez@reduc.edu.cu

    se lo agradecere

Deja un comentario

XHTML: puedes usar estas etiquetas: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>