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.
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.
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 iReport par exemple), Pour l'intégrer il faut suivre les étapes suivantes :
Recenser les paramètres nécessaires au rapport. 2 possibilités :
Déclarer la classe du rapport dans le fichier faces-managed-beans.xml