Gestion de contenus = Générateur d’application ?

Les outils de gestion de contenus sont, à leur manière, des générateurs d’application puissants et flexibles. Certaines applications simples de gestion peuvent être conçues par leur intermédiaire, sans code, donc sans bug.

Imaginez que vous ayez à réaliser une gestion des offres d’emploi intégrée à un site web. Il y a quelques années, on ne se serait guère posé de question : prenez un SGBD, définissez une table ‘Offres’, liée à des tables ‘Secteur’, ‘Fonction’, etc. Développez les pages de saisie des offres, la gestion des habilitations, des validations, de la restitution des offres, de la recherche multicritère, quelques autres pages encore, et vous y êtes ! Entre 10 et 30 jours de développements, au bas mot.

Or, un outil de gestion de contenus permet aussi de gérer des offres d’emploi. Comme il permet de gérer des recettes de cuisine ou bien un catalogue de lecteurs MP3, car toutes ces entités sont des contenus en puissance.

Les bons outils CMS permettent de définir ce qu’on appelle des contenus structurés, c’est-à-dire qu’il est possible de définir tous les champs qui décrivent un nouveau type de contenu. S’il s’agit d’une offre d’emploi, par exemple, on pourra le structurer en : fonction, secteur, lieu, salaire, études, expérience, etc.

Et une fois qu’on a créé ce nouveau type de contenu, différents utilisateurs peuvent saisir des offres d’emploi, ces offres d’emploi peuvent suivre un circuit de validation avant d’être mises en ligne, et être retirées et archivées après un certain délai. Les offres d’emploi pourront être rangées par catégories et toutes formes de recherches multicritère pourront être offertes aux visiteurs. Enfin, si l’on doit plus tard ajouter un champ pour mieux qualifier l’offre d’emploi, une simple opération de back-office suffira.

Développer une application sans code, c’est la finalité des générateurs d’applications, un rêve parfois approché, jamais totalement atteint. Développer sans code, c’est non seulement un gain de productivité extraordinaire, c’est aussi un bénéfice important en termes de qualité, car en règle générale, moins de code, c’est moins de bugs.

Un référentiel de contenus que nous avons réalisé récemment manipule des descriptions de téléphones portables, sous la forme de contenus structurés. Un téléphone portable est ainsi décrit par un grand nombre de champs d’information unitaires : marque, modèle, poids, fréquences, dimensions, autonomie… au total plus de 200 champs. Et quelques milliers de téléphones.

Le premier réflexe, pour gérer de telles entités, est celui de la bonne vieille base relationnelle. Pourtant, c’est au moyen d’un outil de gestion de contenus que nous avons modélisé cette base des téléphones, simplement en créant un type de contenu spécifique.

Les fonctions classiquement liées à la gestion de telles entités sont très proches des fonctions natives d’un outil de gestion de contenus : gestion des utilisateurs, des habilitations, gestion des contributions, des circuits de validation, gestion de l’organisation du rangement, du cycle de vie, de la catégorisation.

Mais ce n’est pas tout. Un bon outil de gestion de contenus permettra également d’offrir des fonctions de recherche avancée sur l’ensemble de la base, y compris même sur des critères non textuels : offres d’emploi à plus de 30 000 euros, téléphones de moins de 100 grammes, et toute combinaison logique de ces critères et de critères full-text.

On peut même aller plus loin : le CMS peut également prendre en charge les saisies des internautes. Si l’on poursuit l’exemple des offres d’emploi, le CMS permettra de définir un contenu structuré dénommé ‘candidature’, et proposer aux visiteurs de saisir leur candidature en ligne, de la même manière qu’un contributeur crée un contenu. Puis le circuit de traitement des candidatures pourra être également mis en œuvre, à la manière d’un circuit de validation.

Au total, c’est, dans cet exemple, une gestion complète d’e-recrutement qui aura été réalisée sans code, comme on le ferait avec un générateur d’application. Dans le contexte d’un site Web, il y a encore un autre bénéfice : c’est la parfaite uniformité des outils, tant coté back-office qu’en front-office.

En interne, les collaborateurs saisissent des offres d’emploi avec les mêmes outils et sous le même cadre d’habilitations qu’ils saisissent des contenus. En externe, une même recherche d’un visiteur peut lui retourner à la fois des contenus éditoriaux et des offres d’emploi.

On le voit : les outils de gestion de contenus sont, à leur manière, des générateurs d’applications puissants et flexibles. Et surtout : l’outil est souvent déjà déployé à d’autres fins et donc déjà maîtrisé. Etendre son périmètre est donc un choix qui présente peu de risques.

Finalement, beaucoup d’applications de gestion sont construites autour de ces deux briques de base : gestion d’entités en création-modification-recherche d’une part, gestion des processus de travail d’autre part. Or ce sont aussi les deux fonctionnalités centrales de la gestion de contenus.
Pour autant, la démarche a des limites, et si quelques applications simples s’y prêtent bien, bon nombre d’applications de gestion restent trop complexes pour être modélisées de la sorte.

Où se trouvent les limites ? Elles sont pour une part dans la complexité des relations entre entités. Certes, de bons outils CMS permettent aussi de définir des relations entre contenus, mais si le nombre d’entités à manipuler et le nombre de relations deviennent importants, le CMS ne conviendra plus.

Une autre limite est dans la complexité des processus métier entourant ces entités. Le CMS gère facilement des processus qui s’apparentent à une validation, même s’ils relèvent de workflows complexes. Mais certains processus de travail ne se modélisent pas bien de cette manière. Enfin, il y a une limite également dans la volumétrie. Disons que le CMS pourra gérer quelques milliers d’entités, mais non quelques millions.

Les outils de gestion de contenus ne remplaceront pas tout le développement d’applications de gestion, mais il existe de vastes champs d’application encore très peu pratiqués, et les bénéfices qu’on peut en attendre sont extrêmement importants : productivité, uniformité, simplicité, robustesse, flexibilité.