OVH Cloud OVH Cloud

Worklfow de mail

4 réponses
Avatar
sebdijon
Bonjour le groupe,

on m'a demandé d'intégrer dans un client en Java un workflow d'envoie de
mail : pour que D recoive le mail, A et C doivent l'avoir validé,
sachant que C reçoie le mail quand B l'a validé,...

Même en mettant en marche mon mono-neuronne, je n'ai aucune idée du
comment je pourrais réaliser ce machin.

Je suis donc à la recherche d'idées brillantes.

Merchi le groupe.

4 réponses

Avatar
Simon OUALID
sebdijon wrote:
Bonjour le groupe,

on m'a demandé d'intégrer dans un client en Java un workflow d'envoie de
mail : pour que D recoive le mail, A et C doivent l'avoir validé,
sachant que C reçoie le mail quand B l'a validé,...

Même en mettant en marche mon mono-neuronne, je n'ai aucune idée du
comment je pourrais réaliser ce machin.

Je suis donc à la recherche d'idées brillantes.

Merchi le groupe.


Perso je partirais sur un système de validation avec un frontal web.

Genre, dans ton exemple (A->B->C->D), A envoie le mail à D, le système
détermine que B et C doivent valider l'envoie. On stocke donc en base un
identifiant unique du mail avec les "n" validateurs dans une table de
relation.

Le client de A envoie alors un mail à B contenant le mail original, avec
une phrase à la fin : "pour valider ce message, cliquez ici".

Ce lien pointe vers un servlet de validation, avec en paramètre l'id du
mail et l'id du validateur. Ce servlet va modifier l'état du mail dans
la base de donnée pour indiquer que B l'a validé, on aura donc, dans
notre table de relation :

ID MAIL VALIDATION ETAT
1 1 1
2 1 1
2 1 0
2 1 0

Une fois qu'il à fait ce job, le servlet regarde s'il reste plus d'un
maillon dans le workflow, si c'est le cas, il lui envoie le mail, en
ajoutant la petite phrase pour que celui ci valide.

(etc... on réitère sur les "n" validateurs")

Quand on arrive au dernier maillon, le servlet crée un mail de A vers D,
et reprend *uniquement* le mail original.

C'est ce que je ferais à vue de nez et sans analyse approfondie. Si tu
es dans un client lourd partagé par tous les validateurs, tu peux te
passer de la partie web et tout intégrer dedans en appliquant le même
principe.

Bonne chance !

Avatar
sebdijon
Merci beaucoup pour votre réponse, c'est déjà une bonne base pour moi.


Il y a quand même une question importante : comment faire pour stocker
(en BD ?) les règles d'émission (ou de réception).

Dans mon exemple, comment le servlet va savoir que comme A a validé le
mail, puis C par l'intermédiaire de B, il faut maintenant envoyer à C ?
En gros, comment le servlet va faire le test pour savoir si on est au
dernier maillon ?


Merci encore.




sebdijon wrote:

Bonjour le groupe,

on m'a demandé d'intégrer dans un client en Java un workflow d'envoie
de mail : pour que D recoive le mail, A et C doivent l'avoir validé,
sachant que C reçoie le mail quand B l'a validé,...

Même en mettant en marche mon mono-neuronne, je n'ai aucune idée du
comment je pourrais réaliser ce machin.

Je suis donc à la recherche d'idées brillantes.

Merchi le groupe.



Perso je partirais sur un système de validation avec un frontal web.

Genre, dans ton exemple (A->B->C->D), A envoie le mail à D, le système
détermine que B et C doivent valider l'envoie. On stocke donc en base un
identifiant unique du mail avec les "n" validateurs dans une table de
relation.

Le client de A envoie alors un mail à B contenant le mail original, avec
une phrase à la fin : "pour valider ce message, cliquez ici".

Ce lien pointe vers un servlet de validation, avec en paramètre l'id du
mail et l'id du validateur. Ce servlet va modifier l'état du mail dans
la base de donnée pour indiquer que B l'a validé, on aura donc, dans
notre table de relation :

ID MAIL VALIDATION ETAT
1 1 1
2 1 1
2 1 0
2 1 0

Une fois qu'il à fait ce job, le servlet regarde s'il reste plus d'un
maillon dans le workflow, si c'est le cas, il lui envoie le mail, en
ajoutant la petite phrase pour que celui ci valide.

(etc... on réitère sur les "n" validateurs")

Quand on arrive au dernier maillon, le servlet crée un mail de A vers D,
et reprend *uniquement* le mail original.

C'est ce que je ferais à vue de nez et sans analyse approfondie. Si tu
es dans un client lourd partagé par tous les validateurs, tu peux te
passer de la partie web et tout intégrer dedans en appliquant le même
principe.

Bonne chance !



Avatar
Simon OUALID
sebdijon wrote:
Merci beaucoup pour votre réponse, c'est déjà une bonne base pour moi.


Il y a quand même une question importante : comment faire pour stocker
(en BD ?) les règles d'émission (ou de réception).

Dans mon exemple, comment le servlet va savoir que comme A a validé le
mail, puis C par l'intermédiaire de B, il faut maintenant envoyer à C ?
En gros, comment le servlet va faire le test pour savoir si on est au
dernier maillon ?


Merci encore.



Ben ouais, la question ne portait pas sur cette partie !

De manière très classique, et si tous tes utilisateurs sont dans ton
modèle de données, j'imagine une relation reflexo-transitive entre
objets "Utilisateur". Un utilisateur à "n" utilisateurs qui jouent le
rôle de "validateurs" (on ferait des belles boites et des belles flèches
en UML avec ça !).

En base, on persisterait ça dans une table qui ressemblerait à ca :

ID_USER ID_USER_VALIDATOR
1 2
1 3

(ici, les messages envoyés par l'utilisateur 1 doivent être validés par
les utilisateurs 2 et 3)

Donc, dans ton modèle de données, tu vas avoir une table USER, une table
USER_VALIDATOR, une table MESSAGE et une table MESSAGE_VALIDATION (on
ferait d'autres belles boites dans un beau MPD avec ça).

A l'envoi d'un message, ton DAO va donc remplir la table MESSAGE avec le
contenu du mail, et la table MESSAGE_VALIDATION avec tous les couples
MESSAGE/VALIDATEUR.

Puis faire tout le bordel qu'expliquait mon précédent message. Faudrait
une belle séquence pour que ce soit clair. :)

Tu peux pousser le truc en permettant plusieurs circuits de validation
en fonction de la destination, il te suffit de rajouter une colonne dans
ta table USER_VALIDATOR (que tu prefixeras donc avec un _DESTINATION).

Symon (fatigué... amateur de boites) ;)
www.oualid.net

Avatar
sebdijon
ok, merci bcp pour la réponse.

J'essaierai de faire les belles boites UML.

bonne vacances et noyeux joel

seb