Bonjour,
J’ai essayé de remplir une liste déroulante des noms des utilisateurs à partir d’un script groovy qui invoquerait l’API (identityAPI) pour récupérer la liste des utilisateurs afin de permettre au utilisateur de choisir un parmi eux .
Voila mon script:
import org.bonitasoft.engine.identity.*;
def list = ;
List users = apiAccessor.getIdentityAPI().getUsers(0, 200, UserCriterion.FIRST_NAME_ASC);
for(User u:users)
{
list.add(u.getId());
}
return list;
mais je cherche à récupérer une liste déroulante des noms des utilisateurs appartenant à “UN groupe ou UN rôle spécifique”.
Qu’est ce que je dois rajouter ? Besoin d’aide svp.
Merci.
Bonjour,
au lieu d’utiliser la méthode getUsers, vous pouvez utiliser getUsersInGroup (ou getUsersInRole), qui prendra en entrée l’identifiant d’un group (ou l’identifiant d’un rôle). Il vous faudra trouver l’identifiant du group ou du rôle dont vous avez besoin.
J’espère que cela vous aidera,
Haris
effectivement c’est ce que j’ai fait “getUsersInGroup”.
Mais si je connais pas l’identifiant du groupe je fais comment pour faire appel.
Merci.
Voila mon nouveau script:
import org.bonitasoft.engine.identity.*;
import org.bonitasoft.engine.identity.Group;
import org.bonitasoft.engine.api.UserAPI;
def list = ;
Group groupSelected =apiAccessor.getIdentityAPI().getGroupByPath(“/acp/Pilote”);
List usersInGroup = apiAccessor.getIdentityAPI().getUsersInGroup(groupSelected.getId(),0, 200, UserCriterion.FIRST_NAME_ASC);
for(User user:usersInGroup)
{
list.add(user.getId());
}
return list;
Je pense qu’il est bien fait.
j’ai trouvé le problème sur mon organisation( c’était juste une version d’essai ), je l’ai pas bien géré je trouve pas le “groupParentPath”. Je vais la refaire.
Merci pour votre aide.
j’ai réussi mon script, merci pour votre aide.
Le voila:
import org.bonitasoft.engine.identity.Group;
import org.bonitasoft.engine.identity.User;
import org.bonitasoft.engine.identity.UserCriterion;
def list = ;
Group groupSelected =apiAccessor.getIdentityAPI().getGroupByPath(“Pilote”);
List usersInGroup = apiAccessor.getIdentityAPI().getUsersInGroup(groupSelected.getId(),0, 200, UserCriterion.FIRST_NAME_ASC);
for(User user:usersInGroup)
{
list.add(user.getId());
}
return list;
mon problème maintenant c’est que je veux au lieu qu’il m’affiche des valeurs dans la liste, je lui donne la valeur dans l’opération de sortie et il m’affiche les noms des pilotes et non pas des numéros.
Voila mon script dans l’opération de sortie:
return Long.parseLong(field_S1);
Merci
Svp besoin d’aide.Merci d’avance
Dans votre question, il y avait “getUsers”…
Il faudra trouver le groupe dont vous avez besoin, par example par searchGroups, getGroups ou même getGroupByPath (en passant le chemin de votre groupe, quelque chose comme “mycompany/finances”)
Je ne suis pas sûr de comprendre ce que vous voulez faire. Pour avoir les noms des pilotes, vous pouvez utiliser user.getUsername (ou user.getFirstName()+" "+user.getLastName() au lieu d’utiliser user.getId(). Votre valeur dans l’opération de sortie devrait être utiliser comme le filtre ? Elle contient quoi ?
Quand j’ai mis user.getUsername ça me retourne une erreur de ce genre “Erreur lors de la récupération de la liste des pages du formulaire.”
Dans la valeur de l’opération de sortie j’ai une variable “user” de type long , je veux qu’elle prend une valeur et elle m’affiche les noms des pilotes et non pas des Id.