Une autre approche de la personnalisation : l'audiencement avec JCMS

L'audiencement a été intégré en standard dans JCMS 5.5. Si vous utilisez cette version, reportez-vous à l'article JCMS 5.5 : Profils de consultation (Audiencement).

1. Le besoin

Afin de filtrer la visibilité des objets gérés par JCMS, notamment les contenus (mais c'est aussi valable pour les portlets), JCMS dispose d'un système de droit basé sur la notion de groupe.

Au moment de la publication, le contributeur déclare que tel article, telle news ou telle portlet est visible par certains groupes de personnes.

Si ce système convient pour les cas d'usage courant ; il atteint ses limites au sein d'organisation très complexes car on se voit confronté à la création d'un nombre très important de groupes.

Pour faire face à ces besoins, le système de droit de JCMS peut être complété par un système d'audiencement.

2. Exemple

Un simple exemple montre, qu'avec le système basé sur les groupes, l'on arrive très vite à une exponentialisation du phénomène. Prenons l'exemple de l'intranet d'un grand groupe bancaire dans lequel le filtrage des contenus doit se baser sur trois critères :

  1. l'appartenance de la personne à une entité du groupe
  2. son rang hiérarchique
  3. sa ou ses sphères de compétences.

L'axe des entité - Cet axe représente les différentes entités du groupe. Il est organisé hiérarchiquement et comporte une centaine d'éléments.

Tout le Groupe bancaire

  • les Direction régionales et GIE
    • Les Directions régionales
      • DR1
      • DR2
      • ...
    • Les GIE
      • GIE 1
      • - ...
  • Les Directions centrales
  • Les entités spécialisées
    • Corporate Banking
    • Private Banking
    • Crédit Bail
    • - ...

Soit une bonne centaine de possibles

L'axe hiérarchique - Cet axe représente le rang de la personne dans le groupe. Il est organisé hiérarchiquement et comporte une dizaine d'éléments.

Toute l'entité (quelque soit le rang hiérarchique)

  • Direction générale
    • DG
    • DGA
    • Sous Directeurs
  • tous les cadres
    • cadres supérieurs
    • autres
  • non cadre

L'axe de compétences - Cet axe représente les métiers du groupe. Il est organisé hiérarchiquement et comporte plusieurs dizaines d'éléments.

Tous les métiers

  • distribution
  • marketing
  • crédit
  • épargne
  • ...
  • logistique
    • informatique
    • imprimerie
    • immobilier

Là aussi sans doute plusieurs dizaines de combinaisons

De fait on peut potentiellement arriver à 100*10*10 = 10 000 groupes potentiels ... autant dire que c'est ingérable !

3. L'audiencement

3.1 Principe

L'audiencement consiste à attribuer à chaque individu (appelé "membre" dans JCMS) ou à chaque groupe des catégories correspondant à son profil. Par exemple, Monsieur DUPOND est catégorisé de la manière suivante :

  1. entité = Corporate Banking
  2. position = Sous-Directeur
  3. metier = Informatique, Imprimerie.

Assez classiquement les règles retenues sont les suivantes :

  • Une publication peut être ou ne pas être audiencée.
  • Une publication audiencée est visible d'un membre (on aurait pu choisir le niveau group mais on retombait sur la problématique de gestion de ces derniers) si tous ses axes les catégories sont au moins au même niveau de l'arbre ou englobantes par rapport aux catégories du membre.

3.2 Exemple

La note de service catégorisée de la manière suivante : entité = Corporate Banking , position = sous-directeur , métier = imprimerie pourra être vue par Monsieur DUPONT

La note de service catégorisée de la manière suivante : entité = Corporate Banking , position = sous-directeur , métier = immobilier ne pourra pas être vue par Monsieur DUPONT

La note de service catégorisée de la manière suivante : entité = Corporate Banking , position = toute l'entité , métier = logistique pourra être vue par Monsieur DUPONT mais aussi par tout le personnel de la logistique de CMDS.

3. Implémentation

Pour implémenter, un système d'audiencement dans JCMS il faut :

  • Créer les arbres de catégorie correspondant aux axes d'audiencement
  • Associer ces arbres aux membres
  • Profiter de l'architecture modulaire de JCMS qui a prévu l'implémentation de classes spécifiques pour compléter les algorithmes de filtrage standards basés sur les groupes et les droits classiques gérés par le produit. Ces spécificités sont à développer dans WEB-INF/classes/custom/RightPolicy.java

Comme chaque intranet peut vouloir décrire un mode de filtrage particulier, ce travail reste à la charge de chacun.

Dans notre cas, le choix d'implémentation reprend l'algorithme cité ci-dessus. Une autre entité du groupe a par exemple prévu que l'on puisse choisir parmi plusieurs algorithmes.

On a donc créé un type de publication dite publication audiencée qui hérite du type générique de JCMS (on ne peut faire cela que pour les publications (c'est notre choix) ou choisir aussi d'y inclure les portlets) qui a comme propriété les axes de catégories d'audiencement (Par exemple, une des entités du groupe a ajouté aussi la liste des algorithmes d'audiencement).

Dans la méthode canBeReadBy() de la class custom.RightPolicy, l'algorithme se présente macroscopiquement de la manière suivante

visible = vrai ;
si la publication est audiencée alors
  pour chaque axe
    si les catégories visibles par le membre ne sont pas englobées dans celles de la publication alors
      visible = faux
    sortir
  fin pour
fin si

En résumé...

Le mécanisme standard de gestion du profiling de JCMS s'appuie sur les droits d'accès qui diffusent de l'information aux utilisateurs selon les groupes auxquels ils appartiennent. Ce système atteind ses limites dans le cas d'organisations très complexes. Cet article décrit un système complémentaire permettant de répondre à ce besoins : l'audiencement multi-critères.

Sujet
Publié

13/06/05

Rédacteur
  • Jean-Philippe Blanchard