Bonjour la communauté,
Ci-dessous, mes deux interrogations.
-
Est-ce possible, à partir d’un formulaire, de faire appel à une liste déroulante d’utilisateurs (de mon organisation) et d’en choisir, un seul, à qui assigner la tâche prochaine ? Pourrais-je avoir vos orientations?
-
Est-ce possible d’instancier, à partir d’un formulaire, plusieurs cas simultanément? J’ai, par exemple, 50 demandes de révision des dossiers de mes clients que je dois initier. Devrai-je les démarrer un par un?
Merci d’avance pour votre feedback.
Bien cordialement,
Bonjour,
Pour votre premier cas d’utilisation la solution consiste à :
- Créer un formulaire d’instanciation du processus qui va permettre à l’utilisateur de choisir à qui doit être assigné la première tâche.
- Pour effectuer ce choix le formulaire peut par exemple proposé une liste déroulante.
- La liste des utilisateurs disponibles dans la liste déroulante peut être obtenu via un appel aux API de Bonita (plus exactement : …/API/identity/user?p=0&c=100) dont le résultat devra être stocké dans une variable de formulaire elle même associée au widget de liste déroulante. Vous pouvez consulter la documentation pour plus d’information sur l’API identity.
- La valeur sélectionnée (plus précisément l’identifiant de l’utilisateur sélectionné) doit ensuite être envoyée pour valoriser le contrat défini pour démarrer le processus.
- La valeur reçue par le contrat doit ensuite être sauvegardée par exemple dans une variable métier déclarée au niveau du processus avec un attribut de type Long (attention au conversion de type, la valeur renvoyée par l’API étant au format texte).
- Enfin, il faut configurer un filtre d’acteur de type “Single user” sur la tâche. Ce type de filtre d’acteur réclame seulement un seul paramètre qui est l’identifiant de l’utilisateur à qui doit être assigné la tâche. C’est cette information que l’utilisateur à défini via le formulaire d’instanciation, a envoyé via le contrat et qui est stockée par exemple dans la variable métier.
Pour plus d’information sur l’assignation des tâches je vous recommande de consulter le blog post que j’ai publié récemment.
Je vous partage un exemple qui illustre ma solution décrite ci-dessus avec Bonita Studio 7.8.3 (vous pouvez l’installer en parallèle de la version 7.5.4 que vous utilisez actuellement).
Pour votre seconde question, est ce que vous pouvez publier une seconde question sur le forum ? Cela permettra de suivre plus facilement les échanges. Merci.
Bonjour,
Merci beaucoup pour votre retour.
Est-ce possible implementer cette solution avec la version 7.5.4?
Bien cordialement,
Cela doit être possible. Néanmoins je préfère toujours réaliser les exemples avec la dernière version disponible pour profiter des corrections d’anomalies et potentiellement des dernières fonctionnalités.
Si cela vous ai possible je recommande de suivre les mises à jour Bonita au fur et à mesure des sorties de versions.
Merci.
Pour l’instant, nous travaillons encore sur la version 7.5.4 et pensons monter évidemment vers les versions supérieures prochainement, c’est pourquoi je demandais si je pouvais avoir cet exemple avec mon actuelle version.
Je ne me suis pas encore documenté là dessus mais, est-ce possible de faire une mise à niveau de l’application Bonita sans que les processus implémentés dans la version antérieure ne puissent pas être touchés dans leur bon fonctionnement.
Bien cordialement,
Je ne vais pas pouvoir recréer l’exemple dans une version antérieure de Bonita. Par contre il est tout à fait possible d’installer sur votre poste le Studio 7.8.4 en parallèle du Studio 7.5.4.
La mise à jour d’une version de Bonita comme par exemple 7.5.4 vers 7.8.4 se fait normalement sans problème en suivant les instructions fournies dans la documentation. Si vous avez plus de questions sur le sujet n’hésitez pas à créer une nouvelle question sur le forum.
Note : pour les discussions sur une question ou sur une réponse merci d’utiliser les commentaires plutôt que de créer une nouvelle réponse.
Bonjour,
ok, j’ai installé en parallèle 7.8.4.
Juste quelques éléments :
1.Est-ce possible de limiter la liste de choix à un groupe d’utilisateurs ou un rôle partagé par quelques utilisateurs car dans l’exemple il me semble que tout utilisateur de l’organisation qui peut être choisi.
2.Avec un connecteur mail, comment envoyer un notif à l’utilisateur choisi précédemment, bref comment récupérer l’adresse mail de l’utilisateur choisi.
Merci d’avance pour votre feedback.
Cordialement,
Oui il est possible de limiter les utilisateurs qu’il va être possible de sélectionner. Dans mon exemple je ne fais aucun filtre mais vous pouvez consultez la documentation de l’API REST identity de Bonita pour voir le type de filtre possible et les données qui peuvent être obtenues.
Dans mon exemple, un seul utilisateur est candidat de la tâche et il est donc automatiquement assigné pour effectuer la tâche (cf la configuration du filtre d’acteur utiliser pour la tâche). Il est possible de récupérer l’identifiant de l’utilisateur assigné à une tâche en obtenant les informations. Pour cela il faut faire appel à l’API ProcessRuntimeAPI - getHumanTaskInstance et utiliser la méthode "getAssigneeId() " sur l’objet de type HumanTaskInstance retourné.
Je crois que le filtre ci dessous devra m’aider.
Search for a group of users
URL
/API/identity/user
Example: Search for users with names that contain “will”, filter to keep only enabled users, and order the result by last name.: /API/identity/user?p=0&c=10&o=lastname%20ASC&s=will&f=enabled%3dtrue
Mais l’exemple ci-dessus, c’est tous les utilisateurs avec lastname contenant ‘will’ qui sont attendus. Alors, j’ai vu la documentation mais j’ai pas trouvé ce filtre là, à l’image de celui ci-dessus, qui puisse me retourner les utilisateurs appartenant à x groupe et ayant x rôle en commun.
Quant au mail à envoyer à cet utilisateur à qui est assigné la prochaine tâche, j’essaye de cerner votre proposition et je vous reviendrai.
Merci,
Après avoir effectuer des recherches, je constate que les API REST du moteur actuellement disponibles ne permettent pas d’obtenir la liste des utilisateurs qui se trouvent dans un groupe avec un rôle donné.
Néanmoins les API Java du moteur, plus particulièrement l’IdentityAPI avec la méthode searchUsers doit permettre d’obtenir le résultat souhaité. Pour la création du paramètre nécessaire à la méthode search vous devez utiliser la classe SearchOptionsBuilder avec les constantes définies dans la classe UserSearchDescriptor. Vous pouvez trouver un exemple de ce type de code dans un exemple de filtre d’acteur.
Pour intégrer cette solution avec votre formulaire je vous recommande de créer une REST API extension. L’appel aux API Java du moteur est facile dans ce type d’extension via la variable context.apiClient
(par exemple context.apiClient.identityAPI
pour l’IdentityAPI).
ok merci.
Juste un autre élément par rapport à l’exemple .bos sur le choix, à l’instanciation, de celui qui devra exécuter la prochaine tâche. Partant de cette idée, j’ai essayé de faire une simulation en offrant à celui qui exécute une tâche un peu plus loin dans mon processus de choisir aussi celui à qui il assigne la prochaine étape mais ç’a pas marché.
Alos je me pose la question de savoir si ça peut aussi marcher ailleurs comme à l’instanciaton?
Et j’ai comme l’impression que j’arrive toujours à récupérer l’id de celui à qui j’assigne la prochaine tâche.
Oui il est possible de permettre à un utilisateur de choisir quel sera l’utilisateur devant faire par exemple la tâche 2. Il faut pour cela un formulaire + contrat + opérations sur la tâche 1, une business variable pour stocker l’identifiant de l’utilisateur sélectionné et un filtre d’acteur associé à la tâche 2.
Le concept est exactement le même que pour la sélection de l’utilisateur devant effectuer la première tâche via le formulaire d’instanciation du processus.
Ok. Bien merci ça marche.