III. Intégration BIRT▲
Dans un premier temps, il faut : récupérer l'archive BIRT, personnaliser l'application et enfin la redéployer sur le serveur d'application.
III-A. Extraction de BIRT Runtime▲
Il faut commencer par extraire l'archive birt-runtime-2_3_0.zip dans un fichier temporaire, celle-ci doit contenir l'archive birt.war.
III-B. Intégration de BIRT à Eclipse▲
Démarrez Eclipse, et commencez par vous mettre dans la perspective JAVA EE « Window --> Open Perspective --> Other ».
Ensuite fait, « File --> Import » et sélectionner « web --> war Files ».
Dans la fenêtre d'invitation, sélectionnez l'archive birt.war, donnez un nom au projet « birtV2_3_0 » puis faites « finish ».
Normalement, après l'import de l'archive vous devez avoir une erreur sur le fichier webtemplate.xml présent dans le répertoire WebContent/WEB-INF. Pour la supprimer, remplacer la valeur de xsi:schemaLocation par http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd.
III-C. Déploiement de BIRT▲
Le but ici est de créer un script ANT build.xml qui a le même rôle qu'un makefile pour ceux qui connaissent et permet de déployer :
- Le projet sous forme d'archive ;
- Les rapports sur la plateforme Jboss.
III-C-1. Déclaration du projet BIRT▲
Dans notre projet birtV2_3_0, créer un fichier build.xml à la racine. Pour commencer, déclarer trois propriétés comme ci-dessous.
|
Name |
Value |
Description |
|---|---|---|
|
jboss.server |
Chemin de votre serveur Jboss |
|
|
name |
birtV2_3_0 |
Nom de l'archive |
|
dist |
./dist |
Répertoire temporaire à la racine de votre projet sous Eclipse |
Ensuite, ajouter les cibles :
- clean pour effacer l'archive présente sur Jboss ;
- war pour créer votre archive war ;
- deploy pour le déploiement de votre archive (cible par défaut).
<?xml version="1.0" encoding="UTF-8"?>
<project name="birtV2_3_0" basedir="." default="deploy">
<property name="jboss.server" value="D:/jboss-portal-2.6.5.SP1/server/default"/>
<property name="name" value="birtV2_3_0"/>
<property name="dist" value="./dist"/>
<target name="clean" description="clean">
<!-- DEV -->
<delete file="${dist}/${name}.war" />
</target>
<target name="war" depends="clean">
<!-- DEV -->
<jar jarfile="${dist}/${name}.war" basedir="./WebContent/" />
</target>
<target name="deploy" description="deployement" depends="war">
<!-- JBOSS -->
<delete file="${jboss.server}/deploy/${name}.war"/>
<copy todir="${jboss.server}/deploy" file="${dist}/${name}.war"/>
</target>
</project>Pour finir, pour exécuter le script, il suffit de faire un clic droit sur le fichier build.xml et choisir run as Ant Build.
III-C-2. Utilisation du service Properties▲
Sous Jboss, il existe un service properties qui permet de charger un ensemble de paires clef/valeur utilisables dans n'importe quel fichier présent sur Jboss.
Créer un fichier birt.properties (voir annexe) avec les six clefs comme ci-dessous.
Avec Java, via la méthode statique getProperty(key,value) de la classe System il possible de récupérer ces clefs.
|
Name |
Value |
Description |
|---|---|---|
|
birt.viewer.2.3.0.working.folder |
${jboss.server.home.dir}/data/birt/report |
Répertoire où stocker les.rptdesign |
|
birt.viewer.2.3.0.document.folder |
${jboss.server.home.dir}/data/birt/documents |
Répertoire où stocker les.rptdocument |
|
birt.viewer.2.3.0.image.dir |
${jboss.server.home.dir}/data/birt/report/images |
Répertoire où stocker les images temporaires des rapports |
|
birt.viewer.2.3.0.log.dir |
${jboss.server.home.dir}/log/birt |
Répertoire de log de BIRT |
|
birt.viewer.2.3.0.scriptlib.dir |
${jboss.server.home.dir}/data/birt/scriplib |
Répertoire des scriptlib de BIRT |
|
birt.viewer.2.3.0.resource.path |
${jboss.server.home.dir}/data/birt/resource |
Répertoire contenant les fichiers.properties et rptlibrary |
Nous créerons un répertoire conf dans la racine de notre projet Eclipse dans lequel mettre le fichier « birt.properties ».
Ensuite, nous reporterons ces clefs dans le fichier web.xml présent dans WebContent/WEB-INF au niveau des balises context-param portant le même nom.
Pour faire référence à une clef chargée, il suffit d'utiliser la syntaxe suivante ${myKey} voir exemple ci-dessous.
<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" version="2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/webapp_2_4.xsd">
<display-name>Eclipse BIRT Report Viewer</display-name>
...
<!-- Report engine log level -->
<context-param>
<param-name>BIRT_VIEWER_LOG_LEVEL</param-name>
<param-value>${birt.viewer.2.3.0.log.level}</param-value>
</context-param>
...
</web-app>III-C-2-a. Configuration▲
Il reste à configurer le service properties. Pour cela, il faut éditer le fichier propertiesservice. xml présent dans le répertoire deploy de notre serveur. Cherchez les lignes de code suivantes.
<mbean code="org.jboss.varia.property.SystemPropertiesService" name="jboss:type=Service,name=SystemProperties">et ajoutez un nouvel attribut correspondant à votre fichier « birt.properties ».
<attribute name="URLList">${jboss.server.home.dir}/conf/birt.properties</attribute>Voilà maintenant votre fichier.properties chargera les paires continues dedans à chaque démarrage de JBoss.
Pour finir, ajoutez une cible dans le fichier build.xml pour déployer votre fichier sur JBoss et ajoutez cette dépendance à la cible deploy.
<?xml version="1.0" encoding="UTF-8"?>
<project name="birtV2_3_0" basedir="." default="deploy">
...
<target name="conf">
<!-- DEV -->
<copy todir="${jboss.server}/conf" file="./conf/birt.properties"/>
</target>
<target name="deploy" description="deployement" depends="war,conf">
...
</project>III-C-3. Automatisation du déploiement des reports▲
Nous allons passer maintenant à la partie déploiement des rapports. Normalement la première fois que vous démarrez le Designer de BIRT, vous devez spécifier un workspace , nous nous servirons de ce chemin pour accéder à l'ensemble des rapports à déployer. Il est important quand vous développez vos rapports de respecter l'arborescence comme ci-dessous.
|
Niveau 1 |
Niveau 2 |
Niveau 3 |
Niveau 4 |
|---|---|---|---|
|
workspace |
report |
.rptdesign |
|
|
images |
.jpeg,.png,.bmp |
||
|
resource |
.properties |
||
|
.rptlibrary |
|||
|
.css |
Notez birt.workspace le chemin d'accès au workspace de BIRT et ajoutez-le au script ANT.
<?xml version="1.0" encoding="UTF-8"?>
<project name="birtV2_3_0" basedir="." default="deploy">
<property name="birt.workspace" value="D:/birt-rcp-2_3_0/workspace"/>
<!-- WOKRSPACE -->
<target name="report" description="deploy report">
<copy todir="${jboss.server}/data/birt/report">
<fileset dir="${birt.workspace}/report" />
</copy>
<copy todir="${jboss.server}/data/birt/resource">
<fileset dir="${birt.workspace}/resource" />
</copy>
</target>
<target name="deploy" description="deployement" depends="war,conf,report">
</project>De ce fait, une fois les reports développés, il suffit d'appeler le script ANT avec la cible « report ».
Sous Windows si vous voulez appeler le script ANT avec la cible report, il vous suffit de créer un fichier report.bat avec le contenu suivant :
@echo off
ant -buildfile build.xml report

