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