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.

Mestinon For Sale Septilin No Prescription Buy Abana No Prescription Buy Online Avodart Buy Himcolin Online Hytrin For Sale Levitra No Prescription Buy Proscar No Prescription Buy Online Lopid Buy Zebeta Online Azulfidine For Sale Karela No Prescription Buy Clomid No Prescription Buy Online Loxitane Buy Actoplus Met Online Capoten For Sale Celebrex No Prescription Buy Retin-A No Prescription Buy Online Prednisone Buy Levitra Online Prednisone For Sale Tricor No Prescription Buy Tramadol No Prescription Buy Online Lamisil Buy Inderal Online

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.

24 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

  14. GravatarYen Dice:

    Hola, está interesante tu POST… Una pregunta:

    Cuando haces this.setQueryText(params[”parSql”]); en Script > beforeOpen , por donde pasas el valor parSql ???

    Yo tengo una aplicación en PHP conectada con el BIRT, e intenté pasarle en parSql la consulta SQL completa…y hacer eso en el beforeOpen pero no me funcionó…

    Espero tu ayuda…
    Saludos ^.^

  15. GravatarYen Dice:

    Cualquiera que pueda ayudarme por favor contactarme en: yenny.villalba@gmail.com

    Saludos!!

  16. Gravatarvladimir prieto Dice:

    @Yen:

    params significa que es un parámetro del reporte. es decir, debes crear un parámetro de reporte llamado “parSql” (sin las comillas claro) con el botón derecho sobre la sección “Repor Parameters”. adicionalmente, yo lo dejo como “hidden” “is required” y “do not echo input”.

    luego desde tu aplicación PHP debes llamarla como se explica aqui.

    con eso y el comando que dices en el lugar que dices debiese funcionar.

  17. GravatarYen Dice:

    @vladimir prieto:

    Gracias por responder Vladimir.
    Exactamente así lo estoy haciendo =S fíjate
    $parSql = ConsultaSQL_que_no_colocaré_por_simplicidad_;-);
    $fname_html = “C:/Reportes/BIRT_Reportes/file.rptdesign”;
    $dest = “http://localhost:8080/birt-viewer/frameset?__report=”;
    $dest .= $fname_html . “&parSql=” . urlencode($parSql);

    Y en el file.rptdesign tengo un único parámetro llamado parSql,
    en el beforeOpen de la sección Script hice: this.setQueryText(params[”parSql”]);

    Pero no me funciona aún :’( Debo dejar en blanco la sección Query dentro de la configuración del DataSet??? Es lo único que se me ocurre…
    Y luego como accedo al valor que me devuelve la consulta??? Yo lo estoy usando como [return] dentro de la tabla, donde return es lo que me devuelve la consulta SQL, por ejemplo:
    SELECT columna FROM tabla AS return (…) ;

    Gracias por la ayuda…
    Espero otra respuesta :)

  18. GravatarMary Dice:

    Una consulta tengo problemas para visualizar un reporte hecho en BIRT sale como cuando cuando no se puede abrir una pagina web. Mi base de datos es slqserver 2005. Primea vez q veo este tipo de reportes. No se si hay algun puerto q deba habilitar unos dicen el 8080 lo hice pero nada. Tengo 2 servidores uno de aplicaciones y uno de Base de datos.
    Si alguien puede ayudarme le estare muy agradecida.

  19. Gravatarvladimir prieto Dice:

    @Mary:

    1° te sugiero que veas la documentación de instalación de BIRT. es algo compleja.

    en ella verás que debes instalar un servidor web como Tomcat (el que yo usé). por ello es que debes direccionar tu URL a la dirección de la configuración de Tomcat. si usaste el puerto 8080, pues ese debes usar, sino deberás ver/configurar un nuevo puerto para Tomcat.

  20. Gravatarfernando Dice:

    Ayuda, necesito ver si alguien sabe cual sera el problema con la visualización de los reportes de BIRT en un servidor con un SO CentOS, ya que al ejecutarlos en diseño con eclipse me muestra datos diferentes a los del servidor.
    Si alguien me puediera ayudar se loa gardeceria mucho.
    Saludos

  21. Gravatarvladimir prieto Dice:

    @fernando:

    super extraño tu problema y los datos que entregas son super generales. pero intenta revisar lo siguiente (ordenados de por obvios):

    - los datos entre tu equipo (eclipse) son los mismo que en el servidor?
    - las versiones de BIRT (designer y viewer) son las mismas?
    - las versiones del conector de jdbc son las mismas? que BD estás usando?

  22. GravatarAnkhia Dice:

    Hola, estoy empezando a trabajar con BIRT, sin embargo, no he logrado hacer un cross tab, he buscado muchisimo pero no hay nada que me ayude mucho…
    Alguien me puede decir donde puedo encontrar un ejemplo de cross tab, ojala no tan basico, sino bien explicadito… o alguien conoce bien la forma en que un cross tab se usa o se hace…
    De antemano Muchas gracias … Lo necesito bastante ojala me puedan ayudar

  23. Gravatarelnefilim Dice:

    Hola Empeze a trabajar con birt y la verdad lo unico que logre es algo muy simple desde el plugin dentro de java, y para verlo lo vi desde el pre-visualizador y arrojandolo en la carpeta del runtime de birt dentro del tomtac.

    Podrian decirme como hago para deployarlo junto con mi aplicacion javaweb? Lei por ahi que tengo que crear una carpeta platform y dentro una carpeta configuracion y plugin mas todas las lib (dentro de lib obvio), eso lo hice pero no se como llamarlo.

    Podrian darme una mano? gracias y saludos

  24. GravatarJinete Dice:

    Hola a todos.

    Este año hago mi proyecto de fin de carrera y he elegido un egenrador de informes con Java + BIRT utilizando Eclipse. Este tema es nuevo para mí. Hoy mismo he empezado a estudiar un poco el tema y parece bastante interesante. Vladimir, he visto que eres un auténtico experto en el tema, jeje! Me gustaría estar en contacto contigo por si me surgen dudas y saber si me podría echar una mano si me estanco en algún momento…

    Un saludo y mil gracias por adelantado!!

Deja un comentario

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