JCMS 5.5 : Les principales nouveautés

1. Plus d'interaction pour les utilisateurs

1.1 Des sites plus rapides

Les performances des sites JCMS ont été notablement améliorées avec les versions 5.0.1 et 5.0.2. JCMS continue d’assurer de bonnes performances, même lorsque la volumétrie des données devient très importante (plusieurs centaines de milliers de publications par exemple).

Le livre blanc Evaluation des performances de JCMS 5.0.1 analyse les performances de JCMS en fonction de plusieurs paramètres (volumétrie, mémoire allouée, caches utilisés, …) Il fournit aussi des recommandations de conception et d’architecture pour atteindre ces performances.

En complément avec l’amélioration des temps de traitement interne, JCMS propose deux nouveaux types de cache très efficaces pour les sites visités par de nombreux utilisateurs non authentifiés :

  • Cache global pour les visiteurs uniquement : ce type de cache utilise un cache global (très performant) pour les utilisateurs non authentifiés.
  • Cache par session de membre et global pour les visiteurs : ce type de cache combine le précédent et un cache par session J2EE pour les utilisateurs authentifiés.

1.2 Un nouveau moteur de recherche

JCMS 5.5 intègre un nouveau moteur de recherche textuelle basé sur la bibliothèque d’indexation Lucene. Ce nouveau moteur permet à JCMS de rechercher dans des très grands volumes de publications (plusieurs centaines de milliers) tout en garantissant d'excellent temps de réponse et une faible consommation mémoire.

Par ailleurs, ce nouveau moteur offre de nouvelles fonctionnalités telles que la suggestion de recherche, le tri par pertinence ou des recherches avancés.

1.2.1 Suggestion de recherche

A l’instar de Google ou Yahoo Search, JCMS 5.5 propose des suggestions de recherche lorsqu’il y a peu de résultat du fait d’une erreur d'orthographe. Par exemple, sur un site dédié au jardinage si l’utilisateur recherche "ibiscus", JCMS lui proposera de rechercher "hibiscus" pour lequel il y a plus de résultats.

1.2.2 Tri par pertinence

Lors d’une recherche textuelle, JCMS 5.5 trie les résultats selon leur niveau de pertinence. Le calcul de la pertinence est basé sur la fréquence du terme recherché dans la publication par rapport à sa fréquence dans l’ensemble des publications. Durant ce calcul, on prend aussi en compte les particularités des publications. Ainsi, la présence du terme recherché dans le titre, le résumé ou les catégories augmentera la pertinence de cette publication.

Affichage de la pertinence dans les résultats de recherche

1.2.3 Recherche par champs

L’interface de recherche avancée de JCMS 5.5 offre de nouvelles options de portée : recherche sur les titres, les résumés ou sur tous les champs.

Nouvelles options de l’interface de recherche textuelle

Par ailleurs, il est possible de faire des requêtes de recherche textuelle élaborées en utilisant la syntaxe Lucene.

Recherche par champ nommé

Le nom des champs correspond au nom Java (p. ex. "monChamp" si le libellé est "Mon champ") avec 2 exceptions :

  • title pour les titres
  • abstract pour les résumés

Exemples :

Requête Description
description:JCMS Recherche les contenus dont le champ description contient le mot "JCMS".
abstract: "JCMS Universal" Recherche les contenus dont le champ résumé contient la phrase "JCMS Universal"

Recherche par intervalle

Il est possible de faire des recherches sur des intervalles en particulier pour les champs date.

Exemples :

Requête Description
pdate:[20060101 TO 20060131] Recherche tout les contenus publiés entre le 1er et le 31 janvier 2006

Recherche approximative

Il est possible de faire des recherches avec des termes approximatifs.

Exemples :

Requête Description
ereur~ Recherche les contenus ayant un texte proche de la chaîne "ereur".

Recherche booléenne

Il est possible de combiner plusieurs critères avec les opérateurs AND et OR.

Exemples :

Requête Description

(title:(JCMS 4*) OR title:(JCMS 5*)) AND title:(formation*)

Recherche les contenus dont le titre contient "JCMS 4" ou "JCMS 5" et le texte "formation"

1.2.4 Recherche par union ou intersection de catégories

L’interface de recherche avancée permet de préciser si la recherche par catégorie se fait en retenant les publications référencées par toutes les catégories (comportement des précédentes versions de JCMS) ou par au moins une des catégories sélectionnées. Il est aussi possible de préciser si la recherche doit porter sur les descendants des catégories sélectionnées.

Nouvelle option de l’interface de recherche par catégorie

1.3 Nouvelle interface pour les forums

L’interface des forums a été revue. Elle exploite mieux l’espace disponible et une colonne a été ajoutée dans la liste des discussions pour connaître rapidement les discussions que l’on suit.

Nouvelle interface des forums

2 Plus d'outils pour les contributeurs

2.1 Edition Front-Office

Afin de rendre les fonctions de contribution accessibles au plus grand nombre, JCMS 5.5 intègre de nouvelles interfaces de publication front-office. Celles-ci permettent aux contributeurs de publier des contenus directement sur le site, sans avoir à passer dans les espaces de travail du back-office. L’édition se fait alors dans une fenêtre séparée. Pour les modifications, l’utilisateur peut soit accéder au formulaire complet, soit faire une édition champ par champ.

Edition front-office champ par champ

2.2 Choix des valideurs

L’administrateur d’un espace de travail peut, lors de la définition des rôles du Workflow, autoriser les contributeurs à choisir quel membre interviendra sur un rôle donné. Pour cela, le rôle doit être déclaré "ouvert".

Déclaration des rôles ouverts

Le contributeur dispose alors dans l’onglet "Affectation des rôles" d’une interface pour choisir, dans un ensemble imposé, les membres qu’il affecte aux rôles ouverts. Lorsqu’un membre est affecté à un rôle pour une publication, il est le seul à être notifié et à pouvoir valider cette publication.

Affectation des rôles

2.3 Multilinguisme enrichi

2.3.1 Support des langues non latines

JCMS 5.5 permet de saisir et diffuser des contenus dans toutes les langues, y compris les langues non latines (p. ex. grec, japonais, chinois, russe) et même celles qui s’écrivent de droite à gauche (p. ex. arabe et hébreu).

Formulaire d’édition multilingue

2.3.2 Choix de la langue principale

Dans JCMS, la langue principale joue un double rôle :

  1. Elle est utilisée en rattrapage si un champ texte n’a pas été renseigné dans la langue affichée ;
  2. Si un champ multilingue est obligatoire, il doit être renseigné au moins dans la langue principale.

Dans les précédentes versions de JCMS, la langue principale était définie pour tous les contenus. Si par exemple la langue principale était le français, un contenu ne pouvait pas être saisi uniquement en anglais car tous les champs obligatoires devaient être renseignés en français.

Avec JCMS 5.5, il est possible de préciser pour chaque contenu sa langue principale (onglet Avancé). Par défaut, il s’agit de la langue principale du site.

Par ailleurs, la langue principale du site n’est plus forcement en première position dans la liste des langues présentées sur le site.

2.3.3 Copie de traduction

Les copies de travail ont été enrichies pour permettre à plusieurs contributeurs de retravailler simultanément le même contenu pour des langues différentes. Lors de la fusion, les champs multilingues sont fusionnés de manière à ne pas écraser les précédentes fusions. Par exemple, un contenu est d’abord publié en français sur le site. Puis on effectue deux copies de travail, pour réaliser les traductions anglaise et allemande. Les deux traducteurs peuvent travailler à leur rythme et quelque soit l’ordre des fusions, le contenu final intégrera les 3 langues.

Par contre, avec JCMS 5.5, les suppressions de contenu dans les langues doivent être faites directement sur la publication originale.

Des contraintes d’intégrités ont été ajoutées aux copies de travail afin d’empêcher la suppression de la publication originale s'il existe des copies de travail (ou de forcer la suppression des copies de travail avec l’original). La liste des copies de travail associées à une publication est affichée dans l’onglet Avancé de l’éditeur de publication.

Enfin, lors de la fusion, l’auteur original de la publication est préservé (dans les précédentes versions de JCMS, il était remplacé par l’auteur de la copie de travail).

2.4 Nouvelles fonctionnalités du panier

Dans le gestionnaire de publication, l'ajout de la sélection dans le panier est disponible en permanence (dans les précédentes versions, il n’apparaissait qu’après avoir sélectionné un type de publication). De nouvelles fonctionnalités sont offertes :

  • L’icône permet de supprimer du panier les publications listées ;
  • L’icône permet d’afficher le contenu du panier filtré par les critères sélectionnés (catégories, types, état du workflow, …) ;
  • L’icône désactive le filtrage par le panier ;
  • L’icône remplace le contenu du panier par la sélection actuelle ;
  • L’icône ajoute la sélection dans le panier.

2.5 Explorateur de média

L’explorateur de média succède à l’explorateur d’image. Celui-ci gère non seulement les images mais aussi les vidéos, les fichiers audio et flash. De plus, l’interface a été revue pour offrir une meilleure ergonomie et permettre la navigation par catégorie.

Explorateur de médias

2.6 WebDAV

JCMS 5.5 supporte le protocole WebDAV. Ce protocole est basé sur http et permet de naviguer dans JCMS comme dans le contenu d’un répertoire partagé via l'explorateur de fichier Windows (ou MacOSX). Les sous-répertoires correspondent aux catégories et les fichiers aux documents gérés par JCMS.

Grâce à WebDAV, l’utilisateur dépose de nouveaux documents par un simple glisser-déposer. Il modifie les documents existant en les ouvrant directement depuis l’explorateur WebDAV. Enfin, si un document est déplacé ou copié dans un dossier, il est recatégorisé en conséquence.

L’accès à WebDAV est protégé à plusieurs niveaux :

  1. Les accès WebDAV doivent être autorisés pour le site ;
  2. Il est possible de définir des plages d’adresses IP autorisées à faire des accès WebDAV ;
  3. Les utilisateurs doivent être authentifiés et disposer du droit de gestion WebDAV.
Explorateur WebDAV

Pour plus de détails, consulter l'article JCMS 5.5: Accès WebDAV.

2.7 URL intuitives

Il est parfois nécessaire de diffuser en clair les URL d’accès à certaines parties ou publications d’un site. C’est par exemple le cas d’un site comportant plusieurs sous-sites autonomes. Si on souhaite communiquer les URL d’accès à ces sites dans des médias non interactifs (papier, radio, télévision, …), celles-ci doivent être simples à taper, explicites et mémorisables. Or, les URL natives de JCMS sont composées pour la plupart d’un appel à la JSP display.jsp et d’un identificateur, ce qui les rend ni explicite et ni mémorisable.

Pour répondre à ce besoin, JCMS 5.5 introduit les URL intuitives (friendly-URL). Il s’agit d’associer une chaîne de caractère simple à retenir à une publication ou une catégorie. Par exemple, sur JaliosXperience l’URL intuitive "/faq" est associée à la FAQ d’installation de JCMS. Cette publication est donc accessible via l’URL faq.

Ces URL peuvent aussi être structurées comme un chemin de fichier et il est possible d’associer plusieurs URL intuitives à une même publication. Par exemple, la FAQ de JaliosXperience est aussi accessible par documentations/faq.

Les URL intuitives se déclarent dans l’éditeur de catégories ou lors de l’édition d’un contenu (onglet Avancé).

Déclaration des URLs intuitives d’une catégorie

Les administrateurs disposent d’une interface permettant de connaître l’ensemble des URL intuitives déclarées dans un espace de travail et sur l’ensemble du site.

Liste des URL intuitives

Pour plus de détails, consulter l'article JCMS 5.5 : Mise en oeuvre des URLs intuitives.

2.8 Interface avec les bases de données

JCMS 5.5 permet de mettre en relation une publication et des données issues de bases de données externes. Pour cela, deux nouveaux types de champs sont à la disposition des contributeurs : les requêtes SQL et les enregistrements de BD. Un troisième type de champ, les résultats de requête SQL, est destiné à l'affichage.

Le type de champ "Requête SQL" permet à l’utilisateur de saisir une requête SQL. Ces champs sont destinés à des contributeurs connaissant à la fois le langage SQL et le modèle de donnée de la base interrogée.

Champ Requête SQL

Le type de champ "Enregistrement de BD" permet d’associer un enregistrement d’une base de donnée à une publication JCMS. A la saisie de la publication, le contributeur choisit l’enregistrement en cliquant sur l’icône qui liste dans une nouvelle fenêtre l'ensemble des enregistrements correspondant aux critères décrits dans le champ par le concepteur du type de publication.

Champ Enregistrement de Base de données

2.9 Nouvelle présentation de l’historique des changements

La présentation de l’historique des changements a été revue afin d’améliorer la lisibilité. Les champs n’ayant pas subi de changement sont grisés. Ainsi, on perçoit plus rapidement les versions pour lesquelles il y a eu un changement notable (état, droits, catégories, …). Pour les versions correspondant à changement d’état, une icône indique si ce changement d’état a été accompagné d’un commentaire ; celui-ci apparaît en passant le pointeur de la souris sur cette icône.

Les changements portant sur les droits de lecture et de modification sont détaillés. Enfin, si, il s’agit d’une publication supprimée, la date de suppression est indiquée.

Nouvelle présentation de l’historique

2.10 Support des grands volumes de catégories

Il est maintenant possible de disposer de plusieurs dizaines de milliers de catégories sans que les performances soient dégradées (dans les versions précédentes, la limite était de l’ordre quelques milliers de catégories). Pour cela, les arbres de catégories de JCMS 5.5 exploitent la technologie AJAX, qui permet de charger dynamiquement le contenu des branches au fur et à mesure des ouvertures.

2.11 Champs images

A la déclaration du champ, il est possible de définir une taille de dimensionnement pour les images. Dans ce cas, une vignette correspondant aux dimensions indiquées sera générée dans le gabarit d’affichage détaillé.

Les champs image peuvent aussi recevoir une zone de déclaration d’une carte cliquable.

Enfin, les champs images peuvent à nouveau avoir accès à l’explorateur de fichier (cette option avait été supprimée dans JCMS 5.0).

De nouvelles options pour les champs images

2.12 Nouveaux tags wiki

Les zones de texte wiki supportent deux nouveaux tags :

  1. [verbatim]…[/verbatim] : préserve le texte contenu dans le tag ;
  2. [quote]…[/quote] : fait une citation du texte contenu dans le tag.
Nouveaux rendus pour Wiki via les balises [quote] et [verbatim]

2.13 Contrôle des liens légers (Wiki et URL internes)

Depuis sa toute première version, JCMS assure la cohérence sur les champs de type liens. Ces liens sont dits fort car ils relient structurellement deux objets et se matérialisent dans la classe Java par une référence. Ainsi, on ne peut pas supprimer une FAQ s'il existe des entrées de FAQ la référençant.

JCMS 5.5 étend ce principe aux références contenues dans les champs textes. Ces références sont dites légères car elles ne sont pas structurelles mais implicites. Grâce à ce principe, si une zone de texte Wiki ou une zone de texte riche contient un lien sur un contenu celui-ci ne peut plus être supprimé involontairement. De plus, la liste des contenus référents est affichée dans l’onglet Avancé de chaque publication.

Le contributeur peut néanmoins forcer la suppression d'une publication référencée (en cochant la case "Forcer la suppression"). Dans ce cas, les liens légers présents dans les zones Wiki n'apparaitront plus et ceux présents dans les zones de texte riche amèneront sur la page d'accueil du site.

Alerte lors de la suppression d’une publication référencée par des liens dans des zones de texte.

3. Plus d’outils pour les administrateurs fonctionnels

3.1 Une nouvelle interface d’administration

L’interface d’administration a été entièrement refondue de manière à offrir une meilleure ergonomie, plus proche des rôles métier.

Nouvelle interface d’administration d’un espace de travail

3.2 Opérations globales étendues

Il est maintenant possible de faire des opérations globales sur les groupes, les membres, les catégories et les espaces de travail. JCMS gère un panier par type de donnée.

Paniers des membres

Par ailleurs, les opérations globales sur les publications ont été enrichies. D'une part, les administrateurs d’espace de travail peuvent changer les rédacteurs des publications. D'autre part, tous les contributeurs peuvent faire des opérations de rechercher/remplacer sur les titres des publications.

Rechercher/remplacer dans les titres des publications du panier

3.3 Propriétés sur les types de publications

Les administrateurs fonctionnels peuvent paramétrer finement chaque type de publication qu'ils utilisent dans leur espace de travail. Outre le choix du workflow, ils peuvent préciser :

  • Les droits par défaut ;
  • Les catégories par défaut ;
  • les gabarits d'affichage à utiliser ;
  • les onglets à afficher et à masquer ;
  • les CSS à utiliser pour les zones de texte riche ;
  • si des forums ou des avis peuvent être attachés aux contenus.

3.4 Workflow

3.4.1 Alertes / Relance

Afin d’accélérer le circuit de validation, il est possible de déclarer pour chaque état une fréquence de relance. A échéance, toutes les actions entrantes sont à nouveau exécutées. De plus, une nouvelle action a été ajoutée : la notification des administrateurs de l’espace de travail.

Edition de la fréquence des rappels

3.4.2 Tableau de bord des workflows

Un tableau de bord des publications en cours de rédaction est disponible pour les administrateurs de travail. Deux vues sont présentées :

La vue par état : pour chaque état, les publications qui s’y trouvent sont listées.

Tableau de bord des workflows présenté par état

La vue par rôle : pour chaque rôle, on liste les publications qui doivent être traitées par les membres de ce rôle (selon la structure du workflow, une même publication peut apparaître pour plusieurs rôle).

Tableau de bord des workflows présenté par rôle

Pour les deux vues, il est possible de filtrer par modèle de workflow et par type de publications. Pour chaque publication listée, une icône jcms55_icon_bell indique le niveau de retard actuel (si cette publication se trouve dans un état avec relance). Il s’agit d’une estimation basée sur la fréquence des relances. L’icône permet de relancer manuellement les contributeurs.

En complément du tableau de bord, la liste des tâches a été revue afin de présenter des listes homogènes avec la liste des contenus et celles du tableau de bord.

Liste des tâches

3.4.3 Edition plus souple

Dans JCMS 5.5, les modifications sur les workflows ne sont prises en compte que lorsqu’on clique sur le bouton "Enregistrer et appliquer". De plus, à l’instar de l’éditeur de type, une couleur est associée à chaque type de changement : rouge pour les nouveautés et bleu pour les modifications.

Edition d’un modèle de workflow

3.4.4 Structure plus riche

La structure des workflows a été fortement enrichie dans JCMS 5.5. Outre l’ajout des rôles ouverts permettant aux contributeurs d’affecter les rôles pour chaque publication, il est maintenant possible de choisir le type de combinaison (ET/OU) pour les rôles nécessitant une approbation multiple : il est ainsi possible de définir un rôle faisant intervenir 1 membre du groupe G1 OU 2 membres du groupe G2.

Nouvelles options pour la définition des rôles du workflow

JCMS 5.5 propose deux catégories de modèle workflows : les workflows éditoriaux et les workflows de traitement. Les workflows éditoriaux possèdent systématiquement les états Planifié, Publié, Expiré et Archivé. Les workflows de traitement n’imposent que la présence de l’état archivé. Ils sont typiquement destinés à gérer le cycle de vie de formulaires ou de contenus non éditoriaux (p. ex. formulaires de demande de congés, de réservation de salle, de commande, ...)

Edition d’un workflow de traitement

Enfin, deux nouvelles possibilités sont offertes :

  1. utiliser les groupes transversaux dans les définitions des rôles
  2. autoriser un utilisateur à travailler dans un état du workflow sans pour autant que cela lui donne le droit de changer l’état de la publication.

3.5 Profils de consultation (audiencement)

JCMS 5.5 introduit les profils de consultation ; une nouvelle façon de gérer les droits d’accès aux contenus. Le principe, parfois appelé audiencement, consiste à déduire les droits de consultations du croisement des catégories d’un contenu et des catégories du membre qui cherche à accéder au contenu. Pour cela, une ou plusieurs branches de catégories sont définies comme axes de définition du profile. Chaque axe représente une dimension des contenus et des utilisateurs (métier, hiérarchie, zone géographique, …). Un contenu n’est alors accessible pour un membre que si l'audience coincide pour tous les axes.

Par exemple, si un contenu est placé dans les catégories Métier>Achat, Hiérarchie>Directeur, Géographie>Monde>Europe>France, il n'est accessible qu’aux membres placés dans ces catégories, dans une catégorie parent ou dans une catégorie fille (mais pas dans les catégories voisines).

Edition du profil de consultation d’un membre

Pour être géré par les profils de consultation, un type de publication doit être indiqué comme tel dans l’éditeur de type. Dans le gestionnaire des contenus, une nouvelle colonne indique les contenus profilés et leur portée (icône ).

Indication des publications profilées

3.6 Tableaux de bord des données

JCMS 5.5 fournit aux administrateurs techniques et fonctionnels des vues de synthèse sur les données qu’ils gèrent dans un espace de travail. Ces tableaux de bord permettent d’avoir une vue d’ensemble sur les catégories, les contenus et les portlets de l’espace de travail.

jcms55_dataReport_content
Tableau de bord des données. Onglet des contenus

L’onglet "Liens externes" liste toutes les URL externes référencées dans les champs zone de texte, zone de texte riche et URL des publications de cet espace de travail.

jcms55_dataReport_link
Tableau de bord des données. Liste des liens externes

3.7 Plus de contrôle d’intégrité

Toute publication ne respectant pas ses contraintes d’intégrité apparaît avec l’icône jcms55_icon_warnSmall dans le gestionnaire des publications.

Indication des violations d’intégrités

Par ailleurs, il n’est plus possible de supprimer une catégorie référencée dans les champs ou les propriétés d’un type contenus.

3.8 Dublin Core

JCMS 5.5 produit en standard les méta-données Dublin Core dans les pages du front-office en utilisant les associations suivantes :

  1. DC.title : le titre localisé de la publication
  2. DC.creator : le nom du contributeur
  3. DC.subject : les catégories de la publication
  4. DC.description : le résumé localisé de la publication
  5. DC.publisher : le nom du site
  6. DC.date : la date de publication
  7. DC.type : le libellé du type de publication
  8. DC.identifier : l'identifiant JCMS de la publication
  9. DC.language : la langue utilisée pour la localisation

3.9 Nouvelle terminologie

Quelques termes ont été remaniés :

  • Les rédacteurs remplacent les auteurs dans une publication ;
  • Le droit de contribuer remplace le droit de publier.

4. Plus de robustesse pour les administrateurs techniques et les exploitant

4.1 Nouvelle organisation de l’espace d’administration

L’interface de l’espace d’administration a été entièrement réorganisée. Une séparation nette a été faite entre l’administration fonctionnelle, l’administration technique et les outils de développement.

L’administration technique a été découpée en 3 grandes parties :

  1. les outils de supervision : information sur l’état du site, la consommation mémoire, l’état du store, …
  2. les outils de configuration : édition des propriétés ;
  3. les outils d’exploitation : Arrêt/démarrage des écritures, gestion des index de recherche, des caches, …

Les outils de développement (gestion des types, gestion des changement, nettoyage du store, …) ont été séparés afin de pouvoir être masqués sur les instances de production (paramétrable dans l'onglet Avancé de l'éditeur de propriétés).

Nouvelle ergonomie de l’espace d’administrateur

4.2 Nettoyage du store

L’interface et l’algorithme de nettoyage ont été entièrement revus. Contrairement aux précédentes versions de JCMS, l'algorithme de nettoyage ne perd plus systématiquement l'historique des données. Il est maintenant possible de préciser la portée du nettoyage et les règles à appliquer. En plus des règles standard, de nouvelles règles de nettoyage peuvent être ajoutées (p.ex. ne pas nettoyer les contenus en cours de rédaction, ne pas nettoyer les trois dernières modifications, …).

La portée du nettoyage consiste à déterminer un début et une fin qui peuvent s’exprimer de plusieurs façons :

  • une date ;
  • une estampille ;
  • une marque du store ;
  • l’estampille de copie de travail (déposée par le DeployManager).

Les règles proposées en standard permettent de :

  • fusionner les mises-à-jour successives sur une même données ;
  • préserver les mises à jour portant sur les méta-données des publications (droits, catégories, workflow, rédacteur, ...) ;
  • effacer toutes les opérations portant sur des objets supprimés.
Interface de nettoyage du store

4.3 Contrôle lors du démarrage et en cours d’exploitation

De nouveaux contrôles ont été ajoutés afin d’assurer le bon fonctionnement de l’application. Ainsi lors du démarrage, JCMS s’arrête si il détecte une instance déjà chargée ou si des erreurs ont eu lieu lors de la compilation des types générés.

JCMS 5.5 contrôle plus finement l’état du store. Si, au démarrage ou en cours d’exploitation, un problème d’écriture survient sur le store ou si le fichier store.xml est modifié par un autre processus alors les écritures sont arrêtées et une alerte est envoyée par mail à tous les administrateurs du site.

4.4 Désactivation des écritures

L’activation et la désactivation des écritures se fait désormais directement depuis la page d’accueil de l’espace d’administration. Lors de la désactivation, l’administrateur peut renseigner un message de maintenance qui défilera dans le bandeau de l’espace d’administration et dans les espaces de travail. Il est important de noter que contrairement aux précédentes versions de JCMS, la désactivation des écritures ne désactive pas les écritures liées à des synchronisations JSync. Celles-ci peuvent être arrêtées en désactivant la réplication dans l'éditeur de propriétés.

4.5 Vue XML de l’état du site

Le JSP admin/statusXml.jsp fournit une vue XML de l’état du site. Il reprend les informations présentes dans l’état du site, l’état du store et l’état de la réplication. Ce JSP est destiné à des processus externes de supervision.

4.6 Reverse Proxy multiples

JCMS 5.5 permet de déclarer plusieurs Reverse Proxy afin de supporter des architectures complexes (redondance des répartiteurs de charge, plusieurs DNS pour un même Reverse Proxy, …)

Interface de configuration des Reverse Proxy

4.7 Liste des révisions de classes

En plus de la liste des bibliothèques Java chargées, l’administrateur peut consulter en détail les révisions des classes Java. Ceci permet d’identifier rapidement une classe qui a été modifiée par rapport à la distribution originale (par exemple, suite à l’application d’un correctif).

4.8 Notes d’administration

Les administrateurs peuvent noter ou s’échanger des informations via un système de notes. Ces notes sont enregistrées dans le fichier WEB-INF/data/admin-notes.prop.

Notes d’administration

4.9 Tableaux de bord

Comme pour les administrateurs fonctionnels, les administrateurs techniques disposent de tableaux de bord mais sur la totalité des espaces de travail du site. Ils disposent aussi d’une interface listant la totalité des URL intuitives utilisées dans le site.

jcms55_admin_dataReport
Tableaux de bord des données

4.10 Journal des événements

Les administrateurs techniques disposent desormais d'une interface dans l'espace d'administration pour consulter les 50 derniers événements enregistrés dans le fichier WEB-INF/data/jcms.log.

jcms55_admin_dataReport
Journal des événements

5. Plus de paramétrages pour les webmestres

5.1 Nouveau moteur de composition pour le portail

Le portail de JCMS 5.5 utilise par défaut un nouveau moteur de composition produisant des pages plus légères. Pour cela, la composition en table a été remplacée par une composition en blocs (balise <div>) ; plus légère et plus facilement remaniable en CSS. Par ailleurs, seules les feuilles de styles CSS et les fichiers javascript réellement nécessaires sont inclus dans la page.

Dans le cas de migration d'un site, les anciens paramétrages restent compatibles en utilisant le précédent moteur de composition. Pour cela, il faut positionner la propriété display.portal.behavior.backcompatibility à true (dans le fichier WEB-INF/data/webapp.prop). Néanmoins, pour les sites démarrant avec JCMS 5.5, le nouveau moteur de rendu doit être utilisé.

5.2 Support de XHTML et d’UTF-8

Le front-office de JCMS 5.5 est conforme à XHTML ; à l’exception des textes issus de l’éditeur de texte riche qui produit du code conforme à HTML 4 (une prochaine version de JCMS intégrera un nouvel éditeur de texte riche conforme avec XHTML). Le back-office est partiellement conforme à XHTML.

Toutes les pages produites par JCMS 5.5 (front-office et back-office) sont encodées en UTF-8. Tous les gabarits de contenu et portlet qui ont été retravaillés doivent être encodé en UTF-8.

5.3 Détection des PDA

JCMS 5.5 détecte les navigateurs issus d’un PDA. Par défaut, si un PDA requête la page d’accueil du site, il est redirigé vers le mini site dédié au PDA (custom/jcms/indexPDA.jsp). Il est possible d’aiguiller vers un portail adapté au PDA en modifiant la redirection qui se trouve dans index.jsp.

5.4 Interface avec les bases de données

Dans de nombreux cas d’usage, JCMS constitue l’une des briques du SI de l’entreprise. Pour encore mieux s’intégrer avec les autres sources d’information du SI, JCMS 5.5 introduit trois nouveaux types de champ permettant de présenter des informations issues d’une base de données lors de l’affichage d’une publication JCMS :

  1. Le champ Requête SQL (SQL Query) permet de saisir une requête SQL et d’afficher les résultats correspondants
  2. Le champ Enregistrement de BD (DB Record) permet de choisir un enregistrement dans une table (ou une vue) de la base de donnée
  3. Le champ Résultat SQL (SQL Result) affiche les résultats d’une requête SQL dont les paramètres sont issus d’autres champs de la publication.

La PortletSQL est une nouvelle portlet qui affiche les résultats d’une requete SQL.

Pour plus de détails, consulter l'article JCMS 5.5 : interfaçage avec des bases de données externes.

5.5 De nouvelles options pour les portlets

Portlet Navigation

La Portlet Navigation dispose d’un nouveau gabarit (Menu vertical) qui génère des menus de navigation verticaux. Ce gabarit exploite les icônes de catégorie et leur couleur (en générant des dégradés de couleurs pour les sous-catégories).

Gabarit Menu Vertical de la Portlet Navigation

Portlet Membres Connectés

La portlet des Membres Connectés affiche des informations cohérentes sur les environnement répliqués (sous réserve que le serveur d’application assure la réplication des sessions).

Portlet Recherche

La Portlet Recherche dispose des mêmes options que celles de l’interface de recherche avancée (rechercher dans les catégories, dans les archives, …)

Portlet Menu

La Portlet Menu peut afficher l’icône d’accès à la documentation utilisateur

Portal

L’option Catégorie exacte permet d’indiquer si ce portail peut être utilisé pour des catégories situées sous les catégories auxquelles ce portail est rattaché. Ceci est particulièrement pratique lorsque l’on veut placer un portail sur une catégorie C et que les sous catégories de C puissent continuer à utiliser un portail attaché à une catégorie au-dessus de C.

Redirection

La portlet de Redirection dispose d’une nouvelle option permettant d’effectuer une redirection sur le premier fils de la catégorie choisie.

5.6 Cloisonnement des erreurs des portlets

Lors du développement et de la mise au point de nouvelles portlets des exceptions peuvent survenir. JCMS 5.5 offre un meilleur support pour ces exceptions d’une part en les cloisonnant au sein de la zone d’accueil de la portlet afin qu’elles ne cassent pas toute la page. D’autre part, en listant la pile d’exécution de l’exception (stack trace).

Cloisonnement des exceptions des portlets

5.7 Autres nouveautés

L’administrateur peut décider si, lors de l’authentification, les utilisateurs peuvent choisir d’avoir ou non un cookie persistant.

Il est possible de choisir l’ordre des langues dans l’éditeur de propriété. Cet ordre est respecté lors de l’affichage des menus de langues. De plus, le webmestre peut aisément changer la présentation des langues dans ces menus (y compris le drapeau) en retravaillant le CSS css/jalios/misc.css.

Le rendu Wiki a été amélioré afin de faciliter la mise en forme par CSS (cf. css/wiki.css).

6. Plus d'ouverture pour les développeurs

6.1 Outils de développement

Les outils de développements ont été regroupés dans la page d’accueil de l’espace d’administration. On y retrouve :

  • La gestion des types de publication
  • La gestion des changements
  • Le nettoyage du store
  • Le profiler de portail

6.1.1 Le profiler de portail

Le profiler de portail permet au développeur de repérer les portlets les plus consommatrices. Pour cela, il mesure le temps de traitement unitaire de chaque portlet ainsi que leur consommation mémoire. Lorsque le profilage est terminé, un tableau de synthèse affiche les moyennes des temps de traitement et des consommations mémoire.

Résultat d’une analyse du profiler de portail

Les consommations mémoires indiquées sont imprécises et ne doivent être prise que pour estimer l’ordre de grandeur. D’une part, les informations fournies par les API Java ne tiennent pas compte des objets inutilisés mais pas encore libérés. D’autre part, le garbage collector peut se déclencher durant le traitement d’une portlet et provoquer des mesures erronées.

Le profiler peut aussi produire les résultats directement dans la page analysée.

Affichage du profiling en contexte

6.1.2 Nettoyage et pose de marques dans le store

JCMS 5.5 intègre un nouveau système de nettoyage du store (cf.section 4.2). Cet outil est particulièrement utile pour les développeurs qui peuvent ainsi supprimer du store toutes les opérations portant sur des données de tests avant de faire une livraison en production.

Lorsque l'on travaille sur une copie de travail obtenue par le DeployManager, il est possible de demander un nettoyage portant uniquement sur les opérations produites sur la copie. En complément au nettoyage du store, JCMS 5.5 permet au développeur de poser des marques dans le store. Ces marques peuvent ensuite être exploitées pour délimiter les zones de nettoyage.

Interface d’ajout de marques dans le store

6.1.3 Editeur de types

L’éditeur de type permet de transformer n’importe quel type de champ en champ caché. Ce champ n’apparaît alors pas lors de l’édition par le contributeur mais il peut être alimenté par un DataController lors de chaque soumission. Seuls les administrateurs disposent d’un bouton permettant de faire apparaître tous les champs cachés au sein d’un formulaire d’édition.

L’éditeur de type est plus robuste et empêche la suppression d’un type si celui-ci est référencé dans un champ lien d’un autre type. La suppression des données référencées dans les types de publication (catégories et groupes) est aussi contrôlée.

Enfin, le générateur de code est encore plus rapide à compiler les types lors du démarrage du site.

6.2 De nouvelles API

6.2.1 Accès à la requête http et au JcmsContext depuis n’importe quelle méthode

La méthode channel.getCurrentServletRequest() permet d’accéder à la requête http courante (si elle existe). Ceci permet, entre autre, de développer des contrôles d’accès basés sur une information contextuelle (par exemple interdire la consultation de certains contenus si la requête est extérieure à l’intranet).

D’une façon similaire, la méthode channel.getCurrentJcmsContext() permet d’accéder au contexte JCMS (si il existe). Le JcmsContext encapsule toute une série d’informations liées au traitement de la requête (utilisateur authentifié, type de navigateur, client, langue utilisée, …)

6.2.2 DataController

Plusieurs nouvelles fonctionnalités ont été apportées à l’API des DataController.

Contrôle de l’ordre d’appel des DataController.

Pour les DataController dérivant de la class BasicDataController, il est possible d’indiquer un numéro d’ordre en surchargeant le champ order. Ce numéro d’ordre est respecté lors des invocations de toutes les méthodes du DataController (checkIntegrity(), checkWrite(), beforeWrite() et afterWrite()).

Possibilité d’interrompre une écriture et de forcer la redirection

Il est possible d’empêcher une écriture alors que tous les contrôles sont validés. Par exemple, si JCMS alimente une base de données externe, il peut être nécessaire d’empêcher l’écriture dans JCMS si l’écriture dans la base de donnée a échoué. Pour répondre à ce besoin, un DataController peut interrompre une écriture dans le store en surchargeant la méthode beforeWrite(). Pour cela, il doit positionner l’attribut DO_NOT_STORE à Boolean.TRUE dans la variable context.

Il est aussi possible de forcer la redirection (dans le cas d’une écriture par formulaire Web) en positionnant l’URL de redirection dans l’attribut forceRedirect.

Exemple d’utilisation :

public static class NoWriteDataController extends BasicDataController {
  public void beforeWrite(Data data, int op, Member mbr, Map context) {
    // Prevent store write
    context.put(DO_NOT_STORE, Boolean.TRUE);
    // Redirect to the edit form
    HttpServletRequest req = Channel.getChannel().getCurrentServletRequest();
    if (req != null) {
      logger.warn("Do not store " + data);
      req.getSession().setAttribute(WARNING_MSG, "Data write failed. Please, retry later.");
      String url = ServletUtil.getAbsUrlWithRemovedParams(req, new String[] {"opCreate", "opUpdate", "opDelete"});
req.setAttribute(FORCE_REDIRECT, url);
    }
  }
}

Plus d’informations contextuelles

Lors de l’appel de chaque méthode, les DataController ont accès à des informations contextuelles au traitement via la variable context :

  • CTXT_IGNORE_INTEGRITY_CHECK : indique que la méthode checkIntegrity ne sera pas invoquée (p. ex. lors de la suppression d’une donnée) ;
  • CTXT_WEBDAV : indique que l’opération d’écriture a été déclenchée suite à un accès WebDAV ;
  • CTXT_DOC_UPLOAD : indique que l’opération d’écriture a été déclenchée suite à un dépôt de fichier (via l’interface web).

6.2.3 RightPolicy

La classe RightPolicy permet de contrôler la plupart des politiques de droits de JCMS. Dans JCMS 5.5, toutes les méthodes canBeReadBy() et la méthode canWorkOn() sont désormais appelées quelque soit le contrôle interne de JCMS. Elles reçoivent un premier paramètre isAuthorized qui indique la position de JCMS sur ce contrôle. Il devient donc possible de remplacer totalement la gestion de droits interne y compris lorsque celle-ci détermine que l’accès devrait être refusé.

Par ailleurs, la classe custom.RightPolicy s’est enrichie de nouvelles méthodes liées à la consultation par profil de consultation (audiencement) :

  1. isAudienced() permet d’indique si l’accès à la publication fournit doit être gérée par les profils de consultation ;
  2. checkAudienceRight() : permet de surcharger le contrôle d’accès par profil de consultation.

6.2.4 QueryFilter

Les QueryFilter sont disponibles depuis JCMS 5.0 et permettent de contrôler les recherches en agissant en amont sur les paramètres et en aval sur les résultats.

La principale amélioration pour JCMS 5.5 est de fournir une API permettant aux QueryFilter de se décrire afin d’être intégrés aux interfaces de recherches sans avoir à modifier les JSP de ces interfaces.

Les QueryFilter peuvent, à l’instar des DataController, être ordonnés dans leur traitement (en surchargeant le champ order).

Enfin, le context contient systématiquement le jeu de donnée initial (proposedDataSet) et la requête (request).

Pour plus de détails, consulter l'article JCMS 5.5 : Développement de recherches étendues avec l’API des QueryFilter.

6.2.5 Identificateur virtuel (Virtual ID)

L’utilisation d’identificateur de données en "dur" dans les développements spécifiques ou même les types de publications (catégorie par défaut et groupes par défaut) entraîne des problèmes de réutilisation d’une webapp JCMS à une autre.

Pour faire face à ce problème JCMS 5.5 supporte les identificateurs virtuels qui fonctionnent sur le principe des variables. L’identificateur virtuel est une chaîne de caractère commençant par le symbole ‘$’. Lorsqu’un tel identificateur est fournit aux API de JCMS, celui-ci est résolu en recherchant une propriété portant ce nom.

Exemple d’utilisation :

Dans le fichier WEB-INF/data/webapp.prop on déclare l’identificateur :

$id.FicheDocumentaire.Nomenclature : c_1234

Ensuite on peut utiliser cet identifiant pour obtenir l’objet lié.

Category cat = channel.getCategory("$id.FicheDocumentaire.Nomenclature") ;

6.2.6 Détection des équipements mobiles (PDA et smartphone)

La classe Browser de JCMS 5.0 permet d’obtenir des informations détaillées sur le type de navigateur utilisé. JCMS 5.5 étend ce principe y ajoutant le support des équipements mobiles tels que les PDA et les smartphones.

La classe Browser dispose donc de nouvelles méthodes :

  • isPDA() : renvoie true si il s’agit d’un PDA ;
  • getDeviceScreenWidth() : renvoie la largeur de l’écran ;
  • getDeviceScreenHeight() : renvoie la hauteur de l’écran ;
  • getDeviceScreenDept() : renvoie la profondeur de l’écran ;
  • getDeviceCPU() : renvoie le type de CPU de l’équipement.

Ces informations sont issues de l'analyse des entêtes de requête HTTP. En standard, JCMS 5.5 exploite ces informations pour aiguiller les accès sur la page d’accueil (index.jsp) en provenance de PDA sur un sous-site dédié (custom/jcms/indexPDA.jsp). Mais il est tout à fait possible d’aguiller sur une autre page comme par exemple une page portail conçu pour un écran de PDA. On peut aussi exploiter cette information pour limiter les droits de consultation des publications.

6.2.7 DBUtil

La classe DBUtil est une classe regroupant quelques méthodes utilitaires pour l’accès aux bases de données relationnelles.

6.2.8 Nouvelle API LDAP

L’API LDAP a été entièrement refondu et repose maintenant sur la bibliothèque Netscape Directory SDK for Java. Cette API est plus robuste et plus performante que la précédente et supporte mieux certaines particularités des serveurs LDAP (notamment l’encodage des caractères).

6.2.9 De nouvelles extensions sur l’API

JCMS 5.5 propose de nouveaux points d’extension sur plusieurs composants internes de JCMS.

  • LuceneSearchEngineHooks : permet de modifier certains réglages d’indexation, les analyseurs, la pondération (boost) ;
  • TemplatePolicy : permet de specifier quel gabarit d’affichage détaillé, d’affichage synthétique et d’édition à utiliser ;
  • PortalPolicy : permet d’intervenir dans les choix des éléments du portail, leur CSS, les entête HTML et sur les redirections ;
  • WidgetPolicy : permet de spécialiser le comportement de certains widgets (notamment l’arbre de catégorie, l’éditeur de texte riche, les icônes des widgets, …) ;
  • TreeCatProxy : permet d’agir finement sur le fonctionnement interne de l’arbre de catégories ;
  • StoreCleanFilter : cette classe permet de proposer de nouvelles règles de nettoyage du store ;
  • doDataReportCustom.jsp : ce JSP permet d'ajouter des tableaux de bords sur les données ;
  • Data.getExtraInfoMap() : cette Map présente dans chaque données JCMS permet de stockées des informations transitoires.

6.2.10 Quelques nouvelles méthodes

Classe Méthodes Description
Channel getOrphanFileList() Retourne la liste des fichiers de la zone upload qui ne sont référencés par aucune publication.
Channel getCommonAlarmManager() Retourne le gestionnaire d’alarme commun.
Channel getTypeFieldEntry() Retourne des informations sur un champ d’un type
Channel getPublicationWithoutCategories() Retourne l’ensemble des publications non catégorisée.

Classe Méthodes Description
Publication addAuthorizedMember()
removeAuthorizedMember()
addAuthorizedGroup()
removeAuthorizedGroup()

Ajoute/supprimer un membre/groupe autorisé à consulter cette publication.
Publication getAllWikiText() Retourne le contenu de tous les champs wiki
Publication getAllWysiwygText() Retourne le contenu de tous les champs wysiwyg.
Publication getWeakRefererrerSet() Retourne l’ensemble de publications référantes au travers de liens wiki ou d’URL
Publication getExternalLinkSet() Retourne toutes les URLs externe contenues dans cette publication
Publication isAudienced() Retourne vrai si la publication est audiencée
Publication hasAnyReadRights() Retourne vrai si la publication possède des droits de lecture (remplace l’ancienne méthode hasReadRights())
Publication hasNoReadRight() Retourne vrai si la publication n’a aucun droit de lecture
Publication getWorkCopySet() Retourne l’ensemble des copies de travail attachées à la publication
Publication getRoleMap()
getMemberAssignedToRole()
isInRole()
Retourne des informations sur les membres affectés aux rôles ouvert du Workflow de la publication.

6.3 De nouveaux tags

6.3.1 Le tag <jalios:thumbnail/>

Ce tag génère une image miniature pour une image donnée. Il est aussi capable de générer une capture d’écran pour une URL donnée (en utilisant un service externe comme celui de www.thumbshot.org).

Exemples d’utilisation :

<jalios :thumbnail path=’upload/docs/image/jpg/picture.jpg’ width=’120’ height=’90’/>
<jalios :thumbnail url=’http://www.jalios.com/’ width=’120’ height=’90’/>

6.3.2 Le tag <jalios:pager/>

Ce tag a été entièrement réécrit de façon a être plus performant et plus souple d'usage.

Exemple d’utilisation :

<% Set set = channel.getPublicationSet(Content.class, loggedMember);%>
<jalios:pager name="myPager1" 
      declare='true' 
      action="init"
      size="<%= set.size() %>"/>
<jalios:foreach name='itPub' 
        type='Publication' 
        collection='<%= set %>'
        max='<%= myPager1.getPageSize() %>'
        skip='<%= myPager1.getStart() %>'>
<%= itPub %><br/>
</jalios:foreach>
<jalios:pager name="myPager1" /><br/>

6.3.3 Le tag <jalios:sqlquery/>

Ce tag effectue une requête SQL et produit un objet SQLQueryResult.

Exemple d’utilisation :

<jalios:sqlquery name="resultSet" 
                 dataSource="jdbc/mydb" 
                 query="select * from DATA_TABLE" 
                 maxRows="10" />

6.3.4 Le tag <jalios:checkIntegrity/>

Ce tag contrôle l’intégrité de la donnée fournit (publication, catégorie, groupe, …) Si cette donnée n’est pas intègre, il produit une icône de warning (jcms55_icon_warnSmall).

Exemple d’utilisation :

<jalios:checkIntegrity data="<%= itPublication %>" />

6.3.5 Le tag <jalios:lock/>

Ce tag affiche l’icône cadenas si la publication est en cours d’édition par un autre contributeur.

Exemple d’utilisation :

<jalios:lock data="<%= publication %>" />

7. Incompatibilités

7.1 Store

Lors des migrations, le store doit être convertit au format UTF-8. JCMS 5.5 fournit pour cela un convertisseur (cf. Notes techniques pour l’évaluation des pré-versions de JCMS 5.5). Par ailleurs, pour assurer la compatibilité XHTML certains attributs d’alignement de portlet doivent être passés en minuscules (p. ex align= "Left" en align= "left").

7.2 Propriétés

Les propriétés de langues ont été modifiées :

  • channel.lang et channel.other-lang ont été remplacées par une unique propriété channel.languages
  • channel.default-lang fait son appararition pour définir la langue du site par défaut.

7.3 JSP

Les JSPs qui contiennent des caractères accentués doivent être encodés en UTF-8 et intégrer la directive

<%@ page contentType=’text/html ; charset=UTF-8’ %>

7.4 Indexes Lucene

Les index Lucene de JCMS Universal et des archives ont été déplacés. Les fichiers de configuration de JCMS Universal doivent être mis à jour en conséquence :

  • Index JCMS Universal : WEB-INF/data/lucene/FileIndex/
  • Index des archives : WEB-INF/data/lucene/ArchivesIndex/

En résumé...

Cet article décrit les principales nouveautés apportées par JCMS 5.5. Celles-ci concernent tous les utilisateurs de JCMS : du simple lecteur au développeur. Certaines des nouveautés sont issues des versions de maintenance JCMS 5.0.1 et JCMS 5.0.2.

Sujet
Produits
Publié

16/03/06

Rédacteur
  • Olivier Dedieu

Table des matières

  1. 1. Plus d'interaction pour les utilisateurs
    1. 1.1 Des sites plus rapides
    2. 1.2 Un nouveau moteur de recherche
    3. 1.3 Nouvelle interface pour les forums
  2. 2 Plus d'outils pour les contributeurs
    1. 2.1 Edition Front-Office
    2. 2.2 Choix des valideurs
    3. 2.3 Multilinguisme enrichi
    4. 2.4 Nouvelles fonctionnalités du panier
    5. 2.5 Explorateur de média
    6. 2.6 WebDAV
    7. 2.7 URL intuitives
    8. 2.8 Interface avec les bases de données
    9. 2.9 Nouvelle présentation de l’historique des changements
    10. 2.10 Support des grands volumes de catégories
    11. 2.11 Champs images
    12. 2.12 Nouveaux tags wiki
    13. 2.13 Contrôle des liens légers (Wiki et URL internes)
  3. 3. Plus d’outils pour les administrateurs fonctionnels
    1. 3.1 Une nouvelle interface d’administration
    2. 3.2 Opérations globales étendues
    3. 3.3 Propriétés sur les types de publications
    4. 3.4 Workflow
    5. 3.6 Tableaux de bord des données
    6. 3.7 Plus de contrôle d’intégrité
    7. 3.8 Dublin Core
    8. 3.9 Nouvelle terminologie
  4. 4. Plus de robustesse pour les administrateurs techniques et les exploitant
    1. 4.1 Nouvelle organisation de l’espace d’administration
    2. 4.2 Nettoyage du store
    3. 4.3 Contrôle lors du démarrage et en cours d’exploitation
    4. 4.4 Désactivation des écritures
    5. 4.5 Vue XML de l’état du site
    6. 4.6 Reverse Proxy multiples
    7. 4.7 Liste des révisions de classes
    8. 4.8 Notes d’administration
    9. 4.9 Tableaux de bord
    10. 4.10 Journal des événements
  5. 5. Plus de paramétrages pour les webmestres
    1. 5.1 Nouveau moteur de composition pour le portail
    2. 5.2 Support de XHTML et d’UTF-8
    3. 5.3 Détection des PDA
    4. 5.4 Interface avec les bases de données
    5. 5.5 De nouvelles options pour les portlets
    6. 5.6 Cloisonnement des erreurs des portlets
    7. 5.7 Autres nouveautés
  6. 6. Plus d'ouverture pour les développeurs
    1. 6.1 Outils de développement
    2. 6.2 De nouvelles API
    3. 6.3 De nouveaux tags
  7. 7. Incompatibilités
    1. 7.1 Store
    2. 7.2 Propriétés
    3. 7.3 JSP
    4. 7.4 Indexes Lucene