Projet

Général

Profil

Fonctionnalité #18442

Notifications personnalisées

Ajouté par Cyril VAZQUEZ il y a plus de 2 ans. Mis à jour il y a plus de 2 ans.

Statut:
Clôturé
Priorité:
2-Sérieux
Assigné à:
Version cible:
Début:
23/08/2021
Echéance:
19/10/2021
Tags RM:

Description

En tant qu'utilisateur, je veux recevoir des notifications d'événements survenant dans l'application afin de savoir quelles actions sont à mener et quand.

Analyse
Un embryon de système existe déjà pour les événements de l'application. cf contrôleur audit/event.

Il faut appliquer le même système au journal du cycle de vie et le faire évoluer pour répondre à la demande de personnalisation du contenu de message.

Le processus global est le suivant :

  • à l'enregistrement d'un message, le contrôleur détermine si une notification doit être envoyée.
  • si oui, le processus détermine le ou les destinataires
  • si au moins 1 destinataire a été trouvé, le processus produit le message et l'enregistre dans la file d'attente d'envoi
  • une tâche planifiée dépile la liste des messages à envoyer et les traite

La configuration définit 4 points:

  • les événements qui doivent déclencher l'envoi d'une notification
  • les modes de notification (email dans le périmètre initial)
  • les règles de détermination des destinataires
  • le modèle de message : texte simple ou HTML en cible du mail

Sélection des événements

Un système de filtre permet au moteur de déterminer si une notification doit êtr envoyée.
Il utilise les valeurs d'en-tête et de détail du message avec des tests LQL (égalité, liste entre crochets principalement)

Exemple pour notifier d'un dépôt pour les producteurs CPTA et RH :

filter:
  eventType : "recordsManagement/deposit"
  operationResult : false
  eventInfo.originatorOrgRegNumber : ["CPTA", "RH"]

Destinataires

Les destinataires sont indiqués

  • en dur dans la configuration par leur identifiant unique ou leur adresse email (si plusieurs utilisateurs ont la même adresse les notifications in app seront impossibles)
  • déduit de règles utilisant les acteurs de l'événement
  • par un script spécifique (hors périmètre V2)

Exemple pour notifier un utilisateur défini dans la configuration :

recipients : ["info@maarch.org", "bblier"]

Exemple pour notifier des utilisateurs dynamiques :

recipients : @accountId          // Utilisateur initiateur de l'opération
recipients : @orgUnitRegNumber   // Tous les utilisateurs du service 
recipients : @eventInfo.originatorOrgRegNumber   // Tous les utilisateurs du service producteur indiqué dans les infos compélmentaires (le moteur recherchera la valeur dans les utilisateurs et dans les services)

Exemple pour notifier des utilisateurs dynamiques par script :

recipients : /bundle/api/command          // Service personnalisé qui va recevoir le sinformations de l'événement et retourner un tableau d'identifiants d'utilsiateurs

Message

La configuration fournit un texte ou un lien vers un modèle de contenu de message.

Le processus utilise le moteur de fusion XML/HTML du framework avec la syntaxe <?merge ?> et [?merge ?].

Exemple pour un texte simple avec variable :

message : "Bonjour, une erreur est survenue lors du versement de l'archive du service [?merge eventInfo.originatorOrgRegNumber ?]"

exemple pour un modèle externe (html ou texte) :

message : /data/maarchRM/notifications/template1.html

Inscription

Le processus inscrit le message dans la file d'attente "notification" (contrôleur batchProcessing/notification::create())

Traitement d'envoi

Le processus réalise l'envoi par le connecteur approprié (email pour 'instant) (contrôleur batchProcessing/notification::process())

Notifications.drawio.png (24,1 ko) Notifications.drawio.png Diagramme de flux Cyril VAZQUEZ, 02/11/2021 11:50
9637

Demandes liées

Lié à Backlog RM - Fonctionnalité #11889: [Mail] Template HTML paramétrable dans la configurationA traiter2019-09-24

Historique

#2 Mis à jour par Cyril VAZQUEZ il y a plus de 2 ans

  • Statut changé de A traiter à R&D - A planifier

#3 Mis à jour par Cyril VAZQUEZ il y a plus de 2 ans

#4 Mis à jour par Cyril VAZQUEZ il y a plus de 2 ans

  • Description mis à jour (diff)

#5 Mis à jour par Cyril VAZQUEZ il y a plus de 2 ans

  • Description mis à jour (diff)

#6 Mis à jour par Cyril VAZQUEZ il y a plus de 2 ans

  • Description mis à jour (diff)

#8 Mis à jour par Cyril VAZQUEZ il y a plus de 2 ans

  • Description mis à jour (diff)

#9 Mis à jour par Cyril VAZQUEZ il y a plus de 2 ans

  • Description mis à jour (diff)

#10 Mis à jour par Cyril VAZQUEZ il y a plus de 2 ans

  • Description mis à jour (diff)

#11 Mis à jour par Cyril VAZQUEZ il y a plus de 2 ans

  • Statut changé de R&D - A planifier à En cours
  • Assigné à mis à Cyril VAZQUEZ

#12 Mis à jour par Cyril VAZQUEZ il y a plus de 2 ans

Création de la branche feat/18442_Notifications

Ajout du contrôleur lifeCycle/eventNotifier
Modification du contrôleur lifeCycle/journal pour appel à eventNotifier::dispatch()

Ajout d'exemples

  • configuration commentée
  • template de corps HTML
  • script d'identification des destinataires
  • script de collecte des sources de données à fusionner

Reste à faire:
- grooming pour suites à donner (déplacer eventNotifier dans batchProcessing ? fournir des scripts standards par relations de destinataires et types d'objets)
- documentation
- tests et packaging (fournir des scripts d'exemple)

#13 Mis à jour par Cyril VAZQUEZ il y a plus de 2 ans

  • Statut changé de En cours à Clôturé

Formats disponibles : Atom PDF