OSBI.FR - Open Source Business Intelligence

BIRT 2.5.2 dans Pentaho 3.5.x (et 3.6)

Il y a presque un an (en Septembre 2009), j’expliquai ici-même la procédure à suivre pour publier des rapports Eclipse BIRT sur un serveur Pentaho (BIRT 2.3.1 & 2.5.0 dans Pentaho 3.0).

Certains d’entre vous (j’en connais… 😉 ) ont essayé d’utiliser BIRT v2.5.2 dans Pentaho 3.5 (ou 3.0) et ont rencontré un problème se présentant sous l’aspect d’une belle exception Java, empêchant tout fonctionnement des rapports :

Voici ici l’explication du bug et surtout un fichier jar qui permet de fixer le problème. (j’ai déjà mis ceci en ligne sur le forum de Pentaho début Juin: http://forums.pentaho.org/showthread.php?t=75732&highlight=BIRT)

Quelques explications :

En creusant le problème (recherche de l’exception Java dans Google), on se rend compte assez rapidement que plusieurs autres projets open source référencent la même erreur, notamment JBoss: https://jira.jboss.org/browse/JBIDE-6182

La cause est assez simple, il suffit de consulter le fichier diff qui permet de corriger le bug sur la servlet JBoss :

En fait, un refactoring a été fait entre les versions 2.5.1 et 2.5.2 de BIRT, notamment la création d’une interface java IRunnable, qui doit désormais être passée en paramètre de la méthode createGetParameterDefinitionTask()

Il faut donc effectuer le même correctif dans les librairies internes de Pentaho pour corriger le pb !

Mise en place du correctif :

La log Tomcat du serveur Pentaho nous permet de trouver dans quelle librairie Java est appelée la méthode createGetParameterDefinitionTask :

java.lang.NoSuchMethodError: org.eclipse.birt.report.engine.api.IReportEngine.createGetParameterDefinitionTask(Lorg/eclipse/birt/report/engine/api/IReportRunnable;)Lorg/eclipse/birt/report/engine/api/IGetParameterDefinitionTask;
at org.pentaho.platform.plugin.action.eclipsebirt.BIRTReportComponent.executeAction(BIRTReportComponent.java:251)
 at org.pentaho.platform.engine.services.solution.ComponentBase.execute(ComponentBase.java:463)
 at org.pentaho.platform.engine.services.runtime.RuntimeContext.executeComponent(RuntimeContext.java:1331)
 at org.pentaho.platform.engine.services.runtime.RuntimeContext.executeAction(RuntimeContext.java:1298)
/* etc.... */

Le problème est donc situé dans la méthode executeAction de la classe Java org.pentaho.platform.plugin.action.eclipsebirt.BIRTReportComponent

Une recherche dans les sources de Pentaho (svn://source.pentaho.org/svnroot/bi-platform-v2/) nous indique que la librairie java correspond au fichier JAR : pentaho-bi-platform-plugin-actions-3.5.2.stable.jar

La correction à effectuer dans la classe Java BIRTReportComponent est la suivante :

/*Ajout d'une nouvelle déclaration dans les imports*/
import org.eclipse.birt.report.engine.api.IRunnable;
 
/*Suppression de la ligne 253 ci-dessous */
parameterDefinitionTask =  BIRTReportComponent.reportEngine.createGetParameterDefinitionTask(design);
 
/* Remplacement par la ligne suivante */
parameterDefinitionTask =  BIRTReportComponent.reportEngine.createGetParameterDefinitionTask((IRunnable)design);

Patchs correctifs

Vous pouvez télécharger ci-dessous le(s) fichier(s) jar recompilés qui permettront de faire tourner des rapports BIRT 2.5.2 dans les dernières versions du serveur Pentaho.

Il vous suffira de renommer le fichier *.zip en *.jar avant sa copie dans le répertoire ..\biserver-ce\tomcat\webapps\pentaho\WEB-INF\lib

Correctif pour Pentaho 3.5.x

Correctif pour Pentaho 3.6


Rapport et Xaction de test

Je vous propose également le téléchargement d’une Xaction et d’un rapport BIRT 2.5.2 pour vérifier le bon fonctionnement (dézipper le fichier ci-dessous dans le répertoire \steels-wheels\reports par exemple) :

Il s’agit d’un Listing Clients s’appuyant sur la base de données SampleData… (les habitués connaissent…)

N‘oubliez pas de copier le Driver JDBC hsqldb dans \pentaho-solutions\system\BIRT\plugins\org.eclipse.birt.report.data.oda.jdbc_2.5.2.v20100205 !

Note

J’entends déjà des personnes qui vont dire : « Ouh là, c’est un peu compliqué tout ça, pourquoi les gars de chez Pentaho ne gèrent-ils pas mieux leurs sources pour que les librairies de BIRT (ou Jasper) soient à jour ? »

Réponse :

  • Parce que ça n’est (sûrement) pas prioritaire chez Pentaho ! N’oublions pas que Pentaho propose son propre moteur de reporting (Pentaho Reporting), et que BIRT et Jasper sont considérés comme des concurrents 🙂
  • Parce que c’est déjà pas si mal d’avoir en natif une plate-forme OSBI qui nous permet de gérer 3 moteurs de reporting (Jasper, BIRT, Pentaho) et ceci avec une intégration des composants dans Pentaho Design Studio

Cependant, Pentaho dispose d’une très belle carte dans son jeu qui va bien nous simplifier la vie d’ici peu…

En effet, depuis Pentaho 3, la plate-forme est prévue pour être enrichie de façon simple, sans modification du code du noyau de la plate-forme.

Plusieurs projets communautaires s’appuient déjà sur cette architecture dite « architecture en forme de plugin » : Pentaho CDF, Pentaho Analysis Tool, …

La communauté Pentaho a déjà prévu de migrer les librairies de BIRT sous forme de plugin Pentaho v3, les mises à jour en seront grandement simplifiées et plus accessibles.

Cette capacité de la plate-forme Pentaho à être enrichie constitue un énorme atout par rapport aux plates-formes concurrentes: c’est un réel gage de stabilité et de modularité, notamment lors des montées de versions (aussi bien de Pentaho que des composants open source « émulés ») !

J’avoue clairement ici que c’est une des (multiples) raisons pour laquelle je considère Pentaho comme une des plates-formes OSBI la plus intéressante.

Sujet du prochain post :

Mise en place de rapports croisés (« cross tabs ») dans JasperReports, Eclipse BIRT et Pentaho Reporting …

https://jira.jboss.org/secure/attachment/12333667/jboss-birt2_5_2.diff

8 Comments

  1. bonjour ,
    moi je voudrai publier un rapport crée sur BIRT2.6 dans un serveur PENTAHO 3.6 ?

    cordialement

  2. Bonjour,

    merci pour ce tutoriel qui a le mérite d’être à la fois complet et clair. Cependant, j’utilise Birt 2.5 sur pentaho 3.6, j’ai donc mis à jour le runtime birt et récupérer le jar ci-dessus de la version 3.6 et j’ai une erreur au lancement de l’export excel. PDF et html marchent mais l’export xls me déclenche une exception plutôt inquiétante. Est-ce parce que le jar développé ne le prends pas en compte ou est-moi qui ait fait une fausse manipulation?
    Merci à vous.

    Erreur :

    The Pentaho BI Platform reported an error while running an action sequence

    Possible Causes:
    RuntimeContext.ERROR_0017 – [fr_18] Activity failed to execute
    Action Sequence:BIRT-2.5.2.xaction
    Execution Stack:
    EXECUTING ACTION: BIRT (BIRTReportComponent)
    Loop Index (1-based):0
    Error Time:Wednesday, October 20, 2010 12:39:07 PM CEST
    Error Type:ActionExecutionException
    Session ID:joe
    Instance Id:4457983e-dc36-11df-8f3f-15cf5286f1f0
    Action Class:BIRTReportComponent
    Action Description:BIRT
    …….

  3. En effet, l’export XLS pose pb, il faudrait debugger et corriger les librairies en question (pentaho-bi-platform-plugin-actions-3.6.jar)

    De mon côté je préfère désormais nettement l’intégration directe du BIRT Viewer dans Pentaho, ce qui évite ce genre de souci.
    Un guide de mise en place est disponible sur le blog technique d’ATOL CD :

    http://blog.atolcd.com/?p=582

  4. bonjour sylvain ,
    j’ai fait le test avec informix comme SGBD , mais ca genere des erreurs de librairies.
    Moi aussi je prefere nettement la solution d’integrer le BIRT viewer , mais on sera privé de toute les fonctionnalités que fourni Pentaho ( envoi par mail , scheduler, archivage…)
    est ce possible , avec cette solution , de redéfinir à nouveau ces fonctionnalités en créant des Xactions??
    cordialement

  5. Bonjour Omar, intégrer le BIRT Viewer va nécessiter une modification du code interne de Pentaho pour le mailing, l’archivage serveur et le scheduler…
    Très dangereux si on veut pouvoir maintenir la plate-forme et la faire évoluer (à moins de développer un plugin spécifique, ce qui risque d’être long)

    Personnellement je conseille à partir de cette année d’utiliser le moteur de reporting de Pentaho qui va bientôt arriver en v4 et qui aura rattrapé BIRT et Jasper…
    En effet, Pentaho Report Designer permet une intégration complète au niveau des sources de métadonnées et ETL, et tout fonctionne parfaitement côté archivage, mailing, planifications

    a+

  6. D’accord avec toi , le seul soucis , c’est que PRD ne permet pas de générer du texte en Arabe(right to left) , cet évolution est toujours en TODO liste , je sais pas est ce que cette nouvelle version de PRD va fournir la solution.

    cdt,

Les commentaires sont fermés.