This shows you the differences between two versions of the page.
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 |