Comment tester qu'un mail correspond à un envoie d'alerte de WF en 9 ?

Benoît Dissert · le 03/11/16 à 14:15

Bonjour,

Dans le développement d'un MailPolicyFilter, en 7, il était possible de tester si le mail était envoyé suite à une alerte de WF, avec le code suivant :

[code]

WFAction.WF_ALERT_WORKER_MAILORIGIN.equals(msg.getOrigin())
// || WFAction.WF_ALERT_AUTHOR_MAILORIGIN.equals(msg.getOrigin());

[/code]

Ces constantes n'existent plus, et la javadoc donne encore, dans les exemples, des références à ces constantes.

Comment fait-on, avec JCMS 9 pour déterminer que l'on est dans ce contexte ?

Merci,

Benoît

 

16 pts
Olivier Jaquemet - le 04/11/16 à 12:04
Meilleure réponse

Salut Benoît,

Pour l'envoi des Alert par mail, le champ MailMessage.origin est renseigné avec la valeur renvoyé par Alert.getFullName() qui correspond à la concaténation du domaine de l'alerte, d'un point, et du nom de l'alerte : {domain}.{name}

Quelques exemples parmis d'autres : 

  • Action de workflow :
    • Alert.domain = WFAction.ALERT_DOMAIN
    • Alert.name = WFAction.STATE_IN_ALERT ou WFAction.STATE_OUT_ALERT
    • MailMessage.origin = "workflow.state-in" ou "workflow.state-out"
  • Demande de dévérouillage :
    • Alert.domain = "lock"
    • Alert.name = "request-unlock"
    • MailMessage.origin = "lock.request-unlock"
  • Alert de vote
    • Alert.domain = VoteManager.ALERT_DOMAIN
    • Alert.name = VoteManager.ALERT_NAME_POSITIVE_VOTE ou  VoteManager.ALERT_NAME_NEGATIVE_VOTE
    • MailMessage.origin = "vote.new-positive-vote" ou "vote.new-negative-vote"
  • ...

Dans le cas des Alert de workflow qui te préoccupent, la disctinction entre les alertes des adminstrateurs, de l'auteur ou des workers est gérée via le type de l'alerte (champ Alert.type), avec les constantes WFAction.TYPE_ALERT_ADMINSWFAction.TYPE_ALERT_AUTHOR  et WFAction.TYPE_ALERT_WORKERS que tu as relevées.

Problème : l'objet Alert n'est pas véhiculé lors de la création des MailMessage, et donc tu ne peux plus faire la disctinction entre ces 3 cas dans un MailPolicyFilter (contrairement à ce qu'indique la JavaDoc).
J'ai donc saisi

  • le bug suivant sur l'erreur de javadoc : JCMS-5696
  • la demande d'évol suivante pour réintroduire la possibilité de détecter le type d'alerte de workflow et plus encore : JCMS-5697 
#1

Ok merci. Après vérification avec le client, je nouveau comportement standard convient, donc on peut enlever le code spécifique antérieur, donc on n'a plus besoin de tester la condition (coup de bol !).

Benoît

Benoît Dissert · le 25/11/16 à 09:53
9 pts
Jérémy Biron · le 03/11/16 à 15:14

Bonjour Benoît,

Si tu souhaites personnaliser une alerte, je te recommande la fiche suivante API de gestion des alertes

Normalement, tu devrais trouver ton bonheur.

 

Cordialement,

0 pt
Benoît Dissert · le 03/11/16 à 16:11

Merci Jérémy,

Mais la javadoc ne donnant aucune sémantique sur les attributs des Alert et AlertChannel, c'est un peu compliqué de comprendre à quoi correspond quoi.

En particulier, j'essaie de reproduire (c'est une migration), la même sémantique, dans le code que précédement.

Or précédement, on avait l'information que le mail provenait d'une transition pour lequel le destinataire du mail était respectivement worker (WF_ALERT_WORKER_MAILORIGIN) ou rédacteur (WF_ALERT_AUTHOR_MAILORIGIN).

Quand je regarde les constantes, dans la nouvelle API JCMS, il semble bien y avoir une notion qui y ressemble :

 

public static final java.lang.String
TYPE_ALERT_ADMINS
"alertAdmins"
public static final java.lang.String
TYPE_ALERT_AUTHOR
"alertAuthor"
public static final java.lang.String
TYPE_ALERT_WORKERS
"alertWorkers"
 

Mais je ne vois pas au niveau de l'alerte, à quoi correspond ce type.

Est-ce bien quelque chose qui permet de déterminer l'origine de l'alerte ?

Benoît

 

 

0 pt