Notification à un utilisateur précis - Bonita Bpm 7.5.4

1
0
-1

Bonjour,
Sur mon formulaire d'instanciation, l'initiateur du processus choisi l'utilisateur qui devra exécuter la prochaine tâche, bien attendu avec la configuration du filtre utilisateur unique sur cette tâche.

Ma difficulté est toujours celle-ci : comment configurer où récupérer simplement l'adresse mail de cet utilisateur, pour mon connecteur mail, et le notifier avant que cette tâche soit disponible dans son panier?

Merci,

2 answers

1
0
-1
This one is the BEST answer!

Bonjour wnkela,
Inspire toi de ce bout de code ci-dessous: ici on récupère l'email du manager de celui qui exécute une tache donnée pour lui envoyer une notification à la suite dans un connecteur e-mail. Donc tu peut utiliser une variable de processus pour stocker le choix de ton utilisateur et utiliser la methode getUserByUsername() en cherchant à récupérer que l'id qui est de type Long. C'est cet id qui sera utilisé dans le SingleUser dans la suite.

import org.bonitasoft.engine.identity.ContactData;
import org.bonitasoft.engine.identity.User

User user = BonitaUsers.getUser(apiAccessor, taskAssigneeId);
long userManagerId = user.getManagerUserId() ;
return apiAccessor.getIdentityAPI().getUserContactData(userManagerId, true).email;

Bon dev à toi !
Franck,

Comments

Submitted by wnkela on Fri, 05/31/2019 - 17:07

Bonjour,
Je vous ai pas bien compris.
La problématique est que j'ai l'id de celui qui va exécuter la prochaine tâche et je vais qu'il soit notifier avant que la tâche soit disponible dans son panier.

Submitted by franckesatia_1371223 on Fri, 05/31/2019 - 17:58

OK, je pense que ceci te retourne l'adresse e-mail de l'utilisateur dont l'id a été passé en paramètre:

return apiAccessor.getIdentityAPI().getUserContactData(monId, true).email;

Submitted by wnkela on Tue, 06/04/2019 - 09:33

Ça marche mais seulement si sur le Input du contrat d instanciation l attribut id est de type LONG. Et avec long comme pour id j'ai tjrs un message d'avertissement «si e processus est instancié par un formulaire, n utiliser pas d input de contrat de type Long...

Alors ce msg avertissent et pourquoi les notifications ne passe pas quand ce input de contrat est de type text?

Submitted by bastien.laurent... on Tue, 06/04/2019 - 14:35

Change ta valeur de retour en String, et dans ton appel, refais passer ton String en Long.

Submitted by wnkela on Tue, 06/04/2019 - 15:34

Je vous ai pas trop bien suivi. De quelle valeur de retour faites vous allusion? Dans ma base de données métier, mon attributId est en Long, et dans le input du contrat lorsqu'il est en String, les notifications aux utilisateurs ne passent pas et quand je le mets en Long, ça marche. Si vous pouvez être plus explicite svp.

Submitted by bastien.laurent... on Tue, 06/04/2019 - 16:33

le Input du contrat d instanciation l attribut id est de type LONG
Tu change le contrat pour qu'il prenne un String, et lorsque tu en as besoin, tu le repasse en Long: Long.valueOf(monId).

Mais si c'est juste pour une histoire de message d'avertissement, c'est pas bien grave.

Submitted by wnkela on Tue, 06/04/2019 - 17:06

Ok. Merci pour votre assistance.

1
0
-1

Pour récupérer ton email:

ContactData contact=apiAccessor.getIdentityAPI().getUserContactData(user.getId(), false)
email = contact.getEmail());

Comments

Submitted by wnkela on Tue, 05/28/2019 - 16:57

Plusieurs marqueurs sur cette ligne
- ContractData Ne peut pas être résolu. Ça peut conduire à des erreurs d'exécution.
- Groovy:expecting EOF, found 'contract' @line1, column 20.

Submitted by bastien.laurent... on Tue, 05/28/2019 - 17:16

N'oublie pas l'import:
import org.bonitasoft.engine.identity.ContactData

Submitted by wnkela on Tue, 05/28/2019 - 17:27

Ok mais celui-ci est toujours là
Groovy:expecting EOF, found 'contact' @line1, column 20.

Submitted by bastien.laurent... on Tue, 05/28/2019 - 17:55

Bizarre,
Normalement, tu as juste à faire:

import org.bonitasoft.engine.identity.ContactData

ContactData contact=apiAccessor.getIdentityAPI().getUserContactData(user.getId(), false);
return contact.getEmail();
Submitted by wnkela on Wed, 05/29/2019 - 13:15

Plusieurs marqueurs sur cette ligne
- user Ne peut pas être résolu. Ça peut conduire à des erreurs d'exécution.
- implémenter groovy.lang.Script.run.

Submitted by bastien.laurent... on Wed, 05/29/2019 - 14:26

Mon objet user fait référence à un utilisateur que j'ai déjà récupérer.
Toi, il faut que tu remplace : user.getId() par l'id de ton utilisateur.

Submitted by wnkela on Wed, 05/29/2019 - 14:55

Comment le (id) récupérer avec ce script s'il est stocké dans la variable métier

Submitted by bastien.laurent... on Wed, 05/29/2019 - 16:12

mavariableMetier.mavaleur

Si ton objet métier s'appelle 'user' tu fais 'user.maValeurQueJeVeuxUtiliser'.

Submitted by wnkela on Wed, 05/29/2019 - 16:26

org.bonitasoft.engine.identity.ContactData
ContactData contact=apiAccessor.getIdentityAPI().getUserContactData(taskAssignee.firstStepUserId(), false);
return contact.getEmail();

Avec taskAssignee comme ma variable métier, il n'y a pas de message d'erreur dans le script mais mon connecteur échoue tjrs!

Submitted by bastien.laurent... on Wed, 05/29/2019 - 16:32

Et c'est quoi comme erreur cette fois?

Submitted by wnkela on Wed, 05/29/2019 - 16:46

Pas d'erreur mais Le connecteur échoue tjrs

Notifications