Bonjour à tous,
j’ai une application à créer dans Bonita mais je ne c’est si je peut tout faire dans Bonita sans utilisation d’une application externe:
-un processus qui permet de créer des utilisateurs avec adresse mail et mot de passe par un compte administrateur.
- Et ces utilisateurs pourront se connecter et déclencher des processus qui leurs seront attribuer et ils auront la possibilité de créer d’autres utilisateurs avec une hiérarchie pour chaque utilisateur de voir les processus de ses utilisateurs crées et à l’administrateur de tout voir.
Je ne c’est pas si avec Bonita je peut gérer les comptes automatiquement avec des mots de passe génériques ou si je suis obligée de le faire en externe et connecté mon application(exemple Maven ou Exo) avec BONITA.
Je sollicite votre aide pour avoir les idées claires svp.
Merci d’avance.
Bonjour,
Pour l’implémentation du filtre user j’ai bien suivi votre logique mais quand mon user se connecte il trouve pas la tâche à exécuter !?
J’ai conclus que si je passe le login dans un champs text ça fonctionne pas , alors quand je le passe en liste déroulante ça marche !
Moi j’ai une tâche avant où je définis le Login (dans un champs texte), et j’attribue la tâche d’aprés au user que je viens de créer et dans ce cas ça fonctionne pas ! Y a-t-il une modification à faire au niveau de la variable (login) définie dans le script ?
J’ai essayé avec les " " où ’ ’ est apparemment pareil !
J’ai pas modifier les logs voici mon code :
import org.bonitasoft.engine.identity.User;
import org.bonitasoft.engine.identity.Group;
import org.bonitasoft.engine.identity.Role;
protected void executeConnector() throws Exception
{
User user = apiAccessor.getIdentityAPI().createUser(couriel,raisonSocial);
Group groupe = apiAccessor.getIdentityAPI().createGroup(‘nomGroup’, ‘acme’);
Role role = apiAccessor.getIdentityAPI().createRole(‘member’);
apiAccessor.getIdentityAPI().addUserMembership(user.getId(), groupe.getId(), role.getId());
}
Mes variales couriel et raisonSocial sont globales même si je mets des valeurs statiques c’est sans résultats
pour les logs
Root exception:
java.lang.NoClassDefFoundError: org/eclipse/equinox/http/jetty/JettyConfigurator
at org.eclipse.help.internal.server.JettyHelpServer$StopServerThread.run(JettyHelpServer.java:96)
Caused by: java.lang.ClassNotFoundException: org.eclipse.equinox.http.jetty.JettyConfigurator
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:513)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
at java.lang.ClassLoader.loadClass(Unknown Source)
… 1 more
!ENTRY org.bonitasoft.studio.engine 1 0 2014-07-31 13:18:36.437
!INFO Building bar for process Pool001 (1.0 )…
Il y a tout ce qu’il faut dans Bonita pour créer et gérer les utilisateurs.
Pour cela il faut utiliser les fonctions de l’api Identity : http://documentation.bonitasoft.com/javadoc/api/6.3/index.html
Pour les détails sur l’utilisation de cette api, il y a déjà plein de sujet à ce propos sur le forum.
Pour l’histoire de la hiérarchie, je pense que ça peut se faire en créant des Groupes et des Sous-Groupes d’utilisateurs.
Merci Yannick de votre réponse rapide,
si j’ai bien compris je peux utilisé l’api identity pour créer un utilisateur et l’affecté à un groupe ?
Oui c’est cela.
Par exemple pour créer un utilisateur dans un groupe et avec un certain role, on peut utiliser le script groovy suivant :
import org.bonitasoft.engine.identity.User;
import org.bonitasoft.engine.identity.Group;
import org.bonitasoft.engine.identity.Role;
User user = apiAccessor.getIdentityAPI().createUser(‘login’,‘password’);
Group groupe = apiAccessor.getIdentityAPI().createGroup(‘nomGroup’, ‘nomGroupeParent’);
Role role = apiAccessor.getIdentityAPI().createRole(‘nomRole’);
apiAccessor.getIdentityAPI().addUserMembership(user.getId(), groupe.getId(), role.getId());
merci je comment mieux juste une autre chose : comment je peux affecter mes processus à cet utilisateur crée par votre script groovy ?
Pour affecter un processus à un utilisateur il faut utiliser les filtres d’acteurs (dans l’onglet Acteur d’une tâche).
Il suffit de choisir un filtre de type “single user” puis de passer en paramètre l’id de cette utilisateur.
Par exemple en utilisant :
apiAccessor.getIdentityAPI().getUserByUserName(‘login’);
Merci bien Yannick je vais suivre ce logique pour tout faire dans Bonita.
Bonjour Yannick, un autre coût de main svp:
voici le code de mon script groovy que j’ai mis dans un connecteur, je récupéré le login et le password dans un formulaire de la tâche qui précède mais quand je test je ne vois pas l’effet de la création de l’user, suis bloquée à cet étape de test.
import org.bonitasoft.engine.identity.User;
import org.bonitasoft.engine.identity.Group;
import org.bonitasoft.engine.identity.Role;
protected void executeConnector() throws Exception
{
User user = apiAccessor.getIdentityAPI().createUser('login','password');
Group groupe = apiAccessor.getIdentityAPI().createGroup('nomGroup', 'acem');
Role role = apiAccessor.getIdentityAPI().createRole('member');
apiAccessor.getIdentityAPI().addUserMembership(user.getId(), groupe.getId(), role.getId());
}
Merci d’avance.
Pour voir le nouvel utilisateur crée il faut aller sur le portail en étant connecté avec un profil Administrateur. Puis aller dans l’onglet Organisation et enfin dans Utilisateurs.
S’il n’y ai pas, c’est qu’il y a eu une erreur quelque part, du coup il faudra regarder dans les logs pour voir où est le problème.
Pour accéder aux logs, il faut aller sur le studio Bonita BPM, dans l’onglet Help puis afficher les logs “Bonita BPM Engine log”. L’erreur sera surement vers la fin du fichier.
Par contre je ne vois pas trop l’utilité de créer un connecteur pour créer un utilisateur. Un simple script groovy (dans l’onglet Operation d’une tache de type script) me parait suffisant pour faire cela.
Et dans l’exemple que tu as posté, il faut bien faire attention à ce que le groupe “acem” existe déjà, sinon c’est un plantage assuré du script.
En étant en profil administrateur, est ce que la tâche est bien présente ?
Et si oui, elle est noté comme étant assignée à quelqu’un ?
Si ce n’est pas le cas, il y a surement eut une erreur quelque part. Il faut donc regarder dans les logs.
est ce bien ça ce qu’on doit mettre au niveau de l’ID user dans le filtre
return apiAccessor.getIdentityAPI().getUserByUserName(u_login).getId();
Oui, c’est ça que j’utilise.
Par contre il faut cela peut planter si l’utilisateur n’existe pas.
En solution à cela, j’utilise un try/catch de façon à attribuer la tâche à un autre utilisateur (dont je sais qu’il existe) au cas où l’utilisateur premier n’est pas trouvé.
Justement je me connecte avec le Login et le mot de passe de l’utilisateur que je viens de créer et je ne trouve rien alors que sur la tâche en question je mets bien le filtre avec le code que j’ai postuler ci-dessus !
Pouvez vous me faire un .proc de votre exemple ?
Voici un .proc qui fait cela :
http://paf.im/DOGXH
Bonjour Yannick, j’ai utilisé un connecteur du fait c’est à partir d’une formulaire d’un process éxécuté par une autre user que je récupère le login et password. j’ai testé avec une tâche script dans l’onglet opération mais j’ai que c’est des variables à mettre à jour, je ne vois pas ou mettre mon script. Mon user n’est toujours pas créer et les logs ne me signal pas d’erreurs juste ces deux lignes:
!ENTRY org.bonitasoft.studio.engine 1 0 2014-07-31 11:08:15.074
!INFO Build complete for process Pool001 (1.0 ).
Un coût de main si possible merci
Bonjour wakhafall,
Peux tu poster ton code complet (récupération du login/password + création de l’utilisateur). Comme ça on pourra voir si le soucis vient de là.
C’est étrange que tu n’aies que cela dans les logs. As tu modifiés le fichier de configuration des logs (loggin-properties) ?
Voici mon code compet :
import org.bonitasoft.engine.identity.User;
import org.bonitasoft.engine.identity.Group;
import org.bonitasoft.engine.identity.Role;
protected void executeConnector() throws Exception
{
User user = apiAccessor.getIdentityAPI().createUser(couriel,raisonSocial);
Group groupe = apiAccessor.getIdentityAPI().createGroup(‘nomGroup’, ‘acme’);
Role role = apiAccessor.getIdentityAPI().createRole(‘member’);
apiAccessor.getIdentityAPI().addUserMembership(user.getId(), groupe.getId(), role.getId());
}
J’ai deux tâches le premier humain avec un formulair(couriel et raisonSocial) c’est des variables globales du process renseigné dès l’exécution du process. pour le fichier de configuration j’ai rien changé aussi et même si je teste sans utilisé les données de mon formulaire cela ne marche pas.