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

Both sides previous revision Previous revision
Next revision
Previous revision
wiki:epims4_0m2:developer:epwebreport [2008/11/24 16:50]
132.168.73.9
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. Les rapports sont générés à l'aide de la librairie Jasper.
 +
  
 ===== Architecture ===== ===== 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. 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|}} {{:​wiki:​epims4_0m2:​developer:​epw-report-diagramme_classes.png|}}
-Diagramme de classes du "​moteur"​ de génération de rapport d'​eP-Web 
  
 +**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 : La séquence de la génération d'un rapport est le suivant :
   * L'​utilisateur,​ à partir d'une page JSP, lance l'​export.   * L'​utilisateur,​ à partir d'une page JSP, lance l'​export.
Line 13: Line 17:
   * Puis une //​JasperReportFactory//​ est créée. la commande d'​export() va lui être passée avec les paramètres suivant :   * 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...)     * //​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.+    * //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:​diagramme-seq-report.png|}} 
  
-Diagramme de séquence de la génération de rapport dans eP-Web 
wiki/epims4_0m2/developer/epwebreport.1227541829.txt.gz · Last modified: 2008/11/24 16:50 by 132.168.73.9