User Tools

Site Tools


wiki:epims4_0m2:developer:epwebreport

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
wiki:epims4_0m2:developer:epwebreport [2008/11/24 15:02]
132.168.73.9 créée
wiki:epims4_0m2:developer:epwebreport [2008/11/25 10:30] (current)
132.168.73.9
Line 1: Line 1:
 ====== Implémentation des rapports ====== ====== Implémentation des rapports ======
 +**[A partir de la RC1]** \\ 
 +Les rapports sont générés à l'aide de la librairie Jasper.
 +
 +
 +===== Architecture =====
 +Les rapports sont gérés par des classes dérivés de //​GenericReportBean//​ (ou dans le cas de rapport "​simple",​ sans paramètres,​ directement par une instance de //​GenericReportBean//​). Ils sont ensuite construit et mis en forme par la classe //​JasperReportFactory//​ qui va, pour cela faire appel aux fonctionnalités de la librairie Jasper.
 +{{:​wiki:​epims4_0m2:​developer:​epw-report-diagramme_classes.png|}}
 +
 +**Fig1 : Diagramme de classes du "​moteur"​ de génération de rapport d'​eP-Web**
 +
 +===== Fonctionnement =====
 +La séquence de la génération d'un rapport est le suivant :
 +  * L'​utilisateur,​ à partir d'une page JSP, lance l'​export.
 +  * La page communique au ReportBean voulu les paramètres nécessaires à la constitution du rapport et lance la méthode export() (ou communication avec un Managed Bean intermédiaire qui transmettras les données au Bean du rapport).
 +  * La méthode export() des ReportBean va, en tout premier lieu, appeler la méthode initExport() qui va permettre de préparer et mettre en forme les paramètres (méthode vide dans le cas de //​GenericReportBean//​).
 +  * Puis une //​JasperReportFactory//​ est créée. la commande d'​export() va lui être passée avec les paramètres suivant :
 +    * //​reportParameters//​ : une map contenant les paramètres du rapport (ex : id d'une étude, modèle d'un spectro, etc...)
 +    * //format// : le format dans lequel devra être construit le rapport : Excel, PDF, HTML (voir les attributs static de //​GenericReportBean//​)
 +    * //​jasperFilePath//​ : le lien complet (dossier et nom du fichier) vers le fichier .jasper de description du rapport.
 +    * //​exporterParameters//​ : une map contenant des paramètres de l'​exporter (ex : Faut-il mettre une feuille par page pour un document excel, noms de ces feuilles)
 +  * La méthode export() de la //​JasperReportFactory//​ va remplir le rapport (en se connectant à la base de donnée) puis vas le faire mettre au format voulu en le passant à la méthode adéquate.
 +  * Une fois le rapport formaté il va être renvoyé sous la forme d'un tableau de byte (//​byte[]//​) qui va être attrapé par le ReportBean et encapsulé dans une réponse HTTP. Le ReportBean envoie cette réponse ainsi qu'un message JSF de succès de l'​opération.
 +{{:​wiki:​epims4_0m2:​developer:​diagramme-seq-report.png|test}}
 +
 +**Fig2 : Diagramme de séquence de la génération de rapport dans eP-Web**
 +
 +===== Intégration d'un nouveau rapport =====
 +Une fois un descripteur de rapport créé (avec [[http://​jasperforge.org/​plugins/​project/​project_home.php?​group_id=83|iReport]] par exemple), Pour l'​intégrer il faut suivre les étapes suivantes :
 +  - Recenser les paramètres nécessaires au rapport. 2 possibilités :
 +    * Si il n'a besoin d'​aucun paramètre pas de nouvelle classe à créer. Il utilisera directement //​GenericReportBean//​.
 +    * Si il a besoin de paramètre. Il va falloir alors :
 +      * créer un ReportBean héritant de GenericReportbean (son nom sera si possible de la forme XXXReportBean).
 +      * dans le constructeur positionner l'​attribut jasperFileName.
 +      * lui donner les attributs et les Getter & Setter adéquats.
 +      * Surcharger la méthode initExport() de //​GenericReportBean//​ pour pouvoir renseigner les paramètres qu'il faut dans reportParameters et si besoin dans exporterParameters. Penser aussi a donner le format voulu et le nom du fichier final (reportFileName).
 +  - Déclarer la classe du rapport dans le fichier faces-managed-beans.xml
 +    * Si c'est un //​GenericReportBean//​ :
 +      * Dans //<​managed-bean-name>//​ donner un nom en rapport avec ce sur quoi va porter le rapport
 +      * Dans //<​managed-bean-class>//​ donner le path de //​GenericReportBean//​
 +      * Ajouter les //<​managed-property>//​ suivantes :
 +        * jasperFileName : le nom du fichier .jasper de description du rapport
 +        * choosedFormat : le format dans lequel sera le rapport (**ATTENTION** a bien utiliser les attributs static de //​GenericReportBean//​)
 +        * reportFileName : le nom du fichier de sortie du rapport. Si rien n'est spécifié ce sera //null//.
 +    * Si c'est une nouvelle classe :
 +      * Dans //<​managed-bean-name>//​ donner le nom de la classe
 +      * Dans //<​managed-bean-class>//​ donner le path de la classe.
 +
 +
  
wiki/epims4_0m2/developer/epwebreport.1227535379.txt.gz · Last modified: 2008/11/24 15:02 by 132.168.73.9