Script Groovy

Bonjour,

Je travaille sur un projet . Dans ce projet, un initiateur de processus(il peut y avoir plusieurs) remplit un formulaire et le transmet à un pilote ou plusieurs pilotes de son choix.Avant je cherchais a avoir une sélection d’acteurs et choisir parmi ces acteurs a qui je veux affecter la tache suivante).
Une fois le formulaire soumis, le pilote ou les pilotes à qui le formulaire fut soumis est “seul(s)” à le voir dans sa(leur) UserXP.
Hier je ne savais pas vraiment comment modéliser cette situation aujourd’hui je l’ai réussi en ajoutant ce script groovy:

import org.bonitasoft.engine.identity.*;
def list = ;
Listusers = apiAccessor.getIdentityAPI().getUsers(0, 200, UserCriterion.FIRST_NAME_ASC);
for(User u:users)
{
list.add(u.getId());
}
return list;

Ce que je cherche maintenant c’est d’ajouter un bout de code à ce script pour:

  1. au lieu qu’il m’affiche la liste de tous les acteurs( j’ai trois acteurs dans mon processus"initiateur, pilote, directeur"), il m’affiche juste la liste des pilotes.
    NB: Sachant que j’ai qu’une seule step dans la lane de l’initiateur, la tache suivante part chez la lane du pilote.
  2. je veux au lieu qu’il m’affiche des valeurs " des numéros" , il m’affiche des noms des pilotes.

Quelqu’un peut m’aider j’ai vraiment besoin d’aide.
Merci.

1 Like

Bonjour,
si j’ai bien compris, avant vous utilisiez la sélection d’acteur, avec trois acteurs (initiateur, pilote, directeur).
Maintenant vous utilisez un script (dans un filtre ?) qui vous retourne la liste de tous les utilisateurs de la plateforme ?
Vous parlez de la userXP, vous êtes en v5 ou en v6 ?
Décrit tel quel, je comprends que votre besoin est tel que l’initiateur choisi le ou les pilotes de son choix (dans une liste ou dans un select).

A priori vous devriez pouvoir le faire avec toujours ces 3 acteurs. Pour la première tâche de la lane pilote, il faudrait ajouter un filtre pour récupérer uniquement le ou les pilotes choisis (donc à priori à partir d’une donnée du processus de type List ou List (l’ID bonita d’un user étant un Long). De même avec le directeur.

Comment est identifé un pilote ? par son rôle ? son groupe ? par une autre information ?

A priori la solution à 1) et 2) réside dans les méthodes de la identityAPI

Merci pour votre aide.en fait pour la 1) question j’ai réglé le problème maintenant il m’affiche que les pilotes :slight_smile: voila mon nouveau script ça peut aider quelques uns :wink:

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;

Mais j’ai toujours des soucis pour la 2) question au lieu de m’afficher leurs noms j’ai les id qui s’affichent par numéros :" 1,2,3…etc"

Dans ta boucle, au lieu de mettre dans ta liste les user.getId(), il faut mettre les user.UserName().
Tu auras donc leur login dans ta liste.
Tu peux faire la même chose avec user.getFirstName() ou user.getLastName() pour avoir les prénoms ou noms de tes utilisateurs.

Quand je le mets ça me retourne une erreur j’ai déjà essayé :frowning:

Bizarre, je viens de tester et ça fonctionne pour moi.
Voilà mon code :

import org.bonitasoft.engine.identity.Group;
import org.bonitasoft.engine.identity.User;
import org.bonitasoft.engine.identity.UserCriterion;

Group g = apiAccessor.identityAPI.getGroupByPath(“Groupe1”);
List l = apiAccessor.identityAPI.getUsersInGroup(g.getId(), 0, 10, UserCriterion.FIRST_NAME_ASC);

List list = ;

for (User u : l) {
list.add(u.getUserName());
}

return list;

Tu utilises la version 6.3 de Bonita ?

j’utilise la version 6.2.5

Ok, je ne pense pas que ça soit un problème de version. Tu as quoi comme erreur ?