Integration BIRT
Contents |
Présentation
BIRT est un système de reporting open source basé sur Eclipse pour les applications web, spécialement celles basés sur Java et J2EE. BIRT possède deux composants principaux: Un designer de rapports basé sur Eclipse, et un composant runtime qu'on peut ajouter à notre application web. BIRT offre aussi un moteur pour les graphes qui vous laisse ajouter des graphes à votre propre application.
Dans cet article nous n'allons pas détailler les fonctionnalités de BIRT surout coté concepteur de rapport, car plein d'exemples sont diponibles sur le site http://www.eclipse.org/birt
Ce qui nous importe c'est de créer un rapport qui se base sur l'Entity Engine d'OFBIZ.
Intégration du plug-in Birt dans eclipse
les étapes d'intégration du plugin Birt dans eclipse
Intégrer BIRT dans un module Néogia
La façon d'intégration de BIRT qui sera présenté n'est surement pas la plus séduisante, mais ça vous donnera un certain controle sur le visualiseur de rapports à travers les filtres d'OFBIZ.
BIRT offre une application web prête à l'emploi, qu'on peut packager dans un module Ofbiz. par exemple un module qui porte le même nom.
Voici les étapes.
- Dans le package téléchargé birt-runtime-2_1_1 vous prenez le fichier birt.war et vous le décompresser avec un outil adéquat le plus naturel serait le Java JAR tool.
- Vous créez un répertoire vide qui s'appelle toujours birt.
- Vous créez un sous répertoire webapp dans le répertoire birt créé précédemment.
- Vous copiez le contenu décompréssé de birt.war dans le répertoire webapp.
- Vous créez un fichier ofbiz-component.xml dans le répertoire racine crée dans la première étape.
- Editer le fichier et vous y mettez le contenu suivant:
<ofbiz-component name="birt"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://www.ofbiz.org/dtds/ofbiz-component.xsd">
<resource-loader name="main" type="component"/>
<webapp name="birt"
title="Birt"
server="default-server"
location="webapp/birt"
base-permission="REPORTING"
mount-point="/birt"/>
</ofbiz-component>
- Maintenant vous avez votre composant BIRT vous navez qu'à le mettre dans le répertoire hot-deploy de Néogia et vous pourriez y accéder à travers l'URL http://localhost:8080/birt/index.jsp. Bien sûr il faut s'assurer que l'utilisateur connecté fait parti du groupe de sécurité "REPORTING"
Si tout marche bien vous aurez un écran qui ressemble à celui ci
Votre premier rapport
dans l'exemple nous allons voir comment générer un rapport qui va nous lister les lignes de stocks du module Facility.
On commence par créer un état vierge dans le designer de BIRT:
La prochaine étape sera la création d'un data source en utilisant le menu contectuel sur l'élément "Sources de données" dans l'explorateur de données. Vous devez faire attention lors de la création de choisir le type "Source de données nécéssitant un script" car nous allons utiliser un script qui fait appel à l'objet delegator de l'entity engine d'OFbiz.
Maintenant on crée un jeu de données ou on va définir les champs de sorties et le script qui va les alimenter.
Dés que le data set "stockDS" est créé on double clique dessus pour faire apparaitre la fenêtre de dialogue pour ses propriétés
Dans la section "champs de sortie" on va définir les champs
Là on va rentrer dans les chose sérieuses et définir les script. en fait le data set possède deux évènement qui nous intéresse "Open" et "Fetch". "Open" sera éxécuté à l'ouverture du data set et "Fetch" à chaque ligne de données. On va commencer par "Open"
vous faite rentrer ce script
delegator = Packages.org.ofbiz.entity.GenericDelegator.getGenericDelegator("default");
items = delegator.findAll("StockItemAndFacility");
totalrows=items.size();
currentrow=0;
Vous devez vous assurer que la liste des événement est sur Open comme sur la figure ci-dessous
on continue par la définition de l'evenement "fetch" Le script suivant doit être entré dans la section de l'évenement 'fetch'
if( currentrow >= totalrows ){
return( false );
}
var item = items.get(currentrow);
row["Emplacement"] = item.get("nFacilityIdName");
row["Article"] = item.get("prdtProductId");
row["Quantité"] = item.get("quantityOnHand");
row["Prix U"] = item.get("unitCost");
currentrow = currentrow + 1; return ( true );
Finalement, on glisse les champs de la dataset sur la ligne détails du rapport. Vous allez voir que les champs de l'entête vont se remplir automatiquement.
Venu le moment de vérité, vous tapez l'URL https://localhost:8443/birt/frameset?__report=stock_item.rptdesign
vous devez avoir un résultat pareil
Conclusion
Ce n'est pas tout, avec BIRT vous pouvez maintenant ajouter des images, des couleurs à votre tableau et même des filtres ou des champs calculé à la manière de Excel. En utilisant des Data source utilisant un script vos rapport seront facilement migrables et aussi vous allez tirez parti de la performance de l'entity engine d'OFbiz et de son cache. Cette solution constitu un change à Jasper reports dans le fait qu'elle supporte plusieurs data sources donc vous pouvez mélanger vos données Néogia avec une feuille Excel ou tout autre base de données.


