Gestion du contenu éditorial d’un site web avec JCMS (JALIOS)

  • Sharebar

Contexte
Lors d’une de mes dernière mission, j’ai travaillé sur la TMA d’une banque en ligne connue développé en Java-J2EE autour du framework Spring.
L’une des problématiques principale était la multiplication des livraisons en production à cause de modifications minimes (mais nécessaires pour le business du client) au niveau du contenu éditorial du site (texte ou image) : par exemple les taux des livrets d’épargne.
Pour remédier à cela, nous avons pensé à l’utilisation d’un outil CMS permettant au client de modifier lui-même le contenu éditorial sans que ça nécessite une mise en production.
Après étude interne, deux solutions se sont dégagées : Noheto (Wedia) et JCMS (Jalios).
Notre choix s’est porté sur JCMS car le développement des gabarits est plus simple dans cet outil entre autres.

Présentation de JCMS
JCMS est une solution développée par Jalios qui offre des fonctions de portail, de gestion de contenu, de GED « légère », et des espaces collaboratifs pour l’entreprise. C’est une solution complète mais légère et simple à utiliser, qui permet de maîtriser sa gestion de contenu. Elle est flexible et combine les avantages de l’application prête à l’emploi et la souplesse et l’extensibilité d’une puissante plate-forme de développement Java et XML. Celle-ci peut être étendue pour répondre à tous les besoins de customisation, et s’intégrer facilement dans le système d’information de l’entreprise.
Tous les acteurs, à partir du portail, impliqués ou non dans le processus éditorial, peuvent, intuitivement, organiser leur portail, contribuer ou accéder à l’information, participer aux échanges au sein des espaces collaboratifs, ou accéder aux processus en ligne, et ce simplement à l’aide de leur navigateur.
Les contenus gérés peuvent aussi bien être des publications Web structurées que des documents ou des fichiers.

Architecture fonctionnelle de JCMS

Quelques notions de base
JCMS sépare la forme du fond. La structure des publications est définie au travers des types de contenu. Un type de contenu se compose de champs ayant chacun des attributs. Un type peut également être éditorial, uniquement composé d’un champ texte riche.
A un type de contenu donné, sont associés un ou plusieurs gabarits qui définissent la présentation des publications de ce type. Par ailleurs, un workflow définit le cycle de vie des publications d’un type donné ou d’un site ou espace donné: quels utilisateurs (membres) ayant tel rôle sont autorisés à créer, éditer ou valider ces contenus.
Pour publier un contenu de ce type, le contributeur choisit son gabarit de présentation, les droits en lecture associés à cette publication, et les catégories auxquelles sont rattachées le contenu et le site ou celui-ci sera publié. La notion de catégorie a de multiples usages dans JCMS : pour définir la position dans le site Web, pour associer des mots clés, organiser les documents, pour faciliter la recherche… JCMS associe à chaque contenu des méta-données telles que la date de création l’état dans le workflow ou l’auteur.

Structuration du contenu
Pour définir la structure des contenus, le webmestre utilise l’éditeur de types. A l’aide d’un formulaire web, il choisit les champs de son type parmi les types élémentaires : ligne de texte, zone de texte simple, zone de texte riche, document, image, entier, flottant, URL, email, , date, donnée SQL, catégorie, membre ou lien… ou bien une liste de l’un quelconque de ces types élémentaires.
Le champ de type lien permet de définir des types complexes et de structurer finement des publications en liant entre eux des types de publication, des membres ou des groupes: ceci permet de définir des publications telles que des tâches composées de sous-tâches.

La structure des types de contenus  peut  être créée ou modifiée à partir d’une interface Web

Pour chaque champ qui compose la structure du document, l’administrateur choisit des attributs : ce champ est-il obligatoire, apparaît-il dans la vue de synthèse, ou sera-t-il pris en compte dans les recherches textuelles ? Pour imposer des contraintes aux valeurs saisies il a la possibilité d’appliquer des patterns (code postal, numéro de téléphone) ou des intervalles de valeur.
Une fois la structure du nouveau type définie et sauvegardée, un simple redémarrage du service (ou plus généralement le déploiement à l’aide du DeployManager) permet la génération dynamique du type, des formulaires de saisie et des gabarits de présentation par défaut.

Gestion de la présentation
L’interface utilisateur de JCMS consiste en un ensemble de pages Web dynamiques qui permettent l’interaction directement avec l’application à partir d’un navigateur.

JCMS rend accessible aux infographistes l’édition WYSIWYG des gabarits JSP à l’aide de l’éditeur HTML  Dreamweaver.

Un site peut être adapté à toutes les chartes graphiques grâce à l’approche modulaire des gabarits JSP.
Les gabarits JSP automatiquement générés contiennent des sélecteurs CSS qui permettent de modifier la mise en forme par modification des fichiers CSS. L’infographiste ne modifiera les fichiers JSP que pour des adaptations importantes de la présentation. L’originalité de JCMS réside dans l’usage des taglibs JSP qui permet à l’infographiste de maîtriser l’édition des gabarits JSP à l’aide d’un éditeur HTML tel que Macromedia Dreamweaver, sans avoir à connaître la programmation java.
JCMS fournit une librairie de plus de 30 Tags JSP (pour la recherche, les itérations, la mise en forme…), manipulables sous DreamWeaver. Ceci permet à un infographiste d’utiliser son éditeur HTML pour, à partir du gabarit généré automatiquement par JCMS, modifier en mode WYSIWYG le JSP de présentation et appliquer la charte graphique ou la présentation qu’il souhaite. Avec cette aide, il est capable d’interpréter ces tags et peut les manipuler en copier/coller sans risquer de corrompre le code Java d’accès aux données. Il n’est pas obligé de connaître la programmation Java.

Intégration du contenu JCMS dans les pages du site
Les interfaces précédentes permettent au client de gérer les contenus éditoriaux de son site. Il ne restait plus à l’équipe de développement que d’intégrer les contenus dans les pages du site.
Deux méthodes ont été utilisées :

  • l’intégration comme flux html d’un contenu avec sa présentation :
<c:import url=”http://host_jcms:port/context_jcms/displayContent.jsp?id=j_xxx” />
  • l’intégration d’un contenu sans présentation via un appel Rest :
import com.jalios.rest.client.ClientSession;
import com.jalios.rest.client.JcmsApp;
import com.jalios.rest.client.ClientUtil;

public class SampleController extends AbstractController {

private static Logger logger = Logger.getLogger(SampleController.class);

public ModelAndView handleRequestInternal(
HttpServletRequest request,
HttpServletResponse response) throws Exception {

ModelAndView mav = new ModelAndView();

try {
String baseHref = “http://host_jcms:port/context_jcms/”;
JcmsApp jcmsApp = new JcmsApp(new ClientSession(baseHref));

String dataId = “j_xxx”;
JcmsResource dataResource = jcmsApp().getData(dataId);

/* Pour extraire des informations de ce résultat XML, il est possible d’utiliser des expressions XPath. Dans l’exemple suivant, on extrait letitre de la publication */

String title =
ClientUtil.getString(dataResource,”/data/field[@name='title']“);

….

} catch (RestException re) {
logger.warn(“Exception occured while data retrieved from openapi !”, re);
}

….

return mav;
}
}

La présentation du contenu est ensuite gérée au niveau de la jsp.

Conclusion
L’utilisation de JCMS  a permis de donner la possibilité au client de gérer lui-même une partie importante du contenu éditorial du site. Ainsi, le client a gagné en réactivité face à ses concurrents, il peut donc adapter au besoin son offre rapidement sans passer par un processus de livraison contraignant.
L’équipe de développement a pu de son côté limiter les livraisons et le risque de régressions.

This entry was posted in CMS, Java. Bookmark the permalink.

2 Responses to Gestion du contenu éditorial d’un site web avec JCMS (JALIOS)

  1. Benj says:

    Bonjour je souhaitais savoir si vous avez utilisé le module portail dans le cadre de son implémentation et ce que vous en avez pensé. Merci

    • hdemni says:

      Bonjour.
      Personnellement je n’ai pas utilisé le module portail quand j’étais sur le projet. Ca devait être utilisé dans de prochaines évolutions mais je ne sais pas ou s’en est .
      Mais j’ai pu utiliser quelque fois l’éditeur de type et j’ai trouvé ça intuitif, d’autant plus que les types sont réutilisables avec une notion équivalente à l’héritage.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>