J’appel une activité appelante qui fait référence à un sous processus.
Comment définir dans le sous processus qu’il faut utiliser les mêmes acteurs que dans la lane du processus principal.
(pour info cette activité appelante est appelé plusieurs fois dans diverses lanes (qui ont leur propre acrteurs de définis)
Je dirais que ton acteur dans le processus doit être dans un groupe qui a les accès au sous-processus.
Par exemple, si dans mon processus j’effectue des tâches comme Ingénieur informatique et que j’entre dans mon sous processus, la tâche de mon sous processus a comme acteur “employé”. Un ingénieur informatique est un employé. Je suis donc dans les 2 groupes ce qui me permet de faire les 2 choses. Je ne sais pas si j’ai été clair. Sinon, n’hésite pas à me le dire.
il faut que tu utilises les API moteur pour transmettre les acteurs au sous-processus en utilisant des variables. Dans le sous-processus, il faudra utiliser des filtres d’acteurs soit tu pourras t’en sortir avec ceux fournit par défaut soit tu pourras créer ton propre filtre d’acteur.
Tu es obligé de passer par le filtre d’acteur alors à mon avis. A ta place, je récupèrerai l’ID de celui qui est autorisé à faire la tâche par exemple celui qui fait la tâche juste d’avant le sous processus et dans ton sous processus tu filtres par acteur unique en mettant l’ID en filtre.
ce serait une solution cependant dans mon cas j’appel cette “call activity” dans différentes “lanes” et je ne souhaite pas que les acteurs d’une autre lane puisse voir et gérer le processus des autres.
Mon but initial est de pouvoir factoriser une partie du processus dans un sous processus qui sera appelé soit une lane du processus principal soit dans telle ou telle autre. (et donc des acteurs différents pour chaque lane)
Mais peut être n’est ce pas possible et qu’il faut que je fasse x sous processus quasi identiques pour chacune de mes lanes…
Non c est surement possible, mais quand l’acteur de la lane A entre dans le sous processus, il en devient l’initiateur du sous processus. Si tu fais un filtre sur cet acteur, les autres acteurs des lanes B et C du processus ne devraient pas voir son travail.
Quand je dis “Si tu fais un filtre sur cet acteur” = faire un filtre sur l ID de l initiateur du processus. Comme ça l’ID change quand c est l’acteur de la lane B qui lance le sous processus.
Donc en mettant un filtre sur la lane du sous processus ca devrait pouvoir le faire.
Aurais tu un exemple de filtre ? C’est un peu abscons pour moi l’implémentation d’un filtre !
Ok j’ai bien étudié le diagramme. Je pense avoir saisi le concept. Ca fonctionne avec un filtre basique.
Donc il ne manquerait plus que l’implémentation du filtre. Comme je souhaite ne prendre en compte que les utilisateurs d’un certains groupe (Attribut typeGroupe dans ma définition de filtre), j’ai le code suivant pour le filtre :
Group gp = getAPIAccessor().getIdentityAPI().getGroupByPath(getTypeGroupe());
List tmp = getAPIAccessor().getIdentityAPI().getUsersInGroup(gp.getId(), 0, 20000,UserCriterion.FIRST_NAME_ASC);
et je retourne une liste des ids des users donnés.
Ca te parait cohérent ? (bon le code ne semble pas fonctionner mais je cherche)
import org.bonitasoft.engine.identity.UserCriterion;
import org.bonitasoft.engine.identity.User;
int nb = apiAccessor.getIdentityAPI().getNumberOfUsers();
long idRoleHy = apiAccessor.getIdentityAPI().getRoleByName("hygène").getId();
ArrayList listUsersHy = apiAccessor.identityAPI.getUsersInRole(idRoleHy, 0, nb, UserCriterion.FIRST_NAME_ASC);
Là c’est pour le rôle “hygène”, mais tu fais pareil avec les groupes. Puis après tu prends les id des users et tu les compare avec l’ID de celui qui lance le sous processus du processus. Si tu as un problème, on pourra le faire ensemble via Skype.
C’est effectivement ce que je fais au niveau des groupes.
Pourtant il passe dans la boucle d’Exception (d’ailleurs on peut les voir où les erreurs du Tomcat de Bonita Studio, aps trouvé le bon log)
Cela provient du fait que je récupère mal mon entrée de filtre typeGoupe ?
Bonitasoft empowers development teams with Bonita, the open-source and extensible platform to solve the most demanding process automation use cases. The Bonita platform accelerates delivery of complex applications with clear separation between capabilities for visual programming and for coding. Bonita integrates with existing solutions, orchestrates heterogeneous systems, and provides deep visibility into processes across the organization.