8 févr. 2024 16:03:10 seb leridon avatar

La modernisation de Lutèce continue.

Le passage à la V7 a permis :

  • d'effectuer la mise à niveau du code existant
  • de rattraper la dette technique sur un certain nombre de plugins non conformes
  • de préparer la compatibilité jdk 11 et 17
  • de préparer le passage de JEE vers JAKARTA-EE (compatibilité Tomcat 10 et +)
  • de travailler sur le remplacement des scripts JQuery
  • d'améliorer le déploiement sur différents types de supports (docker, nouveau goal maven run, …)

La 7.010 continue sur cette voie de modernisation.

  • Jquery a été externalisé dans un plugin pour en permettre l'utilisation dans des projets historiques dans l'objectif de l'abandonner sur la V8
  • Nous continuons la préparation du passage à Jakarta EE et en parallèle les composants historiques de Lutece sont sortis pour passer sur des composants génériques Jakarta.
  • Un nouveau thème a été créé sur des frameworks dont l'implémentation est plus générique (passage à bootstrap 5 et abandon de boostrap 3)

La 7.010 est le pont vers la 7.1 qui amène à la sécurisation et la modernisation des applications historiques La 7.1 permettra d'assurer la montée de version sur l'ensemble des composants pour des applications historiques dans la limite des capacités de montée de version de ces composants pour lesquels la mise à jour nécessiterait une réécriture complète.


Nouveautés de Lutece v7

Une indépendance vis à vis des frameworks CSS

Avant Lutece v7, chaque version du coeur était liée à une version d'un framework CSS. Depuis Lutece v4 le coeur reposait uniquement sur le framework Bootstrap de Twitter qui apporte toutes les fonctionnalités "Responsive Design" permettant de s'adapter aux consultations sur mobiles. Chaque évolution majeure de ce framework comportait une rupture de compatibilité complète avec l'ancienne version. Ceci a eu pour conséquence de devoir modifier l'ensemble des templates HTML lorsque le coeur de Lutece montait de version du framework Bootstrap. Dans Lutece v6 un ensemble de macros du moteur de template HTML Freemarker ont été créées pour encapsuler la gestion des classes CSS dépendantes de la version de Bootstap. Cet effort a été finalisé dans Lutece v7 de manière à ce que les macros permettent de créer des templates HTML entièrement indépendants du Framework CSS. Pour atteindre ce résultat et le valider, Lutece v7 a eu pour objectif de supporter au moins 3 frameworks simultanément :

  • Bootstrap 3 - pour une compatibilité avec plugins v6 n'utilisant pas les macros encapsulant les styles CSS
  • Bootstrap 4 - pour supporter les nouvelles fonctionnalités
  • Bulma - pour démontrer l'indépendance vis à vis de Bootstrap Pour chacun de ces frameworks, Lutece v7 propose une implémentation spécifique des macros. Pour supporter un autre framework CSS, il suffit de créer une nouvelle implémentation du jeu de macros.

Un nouveau look graphique du Back Office

L'indépendance possible du framework CSS a permis de choisir un look and feel basé sur la charte très tendance "Material Design" lancée par Google pour Android puis Angular. https://dev.lutece.paris.fr/lutece-core/style_guide/output/Bootstrap4MaterialKit/index.html

La compatibilité ascendante

La compatibilité ascendante a été une préoccupation majeure dans la conception de Lutece v7. Quelques macros Freemarker et des classes Java ont été supprimées pour nettoyer des fonctions obsolètes mais des alertes sont produites par les analyses Sonar de manière à évaluer toutes les corrections à faire pour être entièrement compatible avec Lutece v7. Au delà de cela, Lutece v7 propose une mode de compatibilité basé sur Bootstrap3 et qui conserve les macros supprimées dans la version standard de manière à faire fonctionner un plugin v6 dans Lutece v7.

Une nouvelle organisation des paramétrages techniques

L'agencement des paramétrages techniques dans le Back Office a été entièrement revu pour rassembler toutes ces fonctions dans une unique menu. Cela a permis de réduire le nombre de fonctions apparaissant ici et là dans les menus du Back Office.

Le support du paramétrage de configuration par variable d'environnement

De nouvelles fonctions permettent de valoriser des signets à partir de variables d'environnement. La première application est pour le paramétrage du fichier db.properties dans lequel le serveur de base de données, la base et les informations de connexion peuvent être définis en s'appuyant sur des variables d'environnement. Si le nom de la variable d'environnement se termine par _FILE, la valeur doit être prise dans le fichier nommé par la valeur actuelle de la variable.

Exemple : Pour évaluer la chaîne de caractères "${DB_PASSWORD_FILE}". dans le fichier DB_PASSWORD_FILE=/run/secrets/mariadb-pwd

la méthode prend en valeur le contenu du fichier. Cette fonctionnalité est utile pour gérer les secrets de Docker

La trace d'évènements

De nouvelles fonctionnalités de trace sont proposées par Lutece v7. Elles sont destinées aux applications qui souhaitent mettre en place un historique de certaines actions sensibles à des fins d'audit de sécurité.

Le support de Java 11

La version de compilation de Lutece v7 reste le Java 8, cependant la compilation est possible en Java 11 grâce à l'ajout des dépendences supprimées dans les versions postérieures au JDK8.

La gestion des contrôles d'accès aux ressources étendue au Front Office

La gestion des rôles RBAC (Role Based Access Control) a été étendue aux utilisateurs du Back Office. Ceci permettra une gestion très fine des droits d'accès à des ressources et notamment dans le cadre de workflows. Ces mécanismes pourront également être mis en oeuvre pour des daemons ou des web services REST.

Les générateurs de code PluginWizard et CodeWizard mis à jour

Les générateurs de code PluginWizard (génération d'un plugin complet) et CodeWizard (génération de fichiers unitaires) produisent désormais du code pour Lutece v7 notamment celui des templates HTML utilisant les nouvelles macros.

N'oubliez pas de mettre à jour la version du global Pom : 5.2.0 minimum