Vue d ensemble technique



Documents pareils
Technologies du Web. Créer et héberger un site Web. Pierre Senellart. Page 1 / 26 Licence de droits d usage

Extensions, Documentation, Tutoriels, Astuces

Joomla! Création et administration d'un site web - Version numérique

Introduction à. Oracle Application Express

les techniques d'extraction, les formulaires et intégration dans un site WEB

Comparatif CMS. Laurent BAUREN S Bérenger VIDAL Julie NOVI Tautu IENFA

Introduction aux concepts d ez Publish

Cursus Sage ERP X3 Outils & Développement. Le parcours pédagogique Sage ERP X3 Outils et Développement

Présentation Alfresco

Open Source & Innovation exo Platform Oualid Chaker,

LES NOUVEAUTES DE COST AND PROFITABILITY MANAGEMENT 8.1

RÉF : 2002/COFAX/LP V1.0

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

WysiUpStudio. CMS professionnel. pour la création et la maintenance évolutive de sites et applications Internet V. 6.x

Construction d un Site Internet Dynamique avec Joomla René-Yves Hervé, Ph.D.

D une part, elles ne peuvent faire table rase de la richesse contenue dans leur système d information.

Alfresco et TYPO3 Présenté par Yannick Pavard dans le cadre des rencontres WebEducation Février 2008

Guide de démarrage rapide

Point sur les solutions de développement d apps pour les périphériques mobiles

CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN ING

NOVA BPM. «Première solution BPM intégr. Pierre Vignéras Bull R&D

REQUEA. v PD 20 mars Mouvements d arrivée / départ de personnels Description produit

Magento. Magento. Réussir son site e-commerce. Réussir son site e-commerce BLANCHARD. Préface de Sébastien L e p e r s

ECLIPSE ET PDT (Php development tools)

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

1 JBoss Entreprise Middleware

Créer et partager des fichiers

FileMaker Server 14. Guide de démarrage

Jahia. Guillaume Monnette École Ingénieurs 2000 Marne-La-Vallée IR3

Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

Catalogue Formations Jalios

Projet en nouvelles technologies de l information et de la communication

Java pour le Web. Cours Java - F. Michel

Formation : WEbMaster

Table des matières L INTEGRATION DE SAS AVEC JMP. Les échanges de données entre SAS et JMP, en mode déconnecté. Dans JMP

Auteur LARDOUX Guillaume Contact Année 2014 DEVELOPPEMENT MOBILE AVEC CORDOVA

Bien architecturer une application REST

Catalogue des formations Edition 2015

Hébergement de sites Web

SQL Server Installation Center et SQL Server Management Studio

WebSpy Analyzer Giga 2.1 Guide de démarrage

MANUEL WORDPRESS. Objectif: Refonte d un site web sous Wordpress I PRE-REQUIS: 1 / Créer un backup (sauvegarde) du site:

WorkflowGen 6.0 Guide de mise à jour

2.1 Liferay en un clin d'oeil Forces, faiblesses, opportunités et menaces Résumé de notre évaluation... 5

Cours Plugin Eclipse. Université Paris VI / Parcours STL / Master I Pierre-Arnaud Marcelot - Iktek - pamarcelot@iktek.com

UltraBackup NetStation 4. Guide de démarrage rapide

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

S7 Le top 10 des raisons d utiliser PHP pour moderniser votre existant IBM i

Les grandes facettes du développement Web Nicolas Thouvenin - Stéphane Gully

Formation en Logiciels Libres. Fiche d inscription

K-Portal et K-Sup 5.1 des nouveautés. Détails

Description des pratiques à adopter pour la mise à jour du layout en utilisant le gestionnaire de conception de Sharepoint 2013

A. Architecture du serveur Tomcat 6

Drupal (V7) : principes et petite expérience

Automatisation de l administration système

IBM DB2 Alphablox. d administration GC

PHP 5.4 Développez un site web dynamique et interactif

Catalogue Formation «Vanilla»

MailStore Server 7 Caractéristiques techniques

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

Le moteur de workflow JBPM

EXTENSION de Microsoft Dynamics CRM Réf FR 80452

FileMaker Server 11. Publication Web personnalisée avec XML et XSLT

Mise en œuvre des serveurs d application

Gestion collaborative de documents

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

Projet 2. Gestion des services enseignants CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE. G r o u p e :

Introduction au développement SharePoint. Version 1.0

FileMaker Server 12. publication Web personnalisée avec XML

Développement d applications Internet et réseaux avec LabVIEW. Alexandre STANURSKI National Instruments France

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Utilisation de Jakarta Tomcat

arcopole Studio Version 3.3

PRESENTATION D ADOBE LIVECYCLE ES4

Microsoft Office SharePoint Server Guide d évaluation

Manuel d utilisation du site web de l ONRN

Module BD et sites WEB

Compte Rendu d intégration d application

Surveiller et contrôler vos applications à travers le Web

24/11/2011. Cours EJB/J2EE Copyright Michel Buffa. Plan du cours. EJB : les fondamentaux. Enterprise Java Bean. Enterprise Java Bean.

Webinar. Découvrez Rubedo, la première solution CMS open-source tirant profit des atouts de Zend Framework et du NoSQL. avec la participation de

Cursus Sage ERP X3 Outils & Développement. CURSUS Sage ERP X3 Outils & Développement ADVANCED. Outils avancés. 2 jours X3A-ADM. Développement 1 &2

CAHIER DES CHARGES D IMPLANTATION

Fournir un accès rapide à nos données : agréger au préalable nos données permet de faire nos requêtes beaucoup plus rapidement

Pourquoi utiliser SharePoint?

Environnements de Développement

Livre Blanc WebSphere Transcoding Publisher

Devenez un véritable développeur web en 3 mois!

Optimiser pour les appareils mobiles

Bureautique Initiation Excel-Powerpoint

ADMINISTRATION DE ADOBE LIVECYCLE MOSAIC 9.5

Présentation de SOFI 2.0

3W Academy Programme de Formation Développeur Intégrateur web Total : 400 heures

Fiche Technique Windows Azure

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

Transcription:

DOCUMENTATION Vue d ensemble technique Jahia, le CMS open source de nouvelle génération apportant à vos projets la convergence applicative (web, document, social, recherche et portail) unifiée par la simplicité d utilisation des outils de gestion de contenu web. Jahia Solutions Group SA 9 route des Jeunes, CH-1227 Les acacias Genève, Suisse http://www.jahia.com

Sommaire 1 Introduction... 4 2 Vue d ensemble... 4 2.1 Qu est ce que Jahia?... 4 2.2 Les différentes couches... 5 2.3 Configuration technique... 5 2.4 Tout est Contenu, quel que soit le type ou la source... 6 2.4.1 Personnalisation par les intégrateurs et les développeurs... 6 2.5 Technologies intégrées... 7 2.6 Aperçu de l architecture... 8 2.7 Les modules... 9 2.8 Les différents acteurs de Jahia... 10 3 Couche Web... 11 3.1 Flux des contenus... 11 3.2 Templates et vues... 13 3.3 Le Jahia Template Studio... 15 3.3.1 Templates de pages... 15 3.3.2 Templates de contenu... 15 3.4 L API REST... 16 3.4.1 Actions... 17 3.4.2 Exemple : Application native pour iphone/ipad... 18 3.5 Rendu sur appareil mobile... 19 3.6 Macros... 19 3.7 Filtres... 20 4 Couche back-end... 20 4.1 Workflow... 21 4.2 JBoss Drools et les écouteurs d évènements... 21 4.3 Repository de fichiers... 22 4.4 Recherche et indexation... 22 Page 2 sur 36

4.4.1 Requêtes plein texte utilisant des bibliothèques de tags de recherche... 22 4.4.2 Langages de requête... 23 4.5 Authentification et autorisation... 24 4.5.1 Single Sign-On... 24 4.5.2 Rôles et permissions... 25 4.6 Importation et exportation... 26 4.7 Publications distantes... 26 4.8 Portlets... 27 4.8.1 Portlets contre Modules... 27 5 Performances... 29 5.1 Cache... 30 5.1.1 Types de caches... 30 5.1.2 La couche de cache du navigateur... 31 5.1.3 La couche de cache HTML front-end... 31 5.1.4 Les caches de bases de données... 32 5.2 Clustering... 32 5.2.1 Nœuds visiteurs... 33 5.2.2 Nœuds de rédaction... 34 5.2.3 Nœuds de traitement... 34 5.3 Ressources supplémentaires sur les performances... 34 6 Pour en savoir plus... 34 Page 3 sur 36

1 Introduction Ce document est une introduction technique à Jahia. Il est conçu pour un public ayant des connaissances techniques (intégrateurs, développeurs, testeurs, etc.), afin de les aider à démarrer avec Jahia. Il ne s agit pas d un guide utilisateur ou administrateur. Veuillez vous référer aux documents correspondants si tel est votre besoin. Ce document comporte cinq sections : 1. une vue d ensemble de Jahia, ce dont il s agit, les différents types d acteurs impliqués, la configuration technique requise, les technologies et les frameworks intégrés ; 2. la couche Web qui est une description de la couche exposée au navigateur, et la façon dont elle est liée aux divers composants dans Jahia, et dont ceux-ci peuvent être utilisés pour construire des applications Web puissantes ; 3. la couche back-end, qui contient une description de tous les différents services et technologies disponibles dans Jahia. Ce back-end est utilisé par la couche Web mais dans certains cas, elle peut également être utilisée directement par les intégrateurs, par exemple dans le cas de l intégration de workflows personnalisés ; 4. une section sur les performances et la façon dont Jahia gère les scénarios très exigeants en termes de charge ; 5. pour terminer, une section présentant diverses ressources supplémentaires à disposition des développeurs et intégrateurs, allant des ressources en ligne aux contrats de support payants. 2 Vue d ensemble Cette section propose une vue d ensemble globale des éléments composant un système Jahia et apporte un éclairage sur les sujets suivants : Qu est ce que Jahia? Les différentes couches Configuration requise Comment Jahia interprète le paradigme «Tout est Contenu» Quelles technologies sont intégrées dans Jahia Aperçu de l architecture Modules : qu est-ce que c est? Les différents acteurs de Jahia 2.1 Qu est ce que Jahia? Jahia peut représenter beaucoup de choses différentes pour beaucoup de personnes différentes. La plupart des projets l utiliseront comme solution de gestion de contenus Web (également appelée WCM, ou Page 4 sur 36

tout autre nom à la mode au moment où vous lirez ceci), tandis que d autres s en serviront comme serveur de portail, plateforme d intégration Web, ou même comme une solution d intégration de contenu à part entière. Ce qu est Jahia en réalité, c est un logiciel qui écoute les requêtes HTTP et est capable de produire des réponses en HTML, en n importe quel langage à balises ou même sous forme de données binaires dont les utilisateurs pourraient avoir besoin. Au cœur de Jahia, on trouve un repository où sont stockés et d où sont servis les contenus, ainsi qu une grande variété de moyens disponibles pour déployer des logiques personnalisées destinées à agir sur le contenu ou à interfacer avec des systèmes tiers. Voici la vision longue-portée de Jahia, qui devrait vous donner une bonne idée de la souplesse du système. 2.2 Les différentes couches Si vous avez trouvé la description que nous venons de faire de Jahia un peu trop abstraite, alors celle qui suit devrait plus vous aider. Jahia est composé des couches suivantes : un conteneur de servlet (Apache Tomcat, Oracle WebLogic, IBM WebSphere ou autre) un ensemble de filtres et de servlets qui forment la couche externe de Jahia un ensemble de beans Spring qui constituent l architecture principale de Jahia un ensemble de modules pour étendre les fonctionnalités de base une implémentation JCR pour le stockage de contenus (Apache Jackrabbit 2.x) un conteneur de portail (Apache Pluto 2.x) un planificateur de tâches (Quartz) un moteur de workflow (jbpm) un moteur de règles (Drools) Bien entendu, il s agit d une vision très simplifiée des éléments qui composent Jahia, mais cela devrait vous aider à identifier le type de technologies à l œuvre. 2.3 Configuration technique La configuration minimale requise pour Jahia est la suivante : Oracle JDK 1.5 ou version supérieure, JDK 100% compatibles 32 bits ou 64 bits une API servlet 2.4 / conteneur JSP 2.0 2 Go de RAM système d exploitation Windows, Linux (RedHat, Ubuntu), Mac OS X Configuration recommandée : Oracle 64 bits JDK 6 ou version supérieure Page 5 sur 36

Apache Tomcat 6.x 4 Go de RAM Linux Ubuntu ou RedHat, noyau 64 bits 2.4 Tout est Contenu, quel que soit le type ou la source On peut également présenter Jahia sous l angle du paradigme «Tout est Contenu», auquel nous avons ajouté «quel que soit le type ou la source» pour rester fidèles à notre vision des premiers jours. Depuis le début, Jahia agrège toutes sortes de contenus dans des pages, y compris des contenus dynamiques comme des portlets (et même de simples Webapps, avant l avènement de la standardisation des portlets). Jahia a toujours été capable de faire cohabiter des applications et du contenu sur les mêmes pages Web. Aujourd hui, Jahia 6.6 va encore plus loin en permettant de construire facilement des applications centrées sur les contenus, également appelées applications composites, qui facilitent la création d applications puissantes partageant un entrepôt de contenus en back-end. En d autres termes, travailler avec Jahia revient à manipuler du contenu et à définir des vues ainsi que des règles qui doivent être exécutées quand un évènement se produit sur le contenu. Tout élément de contenu stocké dans Jahia (documents texte, image, PDF, références de portlets, gadgets OpenSocial ou Google) est considéré comme contenu et partage donc : des propriétés communes (nom, UUID, métadonnées, etc.) des services communs (interface d édition, permissions, versions, etc.) des systèmes de rendu et de manipulation communs Le contenu est stocké selon une structure hiérarchique (qui utilise le standard Java Content Repository, ou JCR), mais comme le verrez il existe d autres façons de le requêter ou d agir dessus. 2.4.1 Personnalisation par les intégrateurs et les développeurs Les utilisateurs finaux voient peut-être Jahia comme un produit, mais pour les développeurs et les intégrateurs, c est aussi une plateforme très puissante que l on peut configurer et étendre pour répondre à un large éventail de besoins. Voici quelques-uns des différents types de personnalisation possibles : Intégration et personnalisation o de templates o de modules Jahia d origine Développement Page 6 sur 36

o de nouveaux modules à utiliser dans les pages o de nouveaux éléments logiques (règles, filtres, actions, classes) o de nouvelles fonctions ajoutant des fonctionnalités à Jahia Configuration o de workflows o de rôles et de permissions o de l interface utilisateur 2.5 Technologies intégrées Jahia embarque un grand nombre de technologies et de frameworks différents. Cette section vous donnera un aperçu de ceux qui sont inclus dans Jahia et de la façon dont ils sont utilisés. Jahia stocke toutes ses données dans un Java Content Repository (JCR) (Apache Jackrabbit 2.x) : o deux workspaces sont utilisés dans le JCR, un pour le contenu en cours d élaboration (appelé default ) et un pour le contenu publié (appelé live ) o le contenu JCR est stocké dans une base de données SQL (MySQL, PostgreSQL, Oracle, MSSQL, etc.). Pour des raisons de performance, les données des nœuds sont stockées sous forme sérialisée. Jahia intègre en son cœur : o le noyau (services et frameworks), contenant lui-même : Apache Lucene comme moteur de recherche et d indexation Apache Camel comme moteur d intégration d entreprise le framework Spring comme technologie d injection de dépendances et de configuration de beans (et bien plus encore ) Google Web Toolkit avec des extensions Sencha GXT pour l interface en Modes Édition et Studio JQuery et des extensions pour les Modes Contribution et En ligne JBoss Drools comme moteur de règles JBoss BPM comme moteur de workflow o des modules (extensions et templates) qui contiennent : XWiki comme moteur de wiki Apache Shindig (implémentation OpenSocial) des connecteurs LDAP des outils d optimisation pour les moteurs de recherche (SEO) des tags et des nuages de tags Page 7 sur 36

2.6 Aperçu de l architecture Comme vous pouvez le voir, les couches supérieures sont de simples couches de rendu et de communication, tandis que les services sous-jacents sont plus modulaires. Les cases bleues représentent ce qui est proposé dans les services de base, en tant que modules de base ou en tant que framework, tandis que les cases oranges montrent que les modules ne servent pas qu à ajouter des définitions de contenu, mais aussi des règles logiques personnalisées et plus encore. La version 6.5 de Jahia a marqué l arrivée des modules dans l architecture. Avant cette version, pour intégrer des extensions à Jahia il fallait déployer des beans Spring, mais il n était pas vraiment possible de packager ceux-ci efficacement. Depuis Jahia 6.5, on peut packager des modules dans des fichiers WAR que l on peut ensuite déployer pour étendre ou compléter les fonctionnalités du logiciel. Un grand nombre des fonctionnalités livrées avec Jahia sont en fait des modules, par exemple le Mode Contribution ou les sets de templates. Page 8 sur 36

2.7 Les modules Les modules sont un composant très important de Jahia 6.6 et on peut les considérer comme l infrastructure de plugins de Jahia. Ils sont composés de répertoires et de fichiers packagés dans un fichier WAR puis copiés dans le répertoire WEB-INF/var/shared_modules de Jahia pour leur déploiement. Lorsqu il détecte le nouveau fichier, Jahia déploie alors les contenus dans le répertoire modules/. Les modules peuvent aussi bien être très simples, par exemple la définition de nouvelles vues pour des types de contenus existants, que très complexes avec l implémentation de nouvelles couches de communication comme OpenSocial ou l implémentation de fournisseurs d utilisateurs et de groupes LDAP en back-end. Les sets de templates (voir ci-après la section sur le Jahia Template Studio) sont également packagés comme des modules, ce qui les rend faciles à déployer et mettre à jour. Parmi les avantages des modules : ils sont réutilisables : comme ils sont autonomes, il est facile de les déplacer d environnements de développement vers des environnements de travail ou de production. On peut également les réutiliser facilement sur d autres projets ou les partager avec d autres personnes. De plus, comme il est possible d hériter de modules existants, il est extrêmement facile d étendre un module livré avec Jahia. la maintenance : comme ce sont des blocs autonomes, ils peuvent se concentrer sur un cas d utilisation précis (comme dans le cas d un module forum), ce qui facilite la maintenance et l évolution. le fiabilité : si un module plante, c est la seule partie du système qui sera indisponible, le reste de la plateforme continuera à répondre aux requêtes. la séparation des tâches : comme les modules peuvent être intégrés plus tardivement, cela facilite le partage des responsabilités entre les membres d une équipe. Ainsi, un développeur travaillera principalement sur les modules, soit pour en créer des nouveaux, soit pour compléter ceux qui sont livrés avec Jahia. Il pourra également partager son travail (ou réutiliser les contributions d autres personnes) sur Jahia Forge (https://github.com/jahia). Un module peut contenir : des définitions de contenus des scripts d affichage (JSP, des langages compatibles JSR-286 comme Velocity ou Freemarker, ou même PHP*) des ressources statiques (fichiers texte, image, CSS, Javascript) des bundles de ressources ou autres fichiers de propriétés Page 9 sur 36

des classes Java ou des librairies JAR des filtres des définitions de permission et de rôles des définitions de workflow Rules jbpm des bibliothèques de tags des fichiers de configuration Spring Framework des fichiers d importation de contenu (au format XML) Notez que la présence d aucun de ces fichiers n est obligatoire, et que vous pouvez tout à fait créer un module vide, même si ça ne vous servira pas à grand chose. * Via l intégration du moteur PHP Quercus de Caucho, susceptible d être soumis à une licence commerciale selon les besoins de déploiement. 2.8 Les différents acteurs de Jahia Dans cette section, nous allons présenter les différents types d acteurs qui peuvent jouer un rôle dans un système Jahia, et la façon dont ils sont liés à différentes activités. Page 10 sur 36

Les développeurs, les intégrateurs et les Webmasters utiliseront principalement le Studio ainsi que les modules pour créer des templates, des modules afin que les autres utilisateurs puissent utiliser un système adapté à leurs besoins. Dans ce rôle, ils seront en mesure de fixer la présentation et l ergonomie du site Web, ainsi que les définitions de contenus, les règles ou tout autre logique personnalisée. Les Webmasters et/ou les rédacteurs utiliseront ensuite le fruit de ce travail pour remplir le site de contenu, à l aide des Modes Édition et/ou Contribution. Le Mode Édition est une interface d édition de contenu vraiment puissante, principalement destinée à des utilisateurs avancés, tandis que le Mode Contribution est une interface d édition de contenu facile à utiliser, conçue pour les rédacteurs de contenu. Il faut également noter que les intégrateurs sont libres de personnaliser le Mode Contribution selon leurs besoins, afin de façonner au mieux l expérience pour les rédacteurs. Une fois que les rédacteurs seront satisfaits de leur contenu, ils pourront utiliser le workflow pour publier les modifications vers le workspace live (ou bien s ils ne sont pas autorisés à le faire directement, ils pourront lancer le processus de validation), ce contenu devenant alors accessible aux visiteurs du site. Les visiteurs pourront alors naviguer sur le site, et s ils y sont autorisés, ils pourront également créer du contenu UGC (contenu généré par l utilisateur) dans des modules comme le forum, le wiki ou tout autre composant déployé sur le site. 3 Couche Web Cette section détaille la couche Web d un système Jahia. Cette couche est à la fois souple et puissante, nous allons donc : passer en revue le flux des contenus ; puis présenter la façon dont une page est interprétée. 3.1 Flux des contenus Afin de mieux comprendre la façon dont Jahia fonctionne avec les contenus, nous avons illustré ces flux dans le schéma suivant : Page 11 sur 36

Si on lit ce schéma du bas vers le haut, le développeur peut créer différents types d objets, des définitions de contenus jusqu aux macros, qui seront utilisés par Jahia pour personnaliser l expérience pour les autres utilisateurs. Nous allons maintenant nous intéresser brièvement aux différents types d objets : Définitions : les définitions de contenu définissent le type d objets qui seront édités dans le système ainsi que leur structure. Il peut d agir de simples propriétés tout comme d arborescences complexes. Règles : les règles définissent des conséquences (similaires aux actions) qui doivent être exécutées lorsqu une certaine condition est remplie. Elles permettent par exemple de surveiller les modifications apportées aux objets de contenus (par exemple, des créations de page), puis de déclencher le type de conséquence désiré. Actions : les actions sont similaires aux appels de méthodes, sauf qu elles sont appelées depuis l API REST. Les développeurs ont le choix d utiliser des actions existantes (comme createuser ou startworkflow) ou bien de définir leurs propres actions pour répondre à leurs besoins. Ce mécanisme d extension simple mais néanmoins puissant permet d exécuter quasiment n importe quelle tâche dans le back-end Jahia à partir d un appel REST. Templates : les templates sont définis dans le Jahia Template Studio. Ils facilitent la conception de mises en page et de dispositions de contenus que l on peut ensuite utiliser lorsque l on crée une page ou que l on affiche des éléments de contenu (par exemple, des articles de news). Les templates peuvent être packagés sous forme de sets de templates avant d être déployés sur n importe quels sites Web ou déplacés d un environnement de travail à un environnement de production. Les sets de templates peuvent également Page 12 sur 36

contenir du contenu pré-établi, ce qui peut s avérer utile et très puissant si l on veut par exemple créer des usines à sites Web. Scripts : ils sont utilisés pour le rendu de types d objets de contenu particuliers. Le type de scripts par défaut est JSP, mais Jahia supporte tout langage de script compatible avec l API Java Scripting (http://www.jcp.org/en/jsr/detail?id=223), par exemple Velocity, Freemarker ou même PHP. Plusieurs scripts peuvent être fournis pour un seul type de nœud : on les appelle des vues dans Jahia. Macros : on peut également définir des macros pour procéder à des substitutions rapides sur la sortie finale d une page Jahia. Les macros sont exécutées même si une page est récupérée dans le cache HTML, elles peuvent donc s avérer très utiles pour personnaliser rapidement la sortie d une page. Il faut néanmoins surveiller les performances car les macros sont exécutées en permanence ; elles doivent donc toujours s exécuter très rapidement. Les rédacteurs pourront alors se connecter au système et commencer à créer des sites, des pages et autres types de contenus définis par les développeurs. Ils utiliseront le puissant Mode Édition de Jahia ou bien le Mode Contribution, plus simple, pour créer du contenu et construire le site, brique par brique. Lorsqu ils ajoutent du contenu, les règles et les actions sont mis en œuvre pour exécuter des actions logiques, et enfin les templates, les scripts, puis les macros sont mis à contribution pour produire le résultat en HTML. Les visiteurs peuvent surfer anonymement, ou bien se connecter au système, naviguer sur le site et interagir avec les types d objets dynamiques que les développeurs et les rédacteurs ont mis à leur disposition (un forum ou bien une liste de commentaires, par exemple). Le contenu qu ils fournissent est appelé UGC (User-Generated Content : contenu généré par l utilisateur). Une fois encore, Jahia utilisera les templates, les scripts et les macros pour afficher les pages pour les visiteurs, et s ils sont autorisés à soumettre du contenu, les règles, les actions et les définitions de contenu entreront alors à nouveau en scène (cela n est pas illustré ci-dessus afin de maintenir le schéma le plus simple possible). 3.2 Templates et vues Comme nous l avons vu dans la section précédente, Jahia 6.5 a introduit un nouveau système de templates éditables qui facilite la personnalisation basique ou même complexe de mises en page sans nécessiter de connaissances en programmation. Afin de mieux comprendre la composition d une page, nous allons maintenant illustrer ce système dans le schéma suivant : Page 13 sur 36

Exemple : http://www.dogsandcats.com/home/dogs/bellini.html Dans l exemple ci-dessus, nous appelons dans le Java Content Repository un objet de contenu qui est situé sur la page d accueil (home) et qui s appelle bellini. Jahia va donc d abord utiliser l URL pour trouver l objet de contenu correspondant, puis chercher les différents objets qui permettront d afficher la page finale. Dans cet exemple précis, nous n appelons pas une page, mais directement un objet de contenu, ce qui est un peu plus complexe. Si nous avions voulu afficher la page, nous aurions utilisé l URL suivante : http://www.dogsandcats.com/home.html. Jahia aurait alors cherché un template de page, l aurait examiné pour trouver les différents objets présents dans la page, puis aurait utilisé les vues pour afficher chaque type d objet spécifique. Dans l exemple ci-dessus, nous avons illustré un cas d utilisation plus avancé, où l on appelle directement un objet de contenu. Si notre objet de contenu n était qu un script d affichage, alors en appelant l objet seul, nous n obtiendrions probablement qu un fragment de HTML au lieu d une page complète (puisque les vues d objets sont conçues pour être réutilisées à l intérieur des pages). Afin d éviter cela, Jahia dispose d un mécanisme appelé template de contenu qui permet aux intégrateurs de concevoir un template spécifique Page 14 sur 36

à un type d objet de contenu qui sera utilisé pour décorer autour de l objet, ce qui permet par exemple d afficher le menu de navigation, les en-têtes et les pieds-de-page autour de l objet. L affichage d une page HTML complète pour un objet de contenu isolé devient alors comparable à l affichage d une page de contenu standard. 3.3 Le Jahia Template Studio Comme les templates ne sont pas des scripts mais qu ils sont définis dans le repository de contenu, Jahia 6.6 d un outil pour les éditer, appelé le Jahia Template Studio. Un template est en fait un ensemble de nœuds qui vont définir la présentation d une page, permettant aux utilisateurs sans expérience en programmation ou en HTML de modifier ou de mettre à jour facilement des templates existants. Pour les utilisateurs avancés ayant une bonne connaissance de JCR, il est même possible d exporter le template en XML, de le modifier puis de le réimporter dans Jahia, si vous le souhaitez. Les templates sont regroupés en sets de templates, que l on peut ensuite choisir de déployer sur un site dans la même installation Jahia, ou bien de packager sous forme d un module exporté dans un fichier WAR pour être déployé sur une autre instance de développement ou sur une autre installation de Jahia, de travail ou de production par exemple. 3.3.1 Templates de pages Les templates de pages sont les types de templates par défaut, mis à la disposition des rédacteurs lorsqu ils créent une nouvelle page. À cette étape, le rédacteur peut indiquer le template qu il souhaite utiliser et qui définira la présentation de la page. La construction de façon verticale de templates structurés destinés au site en particulier aidera beaucoup les administrateurs de sites à s assurer que les sites sont structurés et présentés de manière cohérente, et cela les aidera également à faire des modifications ultérieurement. Les templates de pages (et les templates de contenu) peuvent également hériter d un template parent, vous pouvez donc avoir par exemple un template de base avec une structure très libre, puis en hériter pour construire des templates avec des structures plus rigides. 3.3.2 Templates de contenu Comme nous l avons vu dans le schéma des flux de contenus, les templates de contenus sont utilisés lorsqu une URL appelle un objet de contenu d un autre type qu une page. Il est donc possible de décorer un type de contenu en y ajoutant un menu de navigation, un en-tête, un pied-de-page ou tout autre élément de page souhaité, via la création d un template associé à une liste de types avec lesquels il doit Page 15 sur 36

être utilisé (dans l interface du Jahia Template Studio). Cela est très utile pour créer des vues référence/détail, ou la liste de référence des objets serait affichée sur une page, et la vue détaillée serait un unique objet de contenu affiché avec un template de contenu. Par exemple, imaginons que l on a des articles de news dans nos définitions, et que l on souhaite afficher un seul article de news sur une page HTML. On pourrait avoir une page d accueil qui afficherait une liste des résumés des dix derniers articles de news, et chacun d entre eux comporterait un lien vers l article de news en vue détaillée, avec toutes les informations et les sous-objets liés qui s affichent. La page d accueil serait affichée à l aide d un template de page et la vue détaillée de l article de news serait affichée à l aide d un template de contenu associé aux objets de type article de news. 3.4 L API REST Jahia 6.6 propose une API REST simple mais puissante permettant des opérations CRUD (Create, Retrieve, Update et Delete) sur le contenu. Elle permet également des opérations plus avancées comme la recherche, le déclenchement d actions (intégrées ou personnalisées), ainsi que l authentification. Jahia utilise également cette API dans divers modules (comme le Mode Contribution tout entier) pour implémenter leurs fonctionnalités, à l aide de technologies AJAX comme le JQuery. L accès à un élément de contenu dans l API REST se fait via une convention d URL : où : http://(servername:serverport)/(context)/(servlet)/(workspace)/(lang)/(path).(view).(templatety pe) Exemple : http://www.domaine.com/jahia/cms/render/defaut/en/sites/acme/home.html servername : le nom d hôte associé à un site, ou simplement le nom d hôte du serveur ou l adresse IP si aucun site n est associé à un nom d hôte serverport : un numéro de port optionnel si Tomcat n est pas configuré pour écouter le port 80, ou si aucun serveur Apache n a été mis en place devant Tomcat context : le contexte dans lequel Jahia est déployé (vide si Jahia est déployé en tant qu application root) servlet : la servlet que vous souhaitez utiliser. La plupart du temps, il s agira de la servlet /cms/render qui est la servlet de rendu de page principale, mais vous pourriez aussi avoir besoin d utiliser /cms/login, /cms/logout ou /cms/find workspace : live (version publiée) ou default (version en travail) lang : le code langue pour la langue que vous souhaitez afficher ou modifier path : le chemin vers un nœud (dans l exemple ci-dessus, /sites/acme/home.html ) Page 16 sur 36

view : une vue optionnelle. templatetype : le type de rendu désiré. La plupart du temps, ce sera.html, mais vous pouvez tout aussi bien appeler.csv,.xml ou.rss. Bien entendu, cela suppose que les vues correspondantes aient été configurées dans le système. Nous fournissons également un système d URL rewriting ainsi qu un système de Vanity URL pour l optimisation SEO. En réalité, l explication ci-dessus concerne plutôt les intégrateurs et les développeurs qui veulent utiliser l API REST. Maintenant que nous avons détaillé le format de l URL, voyons les méthodes que l on peut appeler dans une URL. L API REST propose les méthodes CRUD (Create, Retrieve, Update and Delete) de base qui sont mappées aux méthodes standard HTTP : GET affichera le nœud POST créera un nouveau nœud (ou appellera une action) PUT mettra à jour le nœud DELETE supprimera le nœud On peut avoir des méthodes supplémentaires en utilisant des actions. 3.4.1 Actions Les actions sont un point d extension aux méthodes HTTP par défaut fournies dans l API REST. Les méthodes peuvent être définies dans des modules et simplifient la réalisation d opérations supplémentaires sur les nœuds. Voici un exemple d action appelée dans une URL : POST http://localhost:8080/cms/render/default/en/sites/acme/home.startworkflow.do Toutes les actions utilisent l extension *.do à la fin. L exemple ci-dessus initiera un processus de workflow sur le nœud /sites/acme/home. Des paramètres supplémentaires peuvent être spécifiés en utilisant la chaîne de requête d URL, bien qu il soit conseillé d utiliser des paramètres de corps HTTP. Voici quelques exemples supplémentaires d actions fournies par Jahia : NewUser (module : userregistration) PublishFile (module : docspace) MailAction (module : formbuilder) GetFeed (module : feedimporter) DocumentConverterAction (module : docconverter) Page 17 sur 36

Comme vous pouvez l imaginer, cela simplifie l utilisation d actions de contenu directement dans un formulaire HTML, sans aucun Javascript (dans cet exemple, appel à l action newuser ) : <form method="post" action="<c:url value='${currentnode.path}.newuser.do' context='${url.base}'/>" name="newuser" id="newuser"> 3.4.2 Exemple : Application native pour iphone/ipad Le prototype d application iphone/ipad native conçu par Jahia est un exemple intéressant, illustrant l utilité de l API REST. L application native se connecte à Jahia au démarrage, récupère un fichier de configuration contenant différentes propriétés d écran, notamment des requêtes qui seront exécutées avec la servlet REST find. Les résultats sont générés avec une sortie JSON. L application native peut alors afficher le contenu comme elle l entend. Le fait de disposer du contenu au format JSON facilite l adaptation à différentes tailles d écran, le prototype natif étant une application pour iphone et ipad à la fois. L application est également capable de créer de nouveaux contenus via des requêtes HTTP POST qui créeront de nouveaux objets de contenus. Tout cela est plutôt optimal et intégré avec l authentification, puisque les servlets de connexion et de déconnexion sont également utilisées. Comme on peut le constater dans l exemple ci-dessus, l application native affiche le contenu de la démo ACME, avec le rendu natif de l appareil. Cela permet une expérience utilisateur forte sur mobile tout en ayant exactement la même base de contenu. On peut également mettre les données en cache dans le client natif, pour une consultation hors-connexion. Page 18 sur 36

3.5 Rendu sur appareil mobile Il existe une alternative au rendu des applications natives : il est possible d utiliser la variable user agent du navigateur pour changer le type de template afin d adapter les tailles et les menus de navigation aux dimensions des appareils mobiles. Jahia permet de configurer la détection du user agent à l aide d expressions régulières et de changer le type de template dynamiquement afin de permettre le passage à des scripts alternatifs pour afficher le contenu. Par exemple, avec la configuration suivante dans le fichier WEB-INF/etc/spring/applicationrenderer.xml : <bean class="org.jahia.services.render.filter.useragentfilter"> <property name="priority" value="6" /> <property name="applyonmodes" value="live,preview" /> <property name="applyonconfigurations" value="page" /> <property name="useragentmatchingrules"> <map> <entry key=".*iphone.*" value="iphone" /> <entry key=".*ipod.*" value="iphone" /> <entry key=".*ipad.*" value="iphone" /> <entry key=".*android.*" value="iphone" /> </map> </property> </bean> Cela signifie que si un user agent d iphone ou d Android est détecté, on cherchera d abord un script d affichage dans un répertoire de scripts html-iphone, et si celui-ci n existe pas, on utilisera par défaut un répertoire html. Ce mécanisme simple mais puissant permet de procéder à toutes sortes de détections de user agent. On pourrait même l utiliser pour adapter le rendu avec différents types de navigateurs sur ordinateur (les anciennes versions, par exemple). Il est également possible d utiliser des solutions du type Apache Mobile Filter (http://www.idelfuschini.it/it/apache-mobile-filter-v2x.html) capables d exposer les caractéristiques techniques des appareils mobiles sous forme d attributs de requêtes si l on a besoin d une plus grande maîtrise sur le rendu de la page. Cela peut également être un bon candidat pour un filtre, ou bien vous pourriez intégrer WURFL (http://wurfl.sourceforge.net/) en tant que module. 3.6 Macros Comme mentionné dans le flux des contenus, Jahia a également un mécanisme de macros, permettant d insérer des marqueurs dans les pages (même dans un champ de texte libre) qui seront dynamiquement Page 19 sur 36

remplacés par les valeurs correspondantes. Cela peut être utile par exemple si vous voulez utiliser une macro pour insérer le nom d un utilisateur, ou toute autre valeur. Les macros peuvent être définies dans les modules comme des fichiers de script JSR-223 réagissant à une syntaxe spécifique (par exemple : {getconstant} ou {username}). Jahia est également livré avec quelques macros, par exemple : Affichage de constantes stockées dans les propriétés d un nœud Génération de jetons de formulaires (form tokens), afin d éviter les soumissions multiples du même formulaire Affichage du nom de l utilisateur courant 3.7 Filtres Les macros nécessitent l insertion d un marqueur dans la page pour que le contenu soit inséré, il peut donc arriver que vous souhaitiez filtrer le flux de sortie et opérer des transformations en temps réel. Pour cela, on peut utiliser des filtres. Par exemple, il peut être utile d utiliser un filtre pour transformer toutes les adresses email détectées et les remplacer par une version masquée qui évitera qu elles ne soient détectées par les robots des spammeurs. Jahia est livré avec différents filtres, mais vous pouvez bien entendu développer les vôtres. En voici une liste non-exhaustive : portlet process action filter (pour le support des portlets) static asset filter (injecte du Javascript et du CSS dans l en-tête d une page HTML) metrics logging filter (rassemble des statistiques sur les affichages d objets) user agent dispatcher (pour le rendu sur appareil mobile) HTML cache email obfuscator (détection et protection d adresses email) et bien plus encore Comme vous le voyez, certains filtres sont assez puissants, tandis que d autres peuvent être réservés à un usage très précis. Les filtres sont une partie importante du fonctionnement interne de Jahia. 4 Couche back-end Cette section présente les diverses technologies et frameworks disponibles dans la couche back-end de Jahia. Page 20 sur 36

4.1 Workflow Jahia embarque le moteur de workflow jbpm 4 (http://www.jboss.org/jbpm) qui permet de supporter l intégration de workflows avancés via la définition de workflows, en utilisant la spécification BPMN 2.0. L interface de Jahia intègre les écrans de workflow afin que l expérience soit la plus transparente possible pour les utilisateurs finaux, qui n auront jamais à quitter l interface Jahia pour procéder à des opérations de workflow (à moins que les intégrateurs ne le souhaitent, bien entendu). Il est également compatible avec tout outil de définition de workflow graphique compatible avec jbpm, comme l outil de modélisation Web Signavio (http://docs.jboss.com/jbpm/v4/devguide/html_single/#signavio). 4.2 JBoss Drools et les écouteurs d évènements Souvent, lorsque des modifications sont effectuées sur le contenu, les intégrateurs vont se trouver face au besoin d exécuter une action particulière quand un évènement se produit. Dans des versions précédentes de Jahia, les écouteurs d évènements pouvaient être écrits soit dans des classes Java soit dans des fichiers JSP, ou même des scripts Groovy. Depuis la version 6.5 ce système a été remplacé par un système de règles basé sur JBoss Drools bien plus puissant et facile à utiliser. Voici un exemple de règle: rule "Image update" salience 25 #Rebuild thumbnail for an updated image and update height/width when A file content has been modified - the mimetype matches image/.* then Create an image "thumbnail" of size 150 Create an image "thumbnail2" of size 350 Set the property j:width of the node with the width of the image Set the property j:height of the node with the height of the image Log "Image updated " + node.getpath() end Comme vous le voyez, les règles ressemblent à la formulation de l anglais, ce qui rend plus faciles son utilisation et sa lecture pour les intégrateurs. Évidemment, le vocabulaire des conditions et les conditions elles-mêmes peuvent être étendus dans n importe quel module, facilitant la création de réponses à n importe quel évènement par n importe quelle action. Page 21 sur 36

4.3 Repository de fichiers Jahia 6 était la première version à utiliser Java Content Repository comme repository de fichiers standard et à élaborer des services sur cette base. En fait, l intégration de Jackrabbit ne constitue pas une forte dépendance, puisque Jahia utilise l API JCR standard pour permettre l accès à plusieurs repositories. Dans Jahia 6 il était déjà possible d accéder aux repositories de fichiers CIFS/SMB, et il existe quelques autres exemples d implémentation (parmi lesquels des connecteurs FTP, Alfresco, Exo Platform, Nuxeo). Au dessus des services de repository de fichiers, différentes interfaces exposent du contenu via des interfaces variées comme WebDAV, la navigation dans les fichiers de template et l interface AJAX de Jahia. De l autre côté du repository, l intégration avec un moteur de règles est utilisée entre autres pour la génération de vignettes d images et l extraction de métadonnées. Ce moteur de règles accepte également des plugins et peut être étendu par les intégrateurs pour exécuter d autres règles logiques lorsque se produisent certains évènements de repository. 4.4 Recherche et indexation Jahia est livré avec de grandes capacités de recherche et d indexation, et ce grâce à la combinaison de plusieurs frameworks dans le but de proposer les fonctionnalités suivantes : recherches plein texte (Apache Lucene) support de langages de requêtes multiples (Apache Jackrabbit) facettes (Apache Solr) reformulation : «Voulez-vous dire?» (Apache Solr) Open search des connecteurs pour d autres index de recherche, comme Alfresco via des connecteurs EntropySoft (disponible dans notre extension Jahia Unified Content Hub) Afin d utiliser les fonctionnalités ci-dessus, Jahia propose deux technologies : des bibliothèques de tags de recherche plein texte ou des langages de requête. 4.4.1 Requêtes plein texte utilisant des bibliothèques de tags de recherche La fonctionnalité de requête plein texte est possible grâce à un ensemble de tags destinés à rechercher selon la correspondance entre du texte simple et des propriétés d objets de contenu ou des contenus de fichiers. Elle renvoie des résultats sous forme d occurrences contenant des informations comme l objetcible correspondant à la recherche, un extrait du contenu et le degré de correspondance. Elle prend Page 22 sur 36

également en charge des options de recherche définies par le standard JSR-283, par exemple des mots optionnels, des mots obligatoires ou à exclure, une recherche par phrase ou par mot, etc.). Voici un aperçu des fonctionnalités disponibles avec l utilisation de requêtes plein texte : recherche sur l intégralité du contenu d un site recherche sur plusieurs sites sur le serveur recherche à l intérieur des fichiers stockés dans le repository de contenus recherche à l intérieur des fichiers stockés dans des repositories externes (seulement avec l extension Jahia United Content Hub) mise en surbrillance des termes recherchés dans la page de résultats classement par degré de correspondance exclusion de propriétés correspondantes (via des paramètres de définition de contenus) limitation des résultats pour améliorer les performances Les requêtes plein texte sont un moyen formidable de proposer une fonctionnalité de recherche facile à utiliser mais néanmoins puissante dans une installation Jahia, mais elles ne seront pas très efficaces pour des requêtes plus ciblées, par exemple pour récupérer la liste des dix derniers articles de news, ou autres requêtes similaires. C est précisément là que les langages de requête deviennent intéressants. 4.4.2 Langages de requête Les langages de requête sont en fait une fonctionnalité native dans une implémentation conforme à JCR comme Apache Jackrabbit. Ces langages de requête sont fonctionnellement équivalents, mais diffèrent dans leur implémentation et leurs scénarios d utilisation. Ils permettent de procéder à des requêtes avec des conditions complexes et un classement des résultats, ainsi que dans certains cas des jointures sur plusieurs types d objets de contenu. Le résultat de la requête est une liste de nœuds qui correspondent, classés selon les propriétés spécifiées. Voici un aperçu des fonctionnalités offertes par ce type de requêtes : recherche par type de contenu (article de news, billet, etc.) des conditions complexes basées sur les propriétés, voire dans le cas de SQL-2 ou de Query Object Model, des jointures. intégration avec la recherche à facettes intégration avec la mise en cache HTML en front-end Les langages de requête suivants sont disponibles : SQL- 2 : similaire au langage de bases de données SQL standard si facile à utiliser pour les développeurs. Les requêtes sont parsées et transformées en requêtes Java Query Object Model avant d être exécutées. Comme ce langage fait partie de JCR v2, il est Page 23 sur 36

relativement nouveau et pêche par sa jeunesse au niveau de l implémentation, notamment pour la performance des jointures. Pour des requêtes plus simples il s en sortira très bien, mais pour des cas plus complexes il est conseillé d utiliser XPath en attendant que l implémentation de ce langage n évolue. JQOM (Java Query Object Model) : il s agit d une représentation en objet Java d une requête JCR v2. On peut construire ces requêtes à l aide des bibliothèques de tags de recherche fournies par Jahia, ou bien directement à partir de code Java. Les requêtes SQL-2 et JQOM sont assez ressemblantes, sauf que les requêtes JQOM évitent l étape de parsing et sont donc légèrement plus rapides. En pratique, il est assez rare que le JQOM soit utilisé, mais cela pourrait être intéressant dans certains cas. XPath : bien que désigné comme obsolète dans JCR v2, ce langage est toujours disponible dans Apache Jackrabbit et est de loin le langage de requête le plus optimisé. Il n est pas aussi facile à utiliser que le SQL-2 mais il est très utile pour construire des requêtes très rapides et ces bonnes performances valent bien les efforts supplémentaires pour concevoir la requête. Il existe quelques astuces à connaître concernant la recherche sur un contenu multilingue, puisque cela n est pas aussi transparent que dans le cas des deux autres implémentations, mais même Jahia l utilise en interne pour sa vitesse lorsque les performances du SQL-2 ne sont pas assez rapides. Jahia est également livré avec des modules utilisant des requêtes pour accomplir leur fonctionnalité. Par exemple, la fonction Remontée des dernières actualités dans le module Actualités. Un module Requête JCR générique est également disponible qui demandera de saisir la requête dans un Engine lorsqu on l ajoute à une page de contenu. Les rédacteurs pourront donc construire facilement des requêtes personnalisées au moment de la création du contenu, sans nécessiter aucune assistance de la part des intégrateurs (bien entendu, si cela n était pas souhaité, l accès à ce module devrait être restreint). 4.5 Authentification et autorisation L une des forces de Jahia a toujours été son puissant sous-système d authentification et d autorisation. Il permet de contrôler les permissions de façon modulaire mais précise sur une grande variété d objets ou d actions. Les permissions peuvent être très granulaires ou aussi générales qu on le souhaite, ce qui en fait un excellent outil pour les déploiements dans les entreprises de taille modeste à très grande. 4.5.1 Single Sign-On Jahia embarque les frameworks SSO suivants : SSO Central Authentication Service (CAS) : http://www.jasig.org/cas support du SSO Kerberos : http://web.mit.edu/kerberos/ support de l authentification par conteneur Java EE un pipeline d authentification extensible qui peut être facilement implémenté pour ajouter le support de solutions SSO supplémentaires Page 24 sur 36

Ce dernier framework est utile dans le cas d intégration avec des technologies SSO non-standard ou custom. Par exemple, dans le cas d un fournisseur de services mobiles qui utiliserait les numéros de téléphone comme identifiants de connexion. L interfaçage avec une base de données personnalisée s intègrera dans le back-end Jahia, exposant les informations des utilisateurs et des groupes directement à l interface et aux permissions de Jahia. Une fois l utilisateur correctement identifié, le sous-système d autorisation se compose de : listes de contrôle d accès aux objets de contenu rôles auxquels l utilisateur peut participer permissions pour toutes les actions utilisateur pour chaque rôle Afin de pouvoir configurer des listes de contrôle d accès, des services d utilisateur et de groupe sont fournis, qui sont bien entendu également extensibles. Par défaut, Jahia est livré avec son propre service de fournisseur d utilisateurs et de groupes, ainsi qu un connecteur pour annuaires LDAP, mais il est également possible de développer des services personnalisés pour y brancher une base de données custom ou un service distant. Jahia peut également stocker des propriétés et des informations relatives aux utilisateurs et groupes externes dans ses propres services, permettant ainsi de stocker des données de personnalisation dans Jahia. Il faut également noter que toutes ces implémentations de services sont disponibles en même temps, il n y a donc aucun besoin d en remplacer un par un autre. 4.5.2 Rôles et permissions Une autre nouveauté introduite à partir de Jahia 6.5 est l introduction de véritables rôles. Les rôles sont en réalité des collections de permissions, regroupées sous un nom logique. Par exemple, un rôle de rédacteur (editor) regroupe les permissions nécessaires pour modifier du contenu et initier des processus de workflow. Jahia est livré avec des rôles prédéfinis, ainsi qu avec une interface puissante permettant de modifier les attributions par défaut (seulement disponible avec Jahia Enterprise Edition). Les intégrateurs peuvent bien entendu définir leurs propres rôles et permissions, et également changer les attributions par défaut. Il est également possible d ajouter des permissions dans des modules et de les affecter automatiquement à des rôles existants lors du déploiement. Les rôles peuvent alors être affectés aux utilisateurs et/ou groupes à tout emplacement du repository de contenu. Par exemple, vous pouvez définir un rôle editor pour un groupe particulier dans une section particulière du site. Ils pourront agir sous ce rôle uniquement à cet emplacement particulier du repository de contenu, et nulle part ailleurs. Cela facilite la délégation de responsabilités pour le travail collaboratif Page 25 sur 36

d édition et de révision de contenu, et pour la gestion de contenu dans son ensemble. Bien entendu, il est conseillé de réutiliser les rôles à travers les différents sites et sections, car un ensemble de rôles limité sera bon à la fois pour la gestion du site et pour les performances du système d autorisation (la mise en cache HTML utilisant également les rôles pour déterminer quel contenu est accessible ou pas). 4.6 Importation et exportation La fonctionnalité d importation et d exportation de Jahia est un mécanisme très puissant pour la migration de contenu de diverses façons entre sites Jahia, et même entre installations Jahia. Elle utilise le format XML JSR-170 (ou JCR) comme base pour l exportation de contenu, ainsi que d autres fichiers particuliers comme des hiérarchies de fichiers pour l exportation de données binaires. Ces différents fichiers sont compressés dans une archive ZIP utilisable par le sous-système d importation. Cela permet d exporter l intégralité d une installation Jahia, un ensemble de sites, un seul site ou bien même une sous-section d un site en utilisant la même technologie d importation et d exportation. Avec cette fonctionnalité, les utilisateurs peuvent migrer du contenu entre sites, ou même entre sections de sites, ou également exporter du contenu vers des systèmes autres que Jahia ou en importer depuis de tels systèmes. On utilise également le même système pour effectuer des migrations depuis des versions précédentes de Jahia vers la dernière version en date. 4.7 Publications distantes Jahia peut être déployé en instances multiples pour répondre aux scénarios dans lesquels une instance Jahia est située derrière un pare-feu et une instance publique est située dans une zone DMZ accessible depuis le Web public. Pour publier des données de l intérieur vers l extérieur, Jahia dispose d une fonctionnalité appelée publication à distance (également appelée remote publication), qui facilite l automatisation du processus de migration de données depuis un serveur de rédaction vers un serveur de navigation. Il est à noter que cela reste compatible avec les contenus générés par les utilisateurs, par exemple un forum déployé sur les instances publiques, ce qui signifie que la publication à distance ne touchera pas aux contenus UGC créés sur l instance publique. Page 26 sur 36

4.8 Portlets Jahia est livré avec un serveur de portail intégré, basé sur l implémentation de référence Apache Pluto de la spécification d API du portlet JCR. L objectif de cette implémentation est de fournir un appui aux intégrateurs qui doivent intégrer des portlets dans des pages de contenu. Cela signifie que toute application compatible avec les API de portlet peut être intégrée dans Jahia en quelques étapes seulement. 4.8.1 Portlets contre Modules Afin de différencier les portlets des modules, nous proposons le tableau suivant qui résume les principales différences : Portlet Module Classification Technologie plus ancienne, extension à un modèle de serveur Web traditionnel utilisant une approche bien définie basée sur un mode d isolement strict. Utilisation de techniques Web 2.0 librement définies et plus récentes, intégration à la fois au niveau du serveur et du client. Philosophie/Approche Approche de l agrégation selon un partage du rôle du serveur Web en deux phases : génération de markup et agrégation de fragments de markup. Utilise les API fournies par différents modules ainsi que le serveur de contenu pour agréger et réutiliser le contenu. Dépendances de contenu Agrège des fragments de markup orientés affichage (HTML, WML, VoiceXML, etc.). Peut fonctionner sur du contenu pur et aussi sur du contenu orienté affichage (HTML, JSON, etc.). Dépendances d emplacement L agrégation du contenu a traditionnellement lieu sur le L agrégation du contenu peut avoir lieu soit sur le serveur, soit sur le Page 27 sur 36

serveur. client, mais se passe généralement sur le serveur. Mode d agrégation Façon Salad Bar : le contenu Façon Melting Pot : le contenu agrégé est présenté 'côte-à-côte' individuel peut être combiné de sans chevauchement. n importe quelle manière, avec pour résultat un rendu et une édition hybrides structurés de façon arbitraire. Modèle d évènements Les modèles d évènements read et update sont définis via une API de portlet particulière. Les opérations CRUD sont basées sur des principes d architecture JCR et sur les interfaces REST du client, et permettent des interactions de contenus. Standards associés Le comportement des portlets est régi par les standards JSR 168, JSR 286 et WSRP, bien que la présentation des pages et les fonctionnalités de portail soient indéfinies et liées à l éditeur. Les standards de base sont JCR API, REST, JSON et XML. Les standards de facto comprennent JQuery en tant que framework Javascript. Portabilité Les portlets développés avec l API de portlet sont en théorie portables vers n importe quel conteneur de portlet. Les modules sont spécifiques à Jahia. Dépôts Les dépôts de portlet ont longtemps été une chimère, mais malgré de nombreux efforts ils n ont jamais vraiment Les modules sont disponibles sur Jahia Forge. Les développeurs et intégrateurs sont libres de les publier à cet endroit ou ailleurs et y Page 28 sur 36

marché et restent en général spécifiques à une implémentation de conteneur de portlet. sont même encouragés. Performance Une page dépendra entièrement Les modules supportent de la vitesse de rendu de chaque nativement la mise en cache des portlet pour obtenir de bonnes pages si elles réutilisent du contenu performances, ce qui peut être stocké dans Jahia, ce qui est difficile si des portlets généralement le cas. propriétaires sont présents dans le système. De manière générale, les intégrateurs recherchant des solutions d intégration puissantes et rapides se tourneront probablement vers les modules. Le principal cas d utilisation de portlets réside dans l intégration d applications anciennes qui n existent que sous forme de portlets. Dans le cas d autres systèmes (servlets, services Web), on préfèrera utiliser des modules car l intégration sera plus robuste, plus facile à réutiliser et à déployer, et bien sûr à maintenir. 5 Performances Il est souvent compliqué de réaliser des performances élevées sur des sites Web avec un fort trafic. Dans cette section, nous allons présenter les technologies disponibles au sein de Jahia et qui vous aideront à gérer des charges élevées ainsi qu à les répartir. Page 29 sur 36

5.1 Cache Les caches sont indispensables dans des systèmes Web de haute performance comme Jahia, afin d avoir la possibilité d éviter de générer à nouveau des contenus dynamiques sous des charges système élevées. Jahia utilise un sous-système de mise en cache multi-couches. 5.1.1 Types de caches Les différents types de caches utilisent tous le même service de cache, qui a la charge de fournir des implémentations de cache. Jahia utilise désormais le standard d implémentation EHCache (http://ehcache.org/), qui peut aller de configurations très simples jusqu à des instances de cache distribué TerraCotta (http://www.terracotta.org/) ou BigMemory (http://www.terracotta.org/bigmemory). Jahia utilise plusieurs couches de cache pour optimiser les performances d affichage des pages: le cache du navigateur les caches HTML front-end les caches objet les caches de bases de données Chacune de ces couches de cache joue un rôle différent pour s assurer que les valeurs ne soient calculées qu une seule fois. Page 30 sur 36

5.1.2 La couche de cache du navigateur Bien qu il ne soit pas intégré directement à Jahia, le cache du navigateur joue un rôle primordial pour garantir de bonnes performances à l utilisateur final. Par exemple, l utilisation du framework GWT par Jahia permet la mise en cache agressive de code source AJAX dans le cache du navigateur, s assurant ainsi de ne pas charger à nouveau du code qui n a pas changé. Jahia gère également correctement le cache du navigateur, de façon à s assurer qu il ne mette pas en cache des contenus de pages qui ont changé. Il contrôle également les dates d expiration pour les contenus en cache, afin que le navigateur ne cherche pas à recharger du contenu qui change rarement. 5.1.3 La couche de cache HTML front-end Historiquement, Jahia a eu de nombreuses implémentations de couches de cache HTML front-end. La première était la mise en cache HTML de la page entière. Bien que très efficace lorsqu une page était déjà disponible dans le cache, cela ne se dégradait pas très bien pour les pages avec un fragment de HTML qui changeait de page en page, ou d utilisateur en utilisateur (par exemple lors de l affichage du nom d utilisateur sur la page). Dans Jahia 5, nous avons introduit le serveur de cache ESI, qui ajoutait la possibilité de mettre en cache des fragments de HTML. Cette technologie nécessitait un serveur de cache séparé, exécuté sur une machine virtuelle séparée pour accomplir sa tâche. Bien meilleur que la mise en cache de pages entières pour ce qui concerne l affichage dynamique de pages, le système de mise en cache ESI souffrait néanmoins de problèmes de communication entre serveurs, ce qui le rendait assez compliqué à faire fonctionner de manière efficace. De plus, l intégration du cache ESI demandait une bonne connaissance du modèle de mise en cache des fragments lors du développement de templates, ce qui était un fardeau supplémentaire pour les intégrateurs. Jahia 6 a pris le meilleur des deux mondes, en associant l efficacité absolue de la mise en cache intégrée de pages entières au traitement des fragments par le serveur de cache ESI. Cette nouvelle implémentation de cache est appelée le cache module (module cache) et intègre la mise en cache de fragments au niveau du module, rendant très naturelle l interaction avec les templates. Les développeurs de templates n ont généralement pas à ajouter de marqueurs pour que leurs fragments soient mis en cache correctement. Même lorsqu ils ont besoin de contrôler la génération de fragments, cela est bien plus facile à faire que dans les précédentes versions de Jahia. Le cache skeleton (skeleton cache) est également un cache HTML front-end qui met en cache tout ce qui entoure les fragments, et en regroupant les deux sous-systèmes de cache, on obtient l équivalent en Page 31 sur 36

termes de performances de la mise en cache HTML de pages entières des versions précédentes de Jahia tout en gardant la souplesse de la mise en cache de fragments. 5.1.3.1 La couche de cache objet La couche suivante en dessous des sous-systèmes de cache HTML front-end est la couche de cache objet. Cette couche manipule des objets Java qui ne peuvent pas être mis en cache de façon optimale par les couches sous-jacentes. Dans des versions précédentes de Jahia, cette couche avait un grand nombre de caches différents, mais dans les versions les plus récentes elle a été réduite au strict minimum d après les tests de performance. Elle sert de couche au-dessus des caches de bases de données afin d éviter de reconstruire les objets pour chaque requête de modèle. Tout cela est géré de façon interne par Jahia et il est seulement important d interagir avec ces caches si les intégrateurs appellent directement des API backend qui ne mettent pas à jour les caches automatiquement (un bon exemple en est les caches d utilisateurs et groupes LDAP). 5.1.4 Les caches de bases de données La dernière couche de caches est la couche de cache de bases de données qui s assure qu il n y a qu un minimum d interaction avec la base de données. Ce cache est important car la communication de base de données nécessite la (dé)sérialisation des objets et également une communication réseau ; le dépassement d exécution des requêtes de base de données peut donc être assez considérable. Les frameworks Hibernate ORM et Jackrabbit gèrent cette couche de façon transparente, les développeurs et intégrateurs n auront donc normalement pas besoin de s en occuper. 5.2 Clustering Page 32 sur 36

Le déploiement de Jahia dans un cluster est une façon très puissante de répartir la charge mémoire et CPU pour gérer des sites à plus fort trafic. Le schéma ci-dessus illustre une installation typique de Jahia en cluster. Les nœuds Jahia communiquent ensemble via les couches de cache et de base de données, mais accèdent également à des ressources partagées: un système de fichiers partagé et la base de données. Le système de fichiers est utilisé pour stocker le contenu binaire si le serveur est configuré pour le mettre à cet emplacement, sinon il est stocké dans la base de données si on utilise la configuration par défaut. La base de données stocke tout le reste. Il est donc très important d avoir une installation de base de données hautement performante, car Jahia en dépendra pour évoluer. Jahia peut également différencier les nœuds dans une configuration en cluster afin d offrir un traitement plus spécialisé. Nous allons passer rapidement en revue les différents types de nœuds. 5.2.1 Nœuds visiteurs Les nœuds visitors de Jahia sont des nœuds Jahia spécialisés qui ne servent que comme nœuds de publication de contenu. Ils interagissent également avec les portlets ou les modules d application pour interpréter les pages et envoyer du contenu généré par les utilisateurs. L utilisation de cette spécialisation de nœud permet de séparer la charge des visiteurs des charges de rédaction et des tâches de fond. Page 33 sur 36

5.2.2 Nœuds de rédaction Les nœuds authoring de Jahia sont des nœuds de cluster qui peuvent être utilisés pour naviguer dans du contenu Jahia ou pour le modifier. Il s agit de l utilisation la plus courante des nœuds Jahia, il est donc intéressant d avoir de multiples instances de ces nœuds afin de répartir la charge. 5.2.3 Nœuds de traitement Dans Jahia, les tâches longues à s exécuter comme les opérations de validation de workflow, les copiercoller, l importation et l indexation de contenu sont exécutées comme tâches de fond, et uniquement sur le nœud de traitement. Ainsi, pendant l exécution de ces longues opérations, les autres nœuds sont toujours en mesure de gérer la navigation dans le contenu et les demandes de modification. Il faut noter que pour le moment, il ne peut y avoir qu un seul nœud de traitement. Ce nœud est conçu pour être insensible aux défaillances, donc si jamais un plantage survient pendant le traitement, on peut simplement le redémarrer et il reprendra ses opérations là où il les avait laissées. 5.3 Ressources supplémentaires sur les performances Comme Jahia travaille en permanence à améliorer les performances, vérifiez régulièrement la présence de nouvelles ressources sur les performances sur notre site Web, et n hésitez pas à consulter notre guide sur la configuration et les réglages de précision qui présente les bonnes pratiques de déploiement et de configuration pour configurer Jahia correctement pour les charges élevées. 6 Pour en savoir plus Sur notre site Web, vous trouverez les ressources suivantes qui vous aideront à parfaire votre expérience de Jahia : Forum : il s agit du forum de la communauté Jahia, où les utilisateurs du produit peuvent échanger questions et réponses. Il est hautement conseillé de consulter le forum pour toute question que vous pourriez avoir, car il se peut qu elle y ait déjà été traitée. Support commercial : Jahia propose également des contrats de support commercial pour répondre à vos besoins. Ces contrats peuvent aller du support de niveau élémentaire jusqu aux contrats d assistance personnalisés. Vous pouvez consulter la section Services pour plus de détails sur nos offres commerciales. Documentation : dans cette section de notre site Web, vous trouverez également notre documentation en ligne, des guides utilisateurs aux documentations intégrateurs et API. Assurez-vous de consulter cette section fréquemment, car nous publions régulièrement des mises à jour et de nouveaux documents. Page 34 sur 36

Vidéos : des tutoriels vidéo sont également disponibles sur www.jahia.com/community. Ils montrent comment réaliser certaines tâches ou illustrent certaines fonctionnalités spécifiques. Page 35 sur 36

Jahia Solutions Group SA 9 route des Jeunes, CH-1227 Les acacias Genève, Suisse http://www.jahia.com Page 36 sur 36