1. Présentation générale
  2. Configuration
  3. Détecter les doublons
    1. Détection unitaire en enrichissant le workflow
      1. Configuration
      2. Comportement
    2. Détection globale dans une tâche programmée

Cette fonctionnalité est disponible à partir de la version 4.5

Présentation générale

La détection de doublons permet de vérifier si deux contenus sont identiques (doublons) ou quasiment-identiques (quasi-doublons). 

Deux contenus sont considérés doublons si les attributs présents dans une liste configurée sont identiques. 

Deux contenus sont considérés comme des quasi-doublons si les attributs de type texte présents dans une liste configurée sont tous identiques à deux caractères près (par exemple, "toto" et "tata" seront considérés comme assez proches pour être quasi-doublons).   

La détection de doublons peut s'effectuer soit :

  • sur un contenu en particulier
  • sur tous les types de contenus

Configuration

La détection de doublons se configure dans un fichier XML nommé duplicate-contents.xml, qui doit être présent dans le répertoire WEB-INF/param. Par défaut, il n'y a aucune configuration de doublons.

Ce fichier liste les contenus à vérifier ainsi que la liste des attributs à vérifier. 

La syntaxe du fichier XML est la suivante : 

<duplicates>
 <content-type id="org.ametys.web.default.Content.article">
  <attribute path="title" strict="true" />
  <attribute path="comment"/>
 </content-type>
</duplicates>

Les types de contenus à vérifier pour la détection de doublons sont listés dans : 

  • une balise <content-type> avec l'attribut "id" identifiant le contenu. 

Chaque balise <content-type> contient la liste des attributs à vérifier via : 

  • une balise <attribute>, contenant : 
    • l'attribut "path" identifiant le chemin de l'attribut à vérifier
    • l'attribut "strict" (optionnel) indiquant si la recherche sera stricte uniquement (recherche de doublons uniquement). Par défaut, cet attribut est valué à false.

Les types d'attributs suivants ne sont pas supportés par la détection de doublons : geocode, reference, user

Il n'est pas possible d'indiquer un repeater ou un composite dans son intégralité. Il est cependant possible de cibler un attribut en particulier du repeater ou composite, avec la syntaxe suivante : repeater/attribut1 ou composite/attribut1

La recherche des quasi-doublons ne s'applique que sur les champs de type String. 

Détecter les doublons

Détection unitaire en enrichissant le workflow

Configuration

Tous les workflows fournis par Ametys possèdent déjà la configuration requise pour la détection de doublons. 

Si vous utilisez un workflow personnalisé, la détection de doublon se fait dans les post fonctions d'édition extensibles (en général placés à la création et modification) :

<function type="avalon">
<arg name="role">org.ametys.cms.workflow.extensions.ExtensibleFunction</arg>
<arg name="extension-point">org.ametys.cms.workflow.extensions.PostContentEditionFunctionsExtensionPoint</arg>
</function>

Comportement

A la sauvegarde d'un contenu dont le type est listé dans le fichier de configuration duplicate-contents.xml, une recherche de doublons et quasi-doublons est effectuée. 

Si des doublons ou quasi-doublons sont trouvés, une fenêtre de ce type est affichée, avec un lien permettant d'ouvrir les contenus en doublon : 

Détection globale dans une tâche programmée

Une nouvelle entrée "Détection de doublons" est disponible dans les tâches planifiées de l'outil d'administration : 

Cette tâche lance la détection des doublons, et analyse les contenus dont le type est listé dans le fichier de configuration duplicate-contents.xml. 

Un rapport est envoyé par mail, avec des liens permettant d'ouvrir les contenus en doublons. 

Extrait : 

Retour en haut