Feature #15409
ferméGestion des abonnements PDC
Ajouté par Sebastien Vuillet il y a 2 mois. Mis à jour il y a 18 jours.
100%
Description
Objectif :
Mettre en place la gestion des abonnements forcés sur les positions du Plan de Classement (PDC).
Fonctionnalités :
• Ajouter la gestion des abonnements forcés dans la console d’administration, au sein de l’onglet PDC.
• Seuls les gestionnaires du Plan de Classement pourront définir, modifier ou supprimer les abonnements forcés sur une position du PDC.
• Le fonctionnement sera identique à celui des abonnements forcés actuellement disponibles pour les utilisateurs.
• Les abonnements forcés seront visibles dans l’espace personnel des utilisateurs concernés.
• Les utilisateurs pourront consulter ces abonnements mais ne pourront ni les modifier ni les supprimer.
Fichiers
| Abonnements_au_PdC_personnels.png (27 ko) Abonnements_au_PdC_personnels.png | Miguel Moquillon, 28/08/2026 18:15 | ||
| Abonnements_au_Pdc_forcés.png (17,1 ko) Abonnements_au_Pdc_forcés.png | Miguel Moquillon, 28/08/2026 18:21 | ||
| Nouvel_abonnement_au_PdC_forcé.png (29,2 ko) Nouvel_abonnement_au_PdC_forcé.png | Miguel Moquillon, 28/08/2026 18:22 | ||
| Edition_abonnement_au_Pdc_forcé.png (39,8 ko) Edition_abonnement_au_Pdc_forcé.png | Miguel Moquillon, 28/08/2026 18:22 | ||
| panneau_utilisateur_PdC.png (133 ko) panneau_utilisateur_PdC.png | Miguel Moquillon, 28/08/2026 18:24 | ||
| Edition_abonnement_au_PdC_personnel.png (20,3 ko) Edition_abonnement_au_PdC_personnel.png | Miguel Moquillon, 28/08/2026 18:26 | ||
| Menu_abonnemnets_dans_PdC.png (30,6 ko) Menu_abonnemnets_dans_PdC.png | Miguel Moquillon, 28/08/2026 18:29 | ||
| clipboard-202609141458-8iqb3.png (24,7 ko) clipboard-202609141458-8iqb3.png | Aurore Allibe, 14/09/2026 14:58 | ||
| Pdc-abonnements_forces.png (34,5 ko) Pdc-abonnements_forces.png | Miguel Moquillon, 15/09/2026 16:08 |
Mis à jour par Miguel Moquillon il y a environ un mois
Actions
#1
- Statut changé de New à In progress...
Mis à jour par Miguel Moquillon il y a environ un mois
Actions
#2
- Fichier Abonnements_au_PdC_personnels.png Abonnements_au_PdC_personnels.png ajouté
- Fichier Abonnements_au_Pdc_forcés.png Abonnements_au_Pdc_forcés.png ajouté
- Fichier Nouvel_abonnement_au_PdC_forcé.png Nouvel_abonnement_au_PdC_forcé.png ajouté
- Fichier Edition_abonnement_au_Pdc_forcé.png Edition_abonnement_au_Pdc_forcé.png ajouté
- Fichier panneau_utilisateur_PdC.png panneau_utilisateur_PdC.png ajouté
- Fichier Edition_abonnement_au_PdC_personnel.png Edition_abonnement_au_PdC_personnel.png ajouté
- Fichier Menu_abonnemnets_dans_PdC.png Menu_abonnemnets_dans_PdC.png ajouté
- % réalisé changé de 0 à 90
Réalisation¶
Première approche (abandonnée)¶
Dans un premier temps, une tentative a été faite de réutiliser et étoffer l'existant des abonnements à des positions sur des axes du PdC (les PdCSubscription). Le soucis est que les abonnements au PdC existant s'appuient sur le fait qu'ils adressent un seul utilisateur. Or l'objectif est de pouvoir ici créer des abonnements au PdC pour plusieurs utilisateurs, soit directement, soit par le biais de groupes d'utilisateurs. Or, à ce point là, il s'est avéré que du code (et donc du fonctionnel) de l'API des abonnements utilisateurs allait être dupliqué.
Refactorisation du mécanisme des abonnements au PdC¶
Pour éviter de dupliquer le mécanisme d'abonnement forcé existant dans le code propre au PdC, les abonnements au PdC ont été refactorisés pour s'appuyer entièrement sur l'API des abonnements de Silverpeas. Ceci a permis de fusionner l'API des abonnements au PdC à celui des abonnements utilisateurs aux ressources : une seule API d'abonnement unifiée.
Les modifications¶
Pour ce faire, il a fallu réifier l'ensemble des positions sur des axes du PdC comme une ressource d'abonnement (implémentation de l'interfaceSubscriptionResource). Or l'ancien PdcSubscription mélangeait trois notions :
- l'ensemble de positions sur les axes,
- son libellé,
- et l'abonné (
ownerId).
Le refactoring les sépare.
C'est ainsi que PdcSubscriptionResource réifie l'ensemble nommé de positions sur des axes du PdC (SubscriptionResource de type PDC), enregistré dans SubscriptionFactory par un bean Initialization, sur le modèle éprouvé de CALENDAR et PUBLICATION. Son nom et ses positions sont chargés paresseusement, la ressource étant instanciée pour chaque ligne lue par SubscriptionDao.
PdcSubscription devient alors un AbstractSubscription<PdcSubscriptionResource> : il porte l'abonné, le créateur, la date, et la méthode d'abonnement SELF_CREATION / FORCED du mécanisme générique.
En base, SB_PDC_Subscription ne décrit plus que les ressources (id, name) ; les abonnements migrent vers la table existante subscribe. Le script de migration SQL up003 transfère les abonnements existants en SELF_CREATION avant de supprimer le champs ownerId.
Ce que le mécanisme générique apporte gratuitement¶
Les groupes d'utilisateurs sont désormais gérés : checkSubscriptions résout ses destinataires par getSubscribers(resource).getAllUserIds(), qui développe les groupes en utilisateurs. Un utilisateur abonné via son groupe voit également l'abonnement dans sa fenêtre personnelle, ce qui n'était structurellement pas possible auparavant. La purge des abonnements à la suppression d'un utilisateur ou d'un groupe est prise en charge par les listeners existants, et l'écran de sélection des abonnés est celui de la plateforme.
Sept méthodes de PdcSubscriptionService qui géraient l'abonnement lui-même ont ainsi pu disparaître ; le service ne conserve que le cycle de vie des ensembles de positions et les règles métier propres au PdC.
Deux obstacles rencontrés¶
Oracle et l'identifiant d'instance vide. Le PdC est transverse aux applications, sa ressource n'a donc pas d'instance applicative. Or subscribe.instanceId est NOT NULL et Oracle stocke la chaîne vide comme NULL — la contrainte aurait sauté, à la migration comme à l'exécution. La constante NO_COMPONENT_INSTANCE = "-" suit la convention déjà en vigueur dans cette même table pour l'espace non défini.
Le gestionnaire qui s'abonne lui-même. AbstractSubscription déduit SELF_CREATION quand l'abonné est le créateur ; un gestionnaire se désignant parmi les abonnés aurait fait sortir son propre ensemble de la liste des abonnements forcés. Un constructeur acceptant explicitement la méthode permet à la fenêtre PdC de forcer FORCED .
Notifications devenues multilingues¶
Bâties pour un destinataire unique, les notifications composaient leur message dans la langue du propriétaire. Elles s'adressent maintenant à plusieurs abonnés de langues potentiellement différentes : titres, contenus et NotificationResourceData sont produits pour chaque langue de la plateforme via addLanguage et setNotificationResourceData(lang, …).
Couche web¶
La fenêtre « Mes abonnements » conserve son onglet PdC dédié ; PDC est exclu des catégories génériques pour éviter le doublon d'onglet qu'aurait induit son enregistrement dans le registre. La suppression d'un abonnement personnel ne détruit l'ensemble de positions que s'il ne reste plus aucun abonné.
Dans la fenêtre PdC, l'écran d'édition accueille la liste des abonnés et un bouton vers le userpanel. L'édition en cours — nom, positions, abonnés désignés — est encapsulée dans une classe interne PdcSubscriptionEdition conservée en session pour survivre à l'aller-retour ; rien n'est persisté avant validation du formulaire.
Tests¶
Treize tests unitaires ont été écrits sur les règles métier du PdC, qui n'en avaient aucune — correspondance d'une classification avec un ensemble de positions, suppression de valeur d'axe.
Interface Web¶
Abonnements personnels au PdC¶
Lorsque l'utilisateur accède à ses abonnements au PdC, il obtient la vue suivante :

Comme avec les autres types d'abonnements, une nouvelle colonne l'informe si l'abonnement à des positions sur des axes du PdC vient de lui ou lui a été imposé par un administrateur ou un gestionnaire du PdC. Seuls ses abonnements personnels peuvent être modifiés ou supprimés, et ceci même s'il est lui même administrateur ou gestionnaire du PdC.
La fenêtre d'édition d'un abonnement personnel reste la même :

Abonnements forcés au PdC¶
Un administrateur ou un gestionnaire de PdC ne peut accéder aux abonnements forcés que dans l'onglet "Plan de Classement" du backoffice, via le menu "Les abonnements" :

De là, il accède à la page des abonnements forcés au PdC :

Sur cette page, il pourra à loisir créer un nouvel abonnement à des positions sur des axes du PdC :

ou encore modifier un des abonnements existants :

Dans les deux cas, c'est le même écran d'édition qui s'ouvre et par lequel il peux sélectionner des utilisateurs ou des groupes d'utilisateurs via le panneau des utilisateurs :

Mis à jour par Miguel Moquillon il y a environ un mois
Actions
#3
- Statut changé de In progress... à Resolved
Mis à jour par Miguel Moquillon il y a environ un mois
Actions
#4
- % réalisé changé de 90 à 100
Mis à jour par Aurore Allibe il y a 25 jours
Actions
#5
- Assigné à changé de Miguel Moquillon à Aurore Allibe
Mis à jour par Aurore Allibe il y a 21 jours
Actions
#6
- Fichier clipboard-202609141458-8iqb3.png clipboard-202609141458-8iqb3.png ajouté
- Assigné à changé de Aurore Allibe à Miguel Moquillon
Je mettrais bien ici l'entrée pour les abonnements forcés (Axes | Abonnements forcés | Synonymes ) plutôt que dans le menu QVF ?

Est-ce que je commite et pousse sur mon dépôt ce que j'ai fait jusque là ?
Mis à jour par Miguel Moquillon il y a 21 jours
Actions
#7
Je mettrais bien ici l'entrée pour les abonnements forcés (Axes | Abonnements forcés | Synonymes ) plutôt que dans le menu QVF ?
Comme tu veux. Mais dans ce cas, je mettrais l'onglet après celui des synonymes parce que ceux-ci sont liés aux axes du PdC et, fonctionnellement, les axes et les synonymes sont proches ; ils sont dans l'élaboration du PdC.
Est-ce que je commite et pousse sur mon dépôt ce que j'ai fait jusque là ?
Est ce que tu peux intégrer tes modifs directement dans la branche feature-#15409 de silverpeas/Silverpeas-Core ?
Mis à jour par Aurore Allibe il y a 21 jours
Actions
#8
j'ai poussé https://github.com/Silverpeas/Silverpeas-Core/tree/feature-%2315409
...
est-ce que c'est ok ?
Mis à jour par Miguel Moquillon il y a 20 jours
Actions
#9
- Fichier Pdc-abonnements_forces.png Pdc-abonnements_forces.png ajouté
Après retour d'Aurore, l'accès à la gestion des abonnements forcés ne se fait désormais plus par le menu des opérations de l'onglet de gestion des axes du PdC dans l'outil PdC du backoffice. La gestion des abonnements forcés est désormais accessible sous forme d'onglets dans l'outil PdC :

Pour rappel, seuls les administrateurs et les gestionnaires du PdC peuvent accéder à la gestion des abonnements forcés dans le backoffice.
Mis à jour par Miguel Moquillon il y a 18 jours
Actions
#10
- Statut changé de Resolved à Closed
Intégré dans la branche master