Ce premier article revient sur les conférences qui ont eu lieu cette année à la DevCon Alfresco et s’intéresse tout particulièrement à l’Alfresco Development Framework « ADF ». En effet, ADF est présenté par Alfresco comme l’outil qui redonne le pouvoir aux développeurs de la plateforme Alfresco dans l’ère « post-Share ». Il permet de construire des interfaces graphiques puissantes, c’est à dire fonctionnellement riches, basées sur des composants réutilisables et tirant parti d’un écosystème d’outils ouvert et à la pointe de la technologie.

Alfresco fournit une application basée sur ADF et dénommée Alfresco Content Application « ACA » dans sa version Community et Open Source. Il propose désormais une interface spécialement conçue pour la gestion documentaire dénommée Digital Workspace « ADW » qui devient l’interface graphique par défaut à destination des utilisateurs de la version Entreprise et qui est supportée par l’éditeur. Bien que ACA soit disponible, c’est Share qui reste l’interface par défaut de la version communautaire, probablement en raison de sa richesse fonctionnelle disponible par rapport à ACA. Share reste bien présent et supporté dans la version Entreprise, car il n’y a pas d’équivalent fonctionnel à date.

Nouveautés

La conférence principale sur ADF était animée par Eugenio Romano, Team Lead d’ADF pour présenter les nouveautés apportées par ADF 3.0.

L’annonce principale concerne la JS-API qui a été repensée, améliorée et re-écrite en TypeScript. Cette évolution permet une maintenance et une génération de code plus fiable et performante ainsi qu’une meilleure intégration avec les IDE. Pour faciliter la montée de version des applications existantes écrites avec la JS-API 2, Alfresco propose une couche de compatibilité permettant de continuer à utiliser l’ancienne syntaxe le temps de faire le pas.

En outre, Alfresco commence à écrire ses composants au standard Web Components. Il supporte le SSO avec Alfresco ACS 6.1 via l’Identity Service et le protocole OAuth 2.0. Parmi les autres changements annoncés, la mise à jour d’Angular en version 7 ainsi que des améliorations significatives des composants de recherche.

Après les annonces concernant ADF, Francesco Corti, Product Manager d’ADF a fait le point sur les différences qui caractérisent Share et ADF et leurs cibles respectives.

Les raisons principales qui poussent Alfresco à promouvoir une alternative à Share sont :

  • une courbe d’apprentissage trop forte qui ne facilite pas son adoption
  • le framework Surf qui n’est plus maintenu que par Alfresco
  • une nouvelle génération de frameworks JS avec le support d’une vaste communauté

Les objectifs assignés pour ADF sont les suivants :

  • distribuer en Open Source
  • se baser sur des standards à jour et sur des frameworks puissants
  • avoir une courbe d’apprentissage rapide
  • augmenter la productivité en réduisant la quantité de développement à produire (attention ça ne veut pas dire aucun développement)
  • réduire le temps de correction de bugs
  • faciliter de mise à jour
  • enrichir les capacités de personnalisation et d’extension des composants de base

La capacité d’étendre le framework ADF est sans doute le sujet qui a fait le plus de bruit à la DevCon cette année. Après les difficultés rencontrées par tous les développeurs Alfresco pour customiser Share et maintenir ses extensions au fur et à mesure des versions d’Alfresco, l’éditeur se devait de répondre aux attentes de sa communauté de développeurs.

Et c’est Denys Vuika, Tech Lead d’Alfresco Content Application qui nous parle de l’extensibilité du framework ADF. Le mécanisme fonctionne grâce à des composants packagés sous forme de librairie standard Angular distribuée via NPM et référencés dans un fichier JSON (adieu la configuration XML dans Share).

Les extensions permettent ainsi de définir de nouveaux composants Angular ou d’étendre et de réutiliser les composants provenant d’autres librairies, et notamment d’ADF. Ces composants définissent leur propre template permettant de générer un affichage personnalisé avec des styles propres et un contrôleur pour gérer les interactions avec le reste de la page. Au sein d’une application c’est grâce au constructeur du module associé à l’extension que les composants sont déclarés avec leur identifiant associé via l’ExtensionService. Cela permet ensuite de les référencer dans le fichier de configuration JSON et de les associer à une route (URL, pour définir une nouvelle page), un élément de menu ou pour prévisualiser le contenu d’un format de document spécifique. Les points d’extensions prévus permettent ainsi de remplacer l’affichage d’un composant par défaut avec un nouveau composant en réutilisant simplement l’identifiant prévu à cet effet.

Il est également possible de définir directement dans le fichier de configuration JSON des actions spécifiques aux emplacements prévus par des points d’extension (menu principal, barre d’en-tête, menu de navigation). L’affichage de ces actions peut être conditionné par des règles, et il existe un grand nombre de règles par défaut qui peuvent être facilement combinées ou complétées avec ses propres règles.

Alfresco encourage fortement les développeurs à créer leurs propres composants et configurations, dans une logique modulaire, et à les packager sous forme d’extensions.

Place d’ADF dans la plateforme

ADF devient le framework de référence pour toutes les interfaces graphiques de la plateforme Alfresco et Digital Workspace est l’interface par défaut de la version Entreprise.  Alfresco se devait donc d’intégrer certaines fonctionnalités aujourd’hui seulement présentes dans l’interface Share. C’est le cas notamment du module Records Management, dont les fonctionnalités d’archivage seront implémentées avec ADF sous la dénomination d’Alfresco Governance Services « AGS ».

La disponibilité d’Alfresco Digital Workspace 1.0 est conditionnée à la sortie d’Alfresco ACS 6.1. Cette première version d’ADW est entièrement basée sur Alfresco Content Application 1.6 et ne possède pas encore de spécificité liée à la souscription Entreprise. Alfresco recommande de réaliser ses développements spécifiques sous la forme d’extensions qui pourront s’intégrer à ACA comme à ADW lorsqu’il disposera également de ses extensions Entreprise.

A la manière des applications de gestion de contenu documentaire basés sur le framework ADF – ACA et ADW -, Alfresco réalise la même démarcation pour la gestion des processus avec Activiti et développe une nouvelle application dédiée, l’Alfresco Modeling Application. En effet, cette application spécifique permet de modéliser complètement un workflow, tant dans la succession des tâches et leurs transitions que la définition des formulaires attachés. Celle-ci démontre l’attachement d’Alfresco à concevoir une application de base mise à disposition de la communauté, l’Activiti Modeling Application à laquelle viennent s’ajouter des fonctionnalités premium disponibles uniquement en version Entreprise (Alfresco Modeling Application). Il s’agit notamment des éditeurs avancés de formulaire et de définition des connecteurs vers les services exécutant les actions qui disposent de composants riches et ergonomiques alors que la version Open Source ne propose qu’un éditeur de configuration au format JSON.

La version Entreprise est en fait bien basée sur la version Community à laquelle viennent s’ajouter des modules tirant parti du mécanisme d’extension ADF à base de librairies Angular. Ainsi le projet permettant de construire l’application finale n’est composé que d’un module Angular et des projets de librairies ama-ui-editor, ama-form-editor, ama-advanced-connector-editor et d’autres pour apporter les fonctionnalités supplémentaires attendues.

Cette application démontre ainsi l’utilisation qui est faite d’ADF aussi bien pour construire une nouvelle application Angular de zéro en utilisant les composants standards que des capacités d’extensions qui sont mises en oeuvre pour différencier efficacement deux versions d’une même application sans dupliquer leur code.

Enfin, parmi les retours d’expérience sur ADF à la DevCon, Marius Grunenberg, d’it-novum GmbH nous a présenté grâce un exemple concret, la rapidité avec laquelle il avait développé une application de location de voitures en utilisant des composants ADF standard et quelques composants relativement complexes développés spécifiquement. A la question : “Combien de temps pour faire tout ça ?”, il a donné une réponse assez inattendue : “après avoir défini ce qu’on voulait faire, environ 4 heures”. Avec quelques explications complémentaires pour atténuer la surprise générale, on comprend mieux la force d’ADF : en tirant parti de l’ADF Modeling App pour définir un workflow et en sélectionnant les composants ADF adaptés, quasiment dans leur configuration standard, une application peut se construire très vite. À noter que Marius Grunenberg est un expert Angular mais pas forcément d’Alfresco/ADF, ce qui confirme l’importance pour les développeurs de maîtriser le framework Angular avant tout, sans forcément avoir une connaissance approfondie d’Alfresco.

Conclusion

Dans la continuité de la montée en puissance du framework ADF qui nous a été présenté à la DevCon 2018, Alfresco place ADF au coeur de la stratégie de sa Digital Business Platform pour fournir des interfaces graphiques simples spécifiquement taillées pour chaque besoin. Sous forme d’applications qui s’exécutent directement dans le navigateur du client, elles tirent parti des API fournies par les back-office de gestion de contenu, process, recherche et gouvernance (Records Management) et bénéficient des facilités de déploiement et de montée en charge de la plateforme.

Alfresco multiplie donc le nombre d’applications qu’elle met à disposition des utilisateurs de sa plateforme et offre de nouvelles capacités d’extension de ses applications à la main des développeurs et dont l’éditeur lui-même se sert pour différencier son offre Entreprise.

Share fait encore parti du package disponible avec Alfresco et à ce titre, comme l’a annoncé Bernadette Nixon, CEO d’Alfresco, il est supporté à minima jusqu’en 2022. Néanmoins, les efforts et les nouvelles fonctionnalités, notamment en termes d’intelligence artificielle, se concentrent uniquement sur les applications développées sur ADF et les développeurs sont encouragés à tirer partie de ce framework pour proposer des services aux utilisateurs de la plateforme Alfresco.

Quelques jours après la DevCon, la sortie le 13 février 2019 de la version 3.0 d’ADF vient confirmer les nouveautés qui nous ont été présentées et rend disponible le travail effectué pour mettre à jour le framework avec TypeScript, Angular 7 et proposer des capacités d’extension directement utilisables et d’ores et déjà utilisées. A nous maintenant d’en tirer parti dans nos projets !

// article co-rédigé par Nicolas Barithel, Matthieu Rollin, Joel Marques et Cindy Piassale