application complet dans Bonita

Je ne vois pas du tout d’où peut provenir le problème.
S’il n’y a rien dans les logs, c’est qu’il n’y a pas d’erreur. Mais si ça ne fonctionne pas, c’est qu’il y a une erreur.

Est ce que tu pourrais exporter ton process en .bos ?
Ca nous permettrait de le tester pour voir d’où vient le soucis.

création user automatique Merci Yannick pour ton aide voila mon fichier bos

Je viens de tester ton processus sans y toucher et j’ai cette erreur dans les logs :

AVERTISSEMENT: THREAD_ID=104 | HOSTNAME=W28323 | TENANT_ID=1 | org.bonitasoft.engine.expression.exception.SExpressionEvaluationException : "PROCESS_DEFINITION_ID=7322932459237758601 | PROCESS_NAME=Pool001 | PROCESS_VERSION=1.0 | PROCESS_INSTANCE_ID=18 | ROOT_PROCESS_INSTANCE_ID=18 | FLOW_NODE_DEFINITION_ID=-6126911940336084817 | FLOW_NODE_INSTANCE_ID=87 | FLOW_NODE_NAME=Étape2 | CONNECTOR_DEFINITION_IMPLEMENTATION_CLASS_NAME=test1 | CONNECTOR_INSTANCE_ID=15 | groovy.lang.MissingMethodException: No signature of method: org.bonitasoft.engine.identity.UserCreator.getId() is applicable for argument types: () values: [] Possible solutions: getAt(java.lang.String), wait(), find(), grep(), wait(long), each(groovy.lang.Closure)"

Ca dit qu’il n’existe pas de methode getId() pour un objet de type UserCreator.
Dans mon code j’avais indiqué qu’il fallait faire “user.getId()” et non “userCreator.getId()”. C’est donc ça l’erreur.

J’ai donc modifié ton script :

import org.bonitasoft.engine.identity.ContactDataCreator;
import org.bonitasoft.engine.identity.UserCreator;
import org.bonitasoft.engine.identity.Group;
import org.bonitasoft.engine.identity.Role;
import org.bonitasoft.engine.identity.User;

ContactDataCreator contactDataCreator = new ContactDataCreator();

contactDataCreator.setEmail(couriel);

UserCreator userCreator = new UserCreator(raisonS, raisonS);
userCreator.setPersonalContactData(contactDataCreator);
userCreator.setFirstName(nom);
userCreator.setLastName(prenom);

User user = apiAccessor.getIdentityAPI().createUser(userCreator);

Role role = apiAccessor.getIdentityAPI().createRole(‘distributeur’);// assigné l’user a un role
Group groupe = apiAccessor.getIdentityAPI().createGroup(‘groupDistributeur’, ‘’); //créé un sous-groupe pour l’user’
apiAccessor.getIdentityAPI().addUserMembership(user.getId(), groupe.getId(), role.getId()); // ajouter le tout

Et maintenant il n’y a plus d’erreur, ça fonctionne nickel.

PS : J’ai appris un truc au passage, je ne savais pas qu’on pouvait faire des connecteurs groovy de cette manière. Merci pour l’info.

Nikel alors et ce la marche de mon coté je prêterai plus d’attention aux logs seulement je ne comprends pas pourquoi si j’essaye de me connecter avec l’utilisateur crée j’y arrive pas? Tu a pu te connecté avec?

Ah oui, c’est normal. C’est le truc auquel je ne pense jamais. Il faut aussi attribuer un profil à l’utilisateur.
A la fin de ton script il faudrait rajouter la ligne suivante :

apiAccessor.getProfileAPI().createProfileMember(1, user.getId(), 0, 0);

Le 1 correspond à l’id du profil user. Et les deux 0 correspondent au groupe et au role (mais on les laisse à 0 car là c’est un utilisateur qu’on crée).

Bonjour Yannick, merci sa marche nickel.
Mais serait-il possible d’assigner une tâche d’un autre processus à cet utilisateur créer?

J’ai testé mais cela bloque au niveau du filtre car je ne sais pas d’avance le login et je ne peux pas utiliser les variables globales pour l’estoquer.

Bonjour.

Est ce que tu veux lui attribuer une tâche directement après l’avoir créé (dans le même process) ?
Si oui, je te conseil de simplement retourner l’id de l’utilisateur après l’avoir crée et de le stocker dans un variable. Comme ça tu n’as pas besoin de connaitre son login.

Une autre idée pourrait être de récupérer le nombre d’utilisateur en supposant que celui que tu viens de créer sera le dernier. Mais ça implique qu’il n’y ait aucun trop dans la numérotation et il faut être sûr qu’il ait bien le dernier id (trop risqué à mon avis).

J’ai ta première proposition cela marche si je reste sur le même ce process mais ce que je veux c’est que cela ne soit pas dans le même process car cet utilisateur plusieurs autre process qui lui seront assigné.

La dernier solution que j’ai trouvé c’est une tâche d’émission message qui récupère l’id de l’utilisateur et le transmet au autres process par tache de réception pour pouvoir implémenter le filtre. je pense me faire comprendre.

C’est effectivement la solution que j’allais proposer si l’affectation se fait dans un autre processus. L’envoi de messages comportant l’id de l’utilisateur est surement la meilleur idée.

Merci j’ai testé et cela marche

Il ne me semble pas qu’il y ai besoin de modifier quoi que ce soit. Si c’est un variable de type string, il n’y a pas besoin d’ajouter des “” ou ‘’. Il suffit de passer le nom de la variable en paramètre.

Je confirme ! il y’a quelque chose qui ne vas pas (le compte est créé j’en suit certain vu que je peux me connecter dessus juste aprés). Je vais voir ce qui ne vas pas. Je vous remercie en tous cas

Apparemment tu es sur la version 5.X de Bonita.
Si ça se trouve, ça fonctionne différemment sur cette version.
Je pensais que tu étais sur la version 6.X. Ce que j’ai indiqué ne fonctionne pas sur la “vieille” version de Bonita.

J’utilise la version 6.2.2

Est juste le fait que je regroupe le tout dans une méthode de type de retour void?

Je suis toujours bloqué par cette création d’user.

Merci d’avance.