We apologize for untranslated text, you can use the Google Translation button to get an automatic translation of the web page in the language of your choice.

Existe-t-il un moyen simple de créer un champ auto-incrémenté (par exemple un Numéro de Dossier) ?

Jean-Marc Brun · on 3/10/16 at 12:42 PM

Bonjour,

J'ai besoin de créer un champs unique, sorte d'identifiant numérique, sur un type de contenu et qui permettrait d'effecteur des recherches (et des tris) simplement via cet identifiant (une sorte de numero de dossier par exemple).

A première vue, je ne vois pas de moyen simple de crée un tel champ de manière simple dans JCMS.

J'ai pensé pour l'instant à deux moyen différents d'obtenir ce comportement :

- le premier est d'utiliser via un DataController directement l'identifiant JCMS de la publication, qui est unique et de pousser ce champ dans l'indexation (quitte à supprimer le trigramme devant)

- le second est de créer un compteur qui s'incrémente à chaque création de contenu également via Datacontroller. Il faut pour cela une sorte de variable "globale" qui puisse servir de référentiel et qui ne se réinitialise pas à chaque redémarrage du serveur. 

Existe-il d'autres moyens de réaliser cela ?

Merci

JM Brun

 

4 pts
Olivier Jaquemet · on 3/10/16 at 3:16 PM

Bonjour,

L'identifiant d'une publication est déjà unique, et il est déjà stocké dans l'index lucene pourquoi souhaitez vous une autre valeur ?

#1

Bonjour,

L'identifiant d'une publication est-il vraiment stocké dans l'index lucene par défaut ? Car si je trouve bien ma publication en utilisant la fonction de développement "inspectée une donnée" et son id, nulle trace de celle-ci lorsque je fais une recherche via son Id dans JCMS.

Dans la gestion des index de recherche, j'ai tout ré indexé, sans résultat supplémentaire. N'y a t'il pas d'action supplémentaire à effectuer ?

Si je vais sur la demo Jalios et que je recherche le Contenu Web Page cr_14617 https://demo.jalios.com/jcms/cr_14617/fr/communaute-jcms Je n'ai aucun résultat.

Donc il doit peut être y avoir une option à activer pour rendre ce champ effectivement présent dans la recherche sans passer les hooks LuceneSearchEnginePolicy/LuceneSearchEnginePolicyFilter

Merci Cordialement, JM Brun

Jean-Marc Brun · on 4/27/16 at 11:55 AM
0 pts
Jean-Marc Brun · on 3/10/16 at 4:02 PM

Merci pour la rapidité de votre réponse . 

C'est ce que nous allons proposé car cela me parait la solution la plus simple à mettre en place.

Mais ces identifiants numériques associés à chaque publication peuvent paraître "erratique", puisqu'il dépendent des opérations effectuées dans le store. 

Il s'agit juste en quelque sorte d'une "question de présentation" pour les clients.  

Il sagit de mettre en face de l'identifiant "technique" de JCMS d'avoir un "identifiant de présentation" pour le client et que celui-ci n'est pas à le saisir.

Il est juste difficile d'expliquer pourquoi on doit passer du dossier n°2000054 au dossier n°2001353 sans plus d'explication, et de dire qu'on ne peut choisir le mode d'indexation en front.

D'autre part, l'identifiant d'une publication est peut être déjà stocké dans l'index lucene, mais cependant je ne crois pas que par défaut taper l'identifiant dans la barre de recherche permette de trouver celui-ci simplement et demanière intuitive pour un utilisateur ? Il doit y avoir de la configuration supplémentaire à faire ?

Merci,

JM Brun 

 

 

 

#1

Il est juste difficile d'expliquer pourquoi on doit passer du dossier n°2000054 au dossier n°2001353 sans plus d'explication

Parce qu'un identifiant de dossier n'a pas besoin d'être une suite numérique :) Si pour vous ça l'est alors il faut effectivement utiliser une autre valeur.

La recherche est également un aspect important, et sur ce point si vous souhaitez que les dossier soit rapidement recherchable via un numéro, alors oui il est également préférable de mettre en place un autre champ dédié.

Solution :

  • DataController pour génération et stockage dans la publication
  • LuceneSearchEnginePolicyFilter pour enregistrement avec un boost énorme pour le rendre très discriminant
Olivier Jaquemet · on 3/10/16 at 4:12 PM
0 pts
Jean-Marc Brun · on 3/10/16 at 4:37 PM

Merci encore une fois pour votre réponse. 

Pour ce qui est del'utilité de la suite numérique, si cela ne tentait qu'à moi, je valide votre réponse sans hésiter, mais je crains qu'elle ne soit pas forcément acceptée telle quelle par qui de droit et que le cosmétique ait plus d'importance ;-)

Pour le premier point, je vois bien comment mettre en place l'enregistrement et l'affectation de cet identifiant numérique sur la publication par le DataController. Par contre j'ai du mal à voir comment le "stocker en dehors du DataController", de manière à ce qu'un rédémarrage du serveur ne viennent pas remettre les compteur à 0.

Car si je vais chercher la dernière publication créee pour récupérer le dernier identifiant numérique à jour, je crains que si pendant ce même temps est autre enregistrement est effectué, cela risque de poser problème. 

#2

Merci Je vais chercher du côté de la "simple" mécanique de synchronisation ou peut être directement vers la donnée en base.

Jean-Marc Brun · on 3/10/16 at 4:57 PM
#3

Je connais pas la complexité de votre projet, mais nous avons mis en place ce fonctionnement sur un cas "simple". Ça nous permet de numéroter tous les documents d'un certain type qui sont créés dans le référentiel. Par contre, nous avons toujours des trous puisque lorsqu'un document est supprimé, le numéro se libère mais n'est jamais réattribué. Pour faire ça, nous avons utilisé un compteur qu'on stocke dans les propriétés du plugin. Lors de la création d'un document, un manager s'occupe d'envoyer la valeur suivante et de mettre à jour la fichier des propriétés. La solution n'est pas très compliquée à mettre en place mais dans le cadre d'un cluster, je suis pas sûr que ça fonctionnerait correctement (ce qui n'est pas notre cas).

Ubald de Bellabre · on 3/29/16 at 5:26 PM
#4

Merci pour votre réponse. Le projet n'est pas très complexe, il n'y a pas d'utilisation de Jsync. Si je comprends bien, ce que vous appelez "manager" est j'imagine un data-controller qui se déclenche à la création du document ?

Jean-Marc Brun · on 3/29/16 at 5:49 PM
0 pts