Le système actuel : les « transformers » dans SCENARIbuilder
Les forces
Un « framework » puissant et bien intégré dans SCENARIbuilder
Une approche déclarative « no-code » simple et rapide, avec un fort niveau d'abstraction
Une approche complémentaire « free », programmatique pour des besoins spécifiques et avancés
Les faiblesses
Difficile de comprendre lorsqu'un problème survient
Pas d'environnement de debug pas à pas
Une courbe de montée en compétence lente
L'approche déclarative « no-code » repousse les profils développeurs
De 1999 à 2024, quelques évolutions technologiques😀
Une complexification des rendus html+css+js : vers de véritables applications web, fini le site web html en mode « tourne-pages ».
Les publications sont de plus en plus interactives et responsives en exploitant Javascript
Le niveau d'abstraction des transformers de SCENARIbuilder perd en pertinence
Le ratio se dégrade entre transformers standards et codes free (XSLT, Xpath, ...)
Il y a 25 ans, Xpath, XSLT étaient révolutionnaires !
Mais :
pas d'environnement de debug pas à pas
pas de typage fort pour l'aide au codage (auto-completion) et faciliter la maintenance
2 mondes hermétiques entre le déclaratif et le programmatique
Java : un langage typé, et d'excellents IDE, mais impossible de produire dans une approche simple et déclarative une structure XML ou HTML
XSLT : une approche simple et déclarative pour produire une structure XML ou HTML, mais un langage programmatique pauvre et mal instrumenté
Kotlin : l'astuce syntaxique qui unifie ces 2 mondes
Une fonction passée en dernier paramètre peut-être écrite en dehors des parenthèses encadrantes
Une syntaxe épurée pour écrire une fonction sans paramètre
miracle : dans l'environnement Java, on peut enfin imbriquer du déclaratif et du code de façon lisible et performante !
Le nouveau système « Kdo »
Principes
Les items .model de SCENARIbuilder sont automatiquement et instantanément modélisés en classes Kotlin
Un item de type .generator dans le modèle permet de relier le code Kotlin au modèle Scenari
Pour exécuter une génération, une classe Kotlin du générateur est instanciée et appelée avec en paramètres le contexte de la génération (accès à l'atelier...)
Une génération peut être appelée pour produire une génération statique et/ou dynamique (page par page)
Mise en œuvre
Activation de l'extension KDO dans le modèle de l'atelier
Déclaration d'un projet Kotlin dans l'IDE Intelli-J : les classes Kotlin représentant le modèle documentaire doivent apparaitre
Création d'un item `.generator` qui va pointer une classe de demarrage de la génération