Ce gabarit est un modèle de projet Gradle pour la construction d'une application Adélia Crystal Report Engine sous la forme d'un fichier au format ZIP.
Cette construction peut prendre en compte les fichiers Crystal Report .RPT, qui sont soit stockés dans un répertoire du système de fichiers, soit présents sous la forme d'un artéfact au format Zip issu de l'exécution d'un build Adélia par domaines ou composants.
Création d'un projet Adélia ACRPE build
La création du projet s'obtient en décompressant le fichier %ADELIWS%\Build\templates\acrpe application.zip : le répertoire "acrpe application" obtenu peut être déplacé et renommé à volonté.
Le poste de construction de l'application Adélia ACRPE et le poste de build Adélia peuvent être deux postes différents.
Configuration d'un projet Adélia ACRPE build
Après avoir créé un projet, il est nécessaire de le configurer avant de pouvoir l'exécuter. La configuration et l'initialisation d'un projet de build se basent sur les paramètres renseignés dans le fichier gradle.properties, à savoir :
Paramètres généraux
acrpeVersion (obligatoire)
Chaîne alphanumérique représentant le numéro de version du runtime ACRPE inclus dans le ZIP de l'application Adélia ACRPE construite.
version (obligatoire)
Chaîne alphanumérique représentant le numéro de version de l'application. Chaque artéfact construit aura le même numéro de version. On distingue plusieurs types de version :
Les versions release (ou finales) représentant les versions officielles de l'application (ex : 1.0.0),
Les versions snapshot (ou instantanées) représentant les versions en cours de développement de l'application (ex : 1.0.1-SNAPSHOT),
Les versions pre-release (ou release-candidate) représentant les versions candidates à être les versions finales (ex : 1.0.1-RC01).
group (obligatoire)
Chaîne alphanumérique représentant l'identifiant du groupe ou de l'organisation à l'origine du projet. La valeur suit les mêmes règles de nommage que les packages Java (par exemple : com.hardis), et on choisit généralement comme valeur le nom du package principal du projet.
Paramètres de l'application ACRPE
acrpeAppName (optionnel)
Chaîne alphanumérique représentant le nom du fichier ZIP produit. Par défaut, ce fichier a pour nom <nom du répertoire du projet>-<valeur du paramètre version>.zip.
Si ce paramètre est renseigné, le fichier aura pour nom <valeur du paramètre acrpeAppName>-<valeur du paramètre version>.zip.
acrpe.port (optionnel)
Numéro du port d'écoute TCP de l'application. Par défaut, ce paramètre vaut 3007.
acrpe.throttle.limitPerSecond (optionnel)
Nombre maximum de requêtes HTTP entrantes sur une période d'une seconde. Par défaut, ce paramètre indique aucune limite.
acrpe.throttle.limitPerMinute (optionnel)
Nombre maximum de requêtes HTTP entrantes sur une période d'une minute Par défaut, ce paramètre indique aucune limite.
acrpe.throttle.limitPerHour (optionnel)
Nombre maximum de requêtes HTTP entrantes sur une période d'une heure. Par défaut, ce paramètre indique aucune limite.
acrpe.throttle.limitPerDay (optionnel)
Nombre maximum de requêtes HTTP entrantes sur une période d'un jour. Par défaut, ce paramètre indique aucune limite.
acrpe.throttle.limitPerWeek (optionnel)
Nombre maximum de requêtes HTTP entrantes sur une période d'une semaine. Par défaut, ce paramètre indique aucune limite.
rptFiles.defaultDir (optionnel)
Sous-répertoire par défaut de stockage des fichiers Crystal report (.RPT) stockés dans le système de fichiers et définis par une dépendance Gradle de type prtFiles. Le sous-répertoire est relatif au sous-répertoire de configuration "acrpe" à la racine de l'archive construite. Ce paramètre a une valeur alphanumérique. Par défaut, ce paramètre vaut "rptFiles".
rptArtifacts.defaultDir (optionnel)
Sous-répertoire par défaut de stockage des artéfacts d'objets Adélia de types CrystalReportsCloud ou CrystalReportsWeb (issus d'un build Adélia par domaines ou composants) définis par une dépendance Gradle de type rptArtifacts. Le sous-répertoire est relatif au sous-répertoire de configuration "acrpe" à la racine de l'archive construite. Ce paramètre a une valeur alphanumérique. Par défaut, ce paramètre vaut "rptZip".
acrpe.delegatePrinting (optionnel)
Permet de déléguer l'impression à l'utilitaire hawrite64. Dans ce mode de délégation l'état est en premier lieu exporté dans un un fichier au format PDF, puis ce dernier est imprimé par l'utilitaire hawrite64 et son module pdfium.
La valeur "Y" permet de déléguer l'impression, et la valeur "N", de ne pas la déléguer. Par défaut : "N".
Paramètres des gestionnaires de référentiels
L'utilisation des référentiels d'artéfacts lors de l'exécution d'un build Adélia ACRPE se fait lors des phases suivantes :
Dans la phase de création du fichier ZIP, le build utilise un référentiel pour télécharger (référentiel de download) les artéfacts nécessaires à la construction de l'artéfact de l'application ACRPE. Ces artéfacts sont :
les artéfacts du runtime ACRPE nécessaires à l'exécution d'une application Adélia ACRPE,
vos propres artéfacts d'objets Adélia composant l'application ACRPE : ceux-ci sont issus de l'exécution d'un projet Adélia build.
Dans la phase finale de stockage de l'artéfact construit, il est possible de définir un référentiel pour transférer (référentiel d'upload) cet artéfact versionné. En fonction du type de version (release ou snapshot), il est possible de définir le référentiel associé.
downloadArtifactsReleaseRepo (obligatoire)
URL d'accès au référentiel de download des artéfacts dépendants nécessaires au build. Ce référentiel doit permettre d'accéder :
aux artéfacts du référentiel Hardis (runtime Adélia ACRPE),
à vos propres artéfacts d'objets Adélia composant votre application ACRPE. Ces artéfacts sont ceux en version release si vous effectuez un build de votre application ACRPE en version release.
Par défaut, et uniquement à titre d'exemple, la valeur de ce paramètre est l'URL du référentiel fourni par Hardis.
A la place, dans votre Nexus, il faut créer votre propre référentiel privé pour qu'il soit un regroupement du référentiel Hardis et de votre référentiel privé en version release. En fonction de votre propre configuration du Nexus utilisé pour vos projets Adélia build, il s'agit soit du référentiel créé par défaut par Nexus et nommé "Releases", soit un autre référentiel "hosted repository" ayant une "Repository policy" à "Release" et créé par vos soins).
Pour cela, après connexion à votre Nexus, à partir de la vue "Repositories", il faut ajouter un nouveau référentiel défini comme groupe des référentiels décrits plus haut :
- Ouvrez la fenêtre de définition d'un référentiel via la commande "Add repository group",
- A partir de la section "Available Repositories", ajoutez, dans la section "Ordered Group Repositories", le référentiel privé qui est proxy du référentiel Hardis, ainsi que le référentiel privé "hosted", qui sert de stockage à vos artéfacts en version release.
Pour finir, remplacez la valeur du paramètre downloadArtifcatsReleaseRepo par l'URL "Repository Path" du référentiel de groupe nouvellement créé.
downloadArtifactsReleaseRepo.username / downloadArtifactsReleaseRepo.password (optionnels)
Profil utilisateur et mot de passe utilisés pour la connexion au référentiel de download.
Par défaut et à titre d'exemple, ces identifiants sont ceux du référentiel de download Hardis, mais il faut les remplacer par ceux de votre propre référentiel privé de groupe (cf. downloadArtifactsReleaseRepo ci-dessus). Comme on accède à ce référentiel en lecture seule, Nexus autorise une connexion anonyme : dans ce cas, laissez les champs "username" et "password" non renseignés.
downloadArtifactsSnapshotRepo (optionnel)
URL d'accès au référentiel de download des artéfacts dépendants nécessaires au build. Ce référentiel doit permettre d'accéder :
aux artéfacts du référentiel Hardis (runtime Adélia ACRPE). Ces artéfacts ne sont disponibles qu'en version release,
à vos propres artéfacts d'objets Adélia composant votre application ACRPE. Ces artéfacts sont ceux de la version snapshot si vous construisez votre application ACRPE en version snapshot.
Dans votre Nexus, il faut créer votre propre référentiel privé pour qu'il soit un regroupement du référentiel Hardis et de votre référentiel privé en version snapshot. En fonction de votre propre configuration du Nexus utilisé pour vos projets Adélia build, il s'agit soit du référentiel créé par défaut par Nexus et nommé "Snapshots", soit un autre référentiel "hosted repository" ayant une "Repository policy" à "Snapshot" et créé par vos soins).
Pour cela, après connexion à votre Nexus, à partir de la vue "Repositories", il faut ajouter un nouveau référentiel défini comme groupe des référentiels décrits plus haut :
Ouvrez la fenêtre de définition d'un référentiel via la commande "Add repository group",
A partir de la section "Available Repositories", ajoutez dans la section "Ordered Group Repositories" le référentiel privé qui est proxy du référentiel Hardis, ainsi que le référentiel privé "hosted", qui sert de stockage à vos artéfacts en version snapshot.
Pour finir, remplacez la valeur du paramètre downloadArtifcatsSnapshotRepo par l'URL "Repository Path" du référentiel de groupe nouvellement créé.
downloadArtifactsSnapshotRepo.username / downloadArtifactsSnapshotRepo.password (optionnels)
Profil utilisateur et mot de passe utilisés pour la connexion au référentiel de download. Ce profil doit permettre d'accéder à votre propre référentiel privé de groupe (cf. downloadArtifactsSnapshotRepo ci-dessus). Comme ce référentiel est accédé en lecture seule, Nexus autorise une connexion anonyme : dans ce cas, laissez les champs "username" et "password" non renseignés.
uploadArchivesReleaseRepo (optionnel)
URL d'accès au référentiel d'upload utilisé pour le stockage de l'artéfact ZIP construit avec une version release. Ce référentiel permettra de mettre à disposition les artéfacts en version finale.
uploadArchivesReleaseRepo.username / uploadArchivesReleaseRepo.password (optionnels)
Profil utilisateur et mot de passe utilisés pour la connexion au référentiel d'upload des artéfacts en version release.
uploadArchivesSnapshotRepo (optionnel)
URL d'accès au référentiel d'upload utilisé pour le stockage de l'artéfact ZIP construit avec une version snapshot. Ce référentiel permettra de mettre à disposition les artéfacts en cours de développement.
uploadArchivesReleaseRepo.username / uploadArchivesReleaseRepo.password (optionnels)
Profil utilisateur et mot de passe utilisés pour la connexion au référentiel d'upload des artéfacts en version snapshot.
Configuration des composants de l'application Adelia ACRPE à builder
Ces composants sont les artéfacts d'objets Adélia issus de l'exécution d'un projet Adélia build, soit les objets Adélia issus d'une génération interactive.
Il est nécessaire de les déclarer dans le projet Adélia ACRPE build pour qu'ils soient ajoutés dans le ZIP produit.
Pour cela :
Ouvrez le fichier build.gradle avec un éditeur texte, puis,
Dans la section "dependencies" (Declare your artifacts needed to build the ACRPE application here), déclarez vos artéfacts.
Artéfacts issus de build
Un artéfact (de type CrystalReportsCloud ou CrystalReportsWeb) est inclus dans le sous-répertoire de configuration "acrpe" de l'archive produite (le sous-répertoire par défaut est la valeur de la propriété rptArtifacts.defaultDir, soit "rptZip" si elle n'est pas renseignée).
Ces artéfacts doivent être déclarés en insérant l'instruction suivante :
rptArtifacts group: '<nom du groupe de l'artéfact>', name : '<nom du fichier de l'artéfact sans la version>', version: '<numéro de version de l'artéfact>', ext: 'zip'
Il est possible de forcer un sous-répertoire de destination des artéfacts déclarés en insérant l'instruction suivante :
rptArtifacts (group: '<nom du groupe de l'artéfact>', name : '<nom du fichier de l'artéfact sans la version>', version: '<numéro de version de l'artéfact>', ext: 'zip') {
ext.destinationDir = 'mySubDirForZip'
}
Exemple de déclaration d'artéfact issu d'un build par domaine :
Pour l'artéfact de type CrystalReportsCloud dont le nom de fichier est myapp-app_area_1_crystalreportscloud-1.1.0-SNAPSHOT.jar, il faut saisir :
rptArtifacts group:'my.company', name : 'myapp-app_area_1_crystalreportscloud', version: '1.1.0-SNAPSHOT', ext: 'zip'.
La valeur de group est celle du paramètre "group" dans le fichier gradle.properties du projet Adélia build ayant construit l'artéfact.
Exemple de déclaration d'artéfact issu d'un build par composant à destination du sous-répertoire 'rptCloudEvent' :
Pour l'artéfact de type CrystalReportsCloudEvent dont le nom de fichier est prefix_compo_1_crystalreportscloudevent-1.1.0-SNAPSHOT.jar, il faut saisir :
rptArtifacts (group:'my.company', name : 'prefix_compo_1_crystalreportscloudevent', version: '1.1.0-SNAPSHOT', ext: 'zip') {
ext.destinationDir = 'rptCloudEvent'
}
La valeur de group est celle du paramètre "groupId" du composant dont est issu l'artéfact.
Artéfact Zip et propriété FromDirs
Il est possible d'indiquer à l'ACRPE les sous-répertoires à scruter dans le fichier Zip de l'artéfact. Pour cela, il faut déclarer l'artéfact en insérant l'instruction suivante :
rptArtifacts (group: '<nom du groupe de l'artéfact>', name : '<nom du fichier de l'artéfact sans la version>', version: '<numéro de version de l'artéfact>', ext: 'zip') {
ext.fromDirs = ['SearchRPTIntoZipfromThisSubDir1', 'SearchRPTIntoZipfromThisSubDir2/morePreciselyHere']
}
La propriété "formDirs" contient la liste des sous-répertoires à scruter.
Objets Adélia
Pour packager les objets Adélia (les fichiers .RPT) issus d'une génération interactive dans l'archive construite, il faut insérer l'instruction suivante :
rptFiles fileTree('<Chemin de génération des objets Adélia>')
Le chemin peut être absolu (par exemple : 'C:/my/rpt/generation/directory') ou relatif par rapport au répertoire du projet de build gradle (par exemple : './my/rpt/generation/subDirectory') .
L'ensemble des objets contenus dans ce répertoire (ainsi que les sous-répertoires) seront copiés dans le sous-répertoire de configuration "acrpe" de l'archive produite (le sous-répertoire par défaut est la valeur de la propriété rptFiles.defaultDir, soit "rptFiles" si elle n'est pas renseignée).
Il est possible de forcer un sous-répertoire de destination des objets déclarés en insérant l'instruction suivante :
rptFiles (fileTree('<Chemin de génération des objets Adélia>')) {
ext.destinationDir = 'mySubDirForRptFiles'
Fichiers de paramétrage de l'application Adélia ACRPE à builder
Par défaut, un certain nombre de fichiers de configuration sont livrés avec ce gabarit. Ces fichiers sont décrits dans le tableau suivant :
Nom du fichier | Chemin dans l'archive construite | Chemin dans le projet Adelia AMBSS build | Commentaire |
ACRPE.config | ZIP\acrpe\ACRPE.config | <projet ACRPE build>\templates\ACRPE.config |
Ce fichier de configuration est automatiquement produit lors de l'exécution du build Gradle du projet à partir des paramètres du fichier gradle.properties (acrpe.port, acrpe.throttle.*) et des déclarations de dépendances de type rptFiles et rptArtifacts dans le fichier build.gradle.
Exécution d'un projet Adelia ACRPE build
Liste des tâches Gradle du build Adélia ACRPE
build
Tâche de construction de l'artéfact ZIP de l'application. Celui-ci est placé dans le sous-répertoire "build\distributions" du projet de build.
clean
Tâche permettant de supprimer les objets créés lors de l'exécution de la tâche build (les sous-répertoires "build" et "acrpe" sont supprimés).
publish
Cette tâche permet de transférer l'artéfact construit dans le référentiel d'upload.
Il est nécessaire de renseigner la clé uploadArchivesReleaseRepo ou uploadArchivesSnapshotRepo en fonction du type de version de l'artéfact.
publishToMavenLocal
Cette tâche permet de transférer l'artéfact construit dans le référentiel local Maven de la machine (répertoire %USERPROFILE%\.m2).
Structure de l'archive produite
L'archive personnalisée ZIP a la structure suivante :
- Répertoire "bin" : contient un script pour lancer l'application ainsi que le runtime de l'ACRPE,
- Répertoire "acrpe" : contient le fichier de configuration ACRPE.config (permettant d'externaliser la configuration de l'application). De plus, en fonction de la configuration des dépendances Gradle (rptFiles et/ou rptArtifacts), ce répertoire peut contenir des sous-répertoires contenant les binaires des fichiers Crystal Report à exécuter (par défaut les répertoires "rptFiles" et "rptZip").
Scripts de démarrage
- Le script startup.bat, permettant de lancer l'ACRPE en mode console, est automatiquement généré dans le sous-répertoire "bin" de l'archive. Il permet de lancer l'application console ACRPE_console.exe avec l'option "-cfgdir", qui pointe vers le fichier de configuration ACRPE.config se trouvant dans le sous-répertoire "acrpe". Ce script se lance sans paramètres.
Le script startup_x86.bat, permettant de lancer l'ACRPE en mode console, est automatiquement généré dans le sous-répertoire "bin" de l'archive. Il permet de lancer l'application console ACRPE_console_x86.exe avec l'option "-cfgdir", qui pointe vers le fichier de configuration ACRPE.config se trouvant dans le sous-répertoire "acrpe". Ce script se lance sans paramètres.
Le script startup_x64.bat, permettant de lancer l'ACRPE en mode console, est automatiquement généré dans le sous-répertoire "bin" de l'archive. Il permet de lancer l'application console ACRPE_console_x64.exe avec l'option "-cfgdir", qui pointe vers le fichier de configuration ACRPE.config se trouvant dans le sous-répertoire "acrpe". Ce script se lance sans paramètres.