Notification à un utilisateur précis - Bonita Bpm 7.5.4
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,
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,
Pour récupérer ton email:
ContactData contact=apiAccessor.getIdentityAPI().getUserContactData(user.getId(), false)
email = contact.getEmail());
Comments
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.
Ok mais celui-ci est toujours là
Groovy:expecting EOF, found 'contact' @line1, column 20.
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.
Comment le (id) récupérer avec ce script s'il est stocké dans la variable métier
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!
Pas d'erreur mais Le connecteur échoue tjrs
Comments
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.
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;
Ç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?
Change ta valeur de retour en String, et dans ton appel, refais passer ton String en Long.
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.
Mais si c'est juste pour une histoire de message d'avertissement, c'est pas bien grave.
Ok. Merci pour votre assistance.