Téléchargement des produits


Version anglaise


 

La configuration d'Apache FreeMarker se fait à partir du fichier freemarker.properties.

Pour pouvoir faire fonctionner FreeMarker avec vos propres templates, cette configuration est obligatoire.


La première étape consiste à récupérer un exemplaire de ce fichier. Consultez la page MergeTransformMicroService pour plus de détails.

Ce fichier est un fichier .properties Java (syntaxe clé = valeur).


La seconde étape consiste à modifier ou renseigner les clés en fonction des besoins.

La seule clé qui doit être obligatoirement modifiée est la clé "template_loader", permettant de définir le chargeur de templates.


Les clés du fichier freemarker.properties

Clé

Description

template_loader


Chargeur de template.

Valeur par défaut :

freemarker.cache.MultiTemplateLoader( \

[com.hardis.adelia.mergedocengine.freemarker.conf.ClassTemplateLoader(com.hardis.adelia.mergedocengine.ProcessTemplate.CLASS_FOR_OBJECT_BUILDER_EXPRESSION, "/com/hardis/adelia/mergedocengine/freemarker/lib")])


Le caractère "\" indique un saut de ligne dans la valeur d'une clé.


Il faut rajouter votre propre chargeur au chargeur par défaut de l'APE.

Vous avez à votre disposition plusieurs types de chargeur, suivant le format de livrable de l'ensemble de vos templates, à savoir :

    • com.hardis.adelia.mergedocengine.freemarker.conf.FileTemplateLoader : Vos templates et vos fichiers de ressources (fichiers images, fichiers polices de caractères, etc.) sont dans un répertoire du système de fichiers ;

    • com.hardis.adelia.mergedocengine.freemarker.conf.ClassTemplateLoader : Vos templates et vos fichiers de ressources (fichiers class Java, fichiers images, fichiers polices de caractères, etc.) sont dans un fichier au format JAR accessible à partir du CLASSPATH Java ;

    • com.hardis.adelia.mergedocengine.freemarker.conf.ZipFileTemplateLoader : Vos templates et vos fichiers de ressources (fichiers images, fichiers polices de caractères, etc.) sont dans un fichier au format ZIP.


Chargeur com.hardis.adelia.mergedocengine.freemarker.conf.FileTemplateLoader

Les paramètres sont les suivants :

Nom

Type

Description

Obligatoire

baseDir

String

Chemin absolu ou relatif du répertoire contenant les templates. Si le chemin est relatif, alors il est relatif au répertoire de lancement de l'APE.

O

disableCanonicalPathCheck

Boolean

Désactive les contrôles de sécurité sur le chemin de recherche déduit du template, ce qui empêche le chargeur de chercher des templates en dehors du répertoire baseDir. Si vous voulez que les liens symboliques pointant hors du répertoire de modèles fonctionnent, vous devez désactiver cette fonctionnalité.

N (valeur par défaut : False)


Par exemple, si vos templates utilisateur sont dans les répertoires "c:\billingTemplates" et "c:\reportingTemplates" :

template_loader=freemarker.cache.MultiTemplateLoader( \ 

[com.hardis.adelia.mergedocengine.freemarker.conf.FileTemplateLoader(java.io.File ("c:/billingTemplates")), \ 

com.hardis.adelia.mergedocengine.freemarker.conf.FileTemplateLoader(java.io.File ("c:/reportingTemplates"), true), \ 

com.hardis.adelia.mergedocengine.freemarker.conf.ClassTemplateLoader(com.hardis.adelia.mergedocengine.ProcessTemplate.CLASS_FOR_OBJECT_BUILDER_EXPRESSION, "/com/hardis/adelia/mergedocengine/freemarker/lib")]) 


Chargeur com.hardis.adelia.mergedocengine.freemarker.conf.ClassTemplateLoader 

Les paramètres sont les suivants :

Nom Type Description Obligatoire
resourceLoaderClass Java.lang.Class Classe Java permettant de définir le chargeur de classes utilisé pour la recherche d'un template. O (valeur initiale : com.hardis.adelia.mergedocengine.ProcessTemplate.CLASS_FOR_OBJECT_BUILDER_EXPRESSION)
basePackagePath String Chemin (absolu ou relatif) du package Java servant de base à la recherche d'un tempate. Si le chemin est relatif (ne commencant pas par "/") alors il est relatif au chemin du package de la classe resourceLoaderClass. O

Par exemple, si vos templates utilisateur sont dans un fichier JAR localisé dans le package "/myTemplates" (le fichier JAR doit être présent dans le CLASSPATH Java) :

template_loader=freemarker.cache.MultiTemplateLoader( \

[com.hardis.adelia.mergedocengine.freemarker.conf.ClassTemplateLoader(com.hardis.adelia.mergedocengine.ProcessTemplate.CLASS_FOR_OBJECT_BUILDER_EXPRESSION, "/myTemplates"), \ 

com.hardis.adelia.mergedocengine.freemarker.conf.ClassTemplateLoader(com.hardis.adelia.mergedocengine.ProcessTemplate.CLASS_FOR_OBJECT_BUILDER_EXPRESSION, "/com/hardis/adelia/mergedocengine/freemarker/lib")]) 



Chargeur com.hardis.adelia.mergedocengine.freemarker.conf.ZipFileTemplateLoader 

Les paramètres sont les suivants :

Nom

Type

Description

Obligatoire

schemeFileURI

String

Chemin absolu ou relatif du fichier au format ZIP contenant les templates. Si le chemin est relatif, alors il est relatif au répertoire de lancement de l'APE.

O

basePackagePath

String

Sous-répertoire dans le fichier ZIP à partir duquel rechercher un template.

N (valeur par défaut : " ")
useCache Boolean Utilise un cache mémoire pour accéder au contenu du fichier ZIP. N (valeur par défaut : "True")

Par exemple, si vos templates utilisateur sont dans les fichiers "c:\billingTemplates.zip" (accessibles depuis la racine du fichier) et "c:\reportingTemplates.zip" (accessibles depuis le sous-répertoire "year2019") :

template_loader=freemarker.cache.MultiTemplateLoader( \

[com.hardis.adelia.mergedocengine.freemarker.conf.ZipFileTemplateLoader("jar:file:///c:/billingTemplates.zip"), \ 

com.hardis.adelia.mergedocengine.freemarker.conf.ZipFileTemplateLoader("jar:file:///c:/reportingTemplates.zip", "year2019"), \ 

com.hardis.adelia.mergedocengine.freemarker.conf.ClassTemplateLoader(com.hardis.adelia.mergedocengine.ProcessTemplate.CLASS_FOR_OBJECT_BUILDER_EXPRESSION, "/com/hardis/adelia/mergedocengine/freemarker/lib")]) 


default_encoding


Encodage par défaut des templates lus à partir d'une locale n'ayant pas d'encodage associé.

Valeur par défaut : UTF-8


template_update_delay


Définit le délai en millisecondes devant s'écouler avant que le module de gestion de cache des templates vérifie s'il existe une version plus récente d'un template que celui en cache. La valeur par défaut est 5 s.


En phase de mise au point de templates, cette valeur indique quelle est la durée minimale d'attente entre l'instant de sauvegarde d'un template (sauvegarder une modification par exemple) et sa disponibilité à être traité (pour tester le résultat de la modification) par le moteur FreeMarker. Il faut donc indiquer une valeur de l'ordre de la seconde.


En phase de production, il peut être intéressant d'avoir une valeur très grande pour ne pas impacter les performances du moteur lors de fortes charges.


locale


Définit la locale utilisée par défaut si aucune locale n'est spécifiée dans les paramètres des services Web.


template_exception_handler


Définit la stratégie de remonté d'erreur lors du traitement d'un template.

Valeur par défaut: "rethrow"


boolean_format


Définit les valeurs alphanumériques utilisées pour convertir une valeur booléenne FreeMarker en chaîne alphanumérique dans l'interpolation ${ booleanValue }.

Valeurs par défaut : yes, no ("yes" pour True et "no" pour False)


extSharedVariables


Permet de définir une ou plusieurs variables partagées par tous les templates.

La syntaxe doit être une Map. Par exemple : extSharedVariables = { "sharedNumberVar": 10, \

"sharedBoolVar" : true, "sharedStringVar" : "string value", \

"sharedDateVar" : java.sql.Date(1531750144138), \

"sharedTimeVar" : java.sql.Time(1531750144138), \

"sharedDateTimeVar" : java.sql. Timestamp(1531750144138), \

"sharedSequenceVar" : [1, 2, 3], \

"sharedHashVar" : { "subVar1" : 1, "subVar2" : false } \

}


Ces variables peuvent être manipulées dans les templates en utilisant des interpolations ${ sharedNumberVar }, ${sharedSequenceVar[1]} , ${sharedHashVar.subVar1}, etc.


Attention : si une variable de premier niveau dans le data model porte le même nom qu'une variable partagée, la variable du data model va "cacher" la variable partagée.


↑ Haut de page

Injection de variables d'environnement dans freemarker.properties

L'APE offre la possibilité d'injecter des variables dans le fichier freemarker.properties. Celles-ci peuvent apparaître uniquement dans les valeurs des clés (et non comme nom de clé) du fichier .properties Java.

Déclaration d'une variable

La syntaxe d'une variable doit être la suivante :

/*<nom de variable>*/ (sans espaces), où <nom de variable> est constitué d'une suite d'un ou plusieurs caractères parmi les suivant : "a" à "z", "A" à "Z", "0" à "9" ou "_".

Lors de l'exécution de l'APE, chaque variable identifiée dans le fichier freemarker.properties est remplacée par sa valeur (la déclaration d'une variable /*<nom de variable>*/ est remplacée par sa valeur).


Définition d'une variable

Une variable peut être :

  • soit une variable d'environnement,
  • soit une propriété système définie au lancement de l'APE.


Variable d'environnement

Une variable d'environnement est une variable utilisateur partagée par un ou plusieurs processus. Son mode de définition est propre à chaque système d'exploitation.


Propriété système

En Java, une propriété système est définie par la syntaxe suivante :

-D<nom de variable>=<valeur de variable>


Remarques :

    • La propriété système est prioritaire sur la variable d'environnement. Si une même variable est définie à la fois comme variable d'environnement et comme propriété système, alors la valeur de la propriété système sera prise en compte,
    • Lors de l'exécution de l'APE, si une variable n'est pas définie, sa déclaration est laissée telle quelle.


Exemple

Voici un exemple de clé template_loader d'un fichier freemarker.properties qui déclare :

    • un chargeur de templates de type FileTemplateLoader dont le paramètre "baseDir" est défini par une variable d'environnement TEST_ENV_VAR1 et
    • un autre chargeur de templates dont la valeur est définie par une variable d'environnement TEST_ENV_VAR2.
template_loader=freemarker.cache.MultiTemplateLoader( \
[com.hardis.adelia.mergedocengine.freemarker.conf.FileTemplateLoader(java.io.File ("/*TEST_ENV_VAR1*/")), \
/*TEST_ENV_VAR2*/, \
com.hardis.adelia.mergedocengine.freemarker.conf.ClassTemplateLoader(com.hardis.adelia.mergedocengine.ProcessTemplate.CLASS_FOR_OBJECT_BUILDER_EXPRESSION, "/com/hardis/adelia/mergedocengine/freemarker/lib"), \
com.hardis.adelia.mergedocengine.freemarker.conf.ClassTemplateLoader(com.hardis.adelia.mergedocengine.ProcessTemplate.CLASS_FOR_OBJECT_BUILDER_EXPRESSION, "/com/hardis/adelia/apeexternallibs/freemarker/lib")])


L'utilisateur définit la variable TEST_ENV_VAR1 comme variable d'environnement et la variable TEST_ENV_VAR2 comme propriété système. Voici la syntaxe de lancement de l'APE en Windows et Linux :


Windows

set TEST_ENV_VAR1=./templatesDir1

ape-dev.bat -Dmanagement.endpoint.shutdown.enabled=true -Dserver.port=8080 -DTEST_ENV_VAR2=com.hardis.adelia.mergedocengine.freemarker.conf.FileTemplateLoader(java.io.File(\"d:/ape/templatesDir2\"))"


Linux

export TEST_ENV_VAR1=./templatesDir1

sh ape-dev.sh -Dmanagement.endpoint.shutdown.enabled=true -Dserver.port=8080 -DTEST_ENV_VAR2='com.hardis.adelia.mergedocengine.freemarker.conf.FileTemplateLoader(java.io.File(\"/home/userape/ape/templatesDir2\"))'

↑ Haut de page

 

  • Aucune étiquette