Project

General

Profile

Actions

Fonctionnalité #18442

closed

Notifications personnalisées

Added by Cyril VAZQUEZ about 3 years ago. Updated almost 3 years ago.

Status:
Clôturé
Priority:
2-Sérieux
Assignee:
Target version:
Start date:
08/23/2021
Due date:
10/19/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 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())


Files

Notifications.drawio.png (24.1 KB) Notifications.drawio.png Diagramme de flux Cyril VAZQUEZ, 11/02/2021 11:50 AM

Related issues 1 (1 open0 closed)

Related to Backlog RM - Fonctionnalité #11889: [Mail] Template HTML paramétrable dans la configurationA traiter09/24/2019Actions
Actions #2

Updated by Cyril VAZQUEZ about 3 years ago

  • Status changed from A traiter to R&D - A planifier
Actions #3

Updated by Cyril VAZQUEZ about 3 years ago

Actions #4

Updated by Cyril VAZQUEZ about 3 years ago

  • Description updated (diff)
Actions #5

Updated by Cyril VAZQUEZ about 3 years ago

  • Description updated (diff)
Actions #6

Updated by Cyril VAZQUEZ about 3 years ago

  • Description updated (diff)
Actions #8

Updated by Cyril VAZQUEZ about 3 years ago

  • Description updated (diff)
Actions #9

Updated by Cyril VAZQUEZ about 3 years ago

  • Description updated (diff)
Actions #10

Updated by Cyril VAZQUEZ about 3 years ago

  • Description updated (diff)
Actions #11

Updated by Cyril VAZQUEZ about 3 years ago

  • Status changed from R&D - A planifier to En cours
  • Assignee set to Cyril VAZQUEZ
Actions #12

Updated by Cyril VAZQUEZ about 3 years ago

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)
Actions #13

Updated by Cyril VAZQUEZ almost 3 years ago

  • Status changed from En cours to Clôturé
Actions

Also available in: Atom PDF