comment assigner une tâche à un groupe dynamiquement,

1
0
-1

Bonjour,

Comment assigner une tâche à un groupe dynamiquement,

Par exemple; quand je crée un cas, je choisis depuis le front, qui sera l'acteur de la prochaine tâche.

2 answers

1
0
-1

Bonjour,

J'essaie d'utiliser le code de Bastien Laurent pour résoudre le problème que je décrit ici: https://community.bonitasoft.com/questions-and-answers/filters-teams-2-s...

Je ne sais pas trop où mettre ce code, ni les opérations à réaliser sous le studio. Je crois qu'il me faudrait des instructions pas à pas, si c'est possible. J'ai lu ceci. Je pense donc que je dois faire des clics ou écrire du code dans le studio, menu Développement > Filtres d'acteurs > Nouvelle définition / nouvelle implémentation, mais cela s'arrête là pour moi.

Mayeul

Comments

Submitted by bastien.laurent... on Thu, 01/30/2020 - 13:59

Pour savoir où mettre le code, je te préconise de regarder : https://documentation.bonitasoft.com/bonita/7.10/creating-an-actor-filter
Si besoin de plus d'informations, n'hésite pas, je te répondrais.

Submitted by mayeul.kauffman... on Thu, 01/30/2020 - 14:35

Merci beaucoup! J'utilise le 7.9. Je comprends donc que la 1re étape est de modifier la définition XML (exemple du initiator-manager <span class="token tag"><span class="token tag">donné dans la page d'aide). Je teste ceci: (j'ai juste changé l'id en : "</span></span>initiator-colleague-same-group")

J'ai créé un fichier initiator-colleague-same-group_v1.xml qui contient ceci:

=================================

W?xml version="1.0" encoding="UTF-8"?X
Wdefinition:ConnectorDefinition xmlns:definition="http://www.bonitasoft.org/ns/connector/definition/6.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"X
WidXinitiator-colleague-same-groupW/idX
WversionX1.0.0W/versionX
WiconXinitiator-manager.pngW/iconX
Wcategory id="process" icon="process.gif" XW/categoryX
Winput name="autoAssign" type="java.lang.Boolean" mandatory="false" defaultValue="true" /X
Wpage id="config"X
Wwidget id="autoAssign" inputName="autoAssign" xsi:type="definition:Checkbox" XW/widgetX
W/pageX
W/definition:ConnectorDefinitionX

=================================

(je n'arrive pas à poster du code ici, j'ai remplacé le signe supérieur par X et inférieur par W...)

L'import dans le studio n'accepte pas les .xlm. J'ai compressé ce fichier en initiator-colleague-same-group_v1.zip

Puis j'ai fait dans le studio: Menu Développement > Filtre d'acteurs > importer > choix de ce zip; le studio dit que l'import a fonctionné. Mais je ne vois ce filtre nul part dans le studio...

Submitted by bastien.laurent... on Thu, 01/30/2020 - 16:24

Pour que ce soit plus simple, tu peux tout faire en interface graphique dans le Studio :
Développement -> Filtre -> Définition.
Dans cette interface tu remplis l'id, ainsi que tout ce dont tu as besoin, tu cliques sur suivant.
Dans ce formulaire, tu rajoutes une ligne : 'users' que tu rends obligatoire et de type 'List'.
Tu peux terminer directement ici ou alors rajouter des langues de traduction dans les autre pages.

Tu vas ensuite dans :
Développement -> Filtre d'acteur -> Nouvelle implémentation
Tu sélectionne ta définition et tu termines.

Ca va t'ouvrir une page de code pour l'implémentation. Et c'est ici que tu mets mon code.

Cordialement,

Submitted by mayeul.kauffman... on Thu, 01/30/2020 - 19:30

Merci! Pour ceci:

"Développement -> Filtre -> Définition.
1. Dans cette interface tu remplis l'id, ainsi que tout ce dont tu as besoin, tu cliques sur suivant.
2. Dans ce formulaire, tu rajoutes une ligne : 'users' que tu rends obligatoire et de type 'List'.
3. Tu peux terminer directement ici ou alors rajouter des langues de traduction dans les autre pages."

J'ai rajouté 3 numéros. Dans le studio (Community, 7.9.3) il y a à l'étape 2 le type "java.util.List", j'imagine que c'est cela.

Par contre, entre les étapes 2 et 3, il y a un formulaire de plus, "Pages de l'Assistant". J'y ai créé une page "page_acteur_collegue_groupe". J'ai trouvé - je pense - que je dois créer un widget (je l'ai appelé widget_users) contenant une entrée "users (java.util.List)" (sinon je ne peux pas terminer)

Submitted by mayeul.kauffman... on Thu, 01/30/2020 - 19:29

J'ai copié le texte tel quel sous "package org.mycompany.connector; import java.util.List;" sauf la ligne suivante (que j'ai réécrite):

public class InitiatorColleagueSameGroupImpl extends AbstractInitiatorColleagueSameGroupImpl {

Il y a 9 avertissements et 3 erreurs. Les 3 erreurs sont:

(ligne 32) List userIds = new ArrayList();

- ArrayList n’est pas reconnu comme type valide

(ligne 33) for (User user : users) {

- Incohérence des types : impossible de convertir le type d’élément Object en User

- User n’est pas reconnu comme type valide

Submitted by bastien.laurent... on Mon, 02/03/2020 - 08:34

Pour te répondre :
- C'est bien le type 'java.util.List'.
- La page de l'assistant n'est pas obligatoire, tu peux cliquer sur suivant ou terminer directement.
- Pour t'es erreurs. Il faut que tu rajoutes les imports. Normalement Bonita te souligne la ligne ou te mets un marqueur sur cette ligne. Tu clique dessus, et tu fait 'Rajouter les imports' ou quelque chose de ce style.

1
0
-1

Bonjour,

Pour assigner une tache à un groupe, ce n'est pas possible, une tache = un utilisateur.
Pour ce faire, tu récupères l'utilisateur auquel tu souhaite assigner la tache et tu utilise un filtre d'acteur comme celui-ci:

public class DynamicActeursImpl extends AbstractDynamicActeursImpl {

@Override
public void validateInputParameters() throws ConnectorValidationException {
//TODO validate input parameters here

}

@Override
public List filter(final String actorName) throws UserFilterException {
//TODO execute the user filter here
//The method must return a list of user id's
//you can use getApiAccessor() and getExecutionContext()

List users =(List)getUsers();
List userIds = new ArrayList();
for (User user : users) {
userIds.add(user.getId());
}
return userIds;

}

@Override
public boolean shouldAutoAssignTaskIfSingleResult() {
// If this method returns true, the step will be assigned to
//the user if there is only one result returned by the filter method
return super.shouldAutoAssignTaskIfSingleResult();

}

}

Ce filtre prends en params une liste d'utilisateurs ( la variable s'appelle users ).
Ensuite si un seul utilisateur est passé en paramettre du filtre, la tache lui est automatiquement assignée.

Cordialement,

Comments

Submitted by merikawasselin_... on Fri, 01/17/2020 - 12:08

Bonjour, merci pour ta reponse,

en faite, ce que je veux c'est pas assigner mais plutot, mettre un groupe comme acteur, c'est à dire, les membres peuvent prendre le ticket, celui qui le prend en premier sera assigné, si par exemple dans mon acteurs il'y a 2 ou 3 groupes, je choisi par exemple le groupe2 pour faire la tâche

Submitted by bastien.laurent... on Fri, 01/17/2020 - 15:07

Mon filtre fait ça aussi, si tu passe la liste des utilisateurs du groupe.
Sinon le mieux, c'est de créer une nouvelle 'line' dans ton process, avec comme acteur le groupe que tu souhaite, et tu déplace ta tache dans cette line.
Sur ta tache, tu va ensuite dans l'onglet Général -> Acteurs. Et il faut que tu ais bien sélec tionner, 'Utiliser l'acteur définie dans la lane'.

Cordialement,

Submitted by mayeul.kauffman... on Thu, 01/30/2020 - 13:41

Concernant la réponse "créer une nouvelle 'line' dans ton process, avec comme acteur le groupe que tu souhaite", la procédure complète est décrite dans: https://documentation.bonitasoft.com/bonita/7.9/actors

Notez qu'il y a plusieurs étapes: Définir les acteurs au niveau de la "piscine" (pool), faire le mapping d'acteurs ("Map an actor", bouton configure), puis le filtre au niveau de la ligne

Notifications