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

Publication sur serveur distant

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