Fonctionnalité #18442
Mis à jour par Cyril VAZQUEZ il y a environ 3 ans
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())