Jusqu'ici, lorsque vous exécutiez le processus, vous agissiez en tant qu'utilisateur unique (nom d'utilisateur : walter.bates, mot de passe : bpm) pouvant exécuter toutes les tâches utilisateur. Dans un scénario plus proche d'un cas d'utilisation réel, il existe différents types d'utilisateurs : des clients (pouvant soumettre des réclamations), des employés (qui répondent aux réclamations) et le responsable de l'utilisateur qui fournit la réponse (qui est nécessaire pour interagir avec des clients mécontents).
La première étape de la configuration de « qui peut faire quoi » consiste à créer des lanes dans notre pool. Nous avons déjà une lane par défaut pour les employés. Ajoutons-en une autre pour le client et une pour le responsable :
-
Dans Bonita Studio, depuis la palette à gauche du diagramme, sélectionnez l'icône lane
-
Cliquez à l'intérieur du pool de processus pour ajouter la lane. Faites-le deux fois pour avoir un total de trois lanes
-
Sélectionnez la lane Employé (lane) et cliquez sur l'icône de la flèche en bas pour la déplacer afin qu'elle soit positionnée au centre
-
Sélectionnez Lane1, allez dans l'onglet Général > Lane et renommez-la Customer lane
-
Sélectionnez Lane2, allez dans l'onglet Général > Lane et renommez-la Manager lane
-
Sélectionnez l'événement de début Submit claim et déplacez-le (par glisser-déplacer) vers la Customer lane. Effectuez la même opération pour la tâche Read the answer and rate it
-
Sélectionnez la tâche Deal with unsatisfied customer et déplacez-la vers la Manager lane. Effectuez la même opération pour l'événement de fin End client unsatisfied
ℹ info :
Une lane est utilisée pour regrouper les tâches utilisateur qui doivent être effectuées par le même ensemble d'utilisateurs.
À présent, nous devons définir des « acteurs », un pour chaque lane, et les associer à la lane à laquelle ils appartiennent :
-
Sélectionnez le pool
-
Allez dans Général > Acteurs
-
Cliquez sur le bouton Ajouter
-
Cliquez sur le nom par défaut de l'acteur (Actor1) et modifiez-le en : Customer actor
-
Répétez pour créer Manager actor
-
Sélectionnez le Customer actor et cliquez sur le bouton "Marquer" initiateur. Un flag sera ajouté pour cet acteur afin de l'identifier comme celui qui démarre le processus
-
Sélectionnez Customer lane (cliquez sur le nom de la lane)
-
Allez dans Général > Acteurs et dans la liste déroulante, sélectionnez Customer actor
-
Effectuez la même opération pour la Manager lane avec Manager actor
Les acteurs sont simplement des identifiants. Afin de définir l'utilisateur réel, nous devons configurer les acteurs et les associer aux groupes, rôles, utilisateurs, etc. de l'organisation. Nous utiliserons l'organisation test Bonita Acme pour cet exemple :
-
Dans le menu Bonita Studio, cliquez sur Serveur > Configurer
-
Sélectionnez Employee actor
-
Cliquez sur le bouton Groupes...
-
Décochez /acme
-
Cochez /acme/production/services. Nous utiliserons ce groupe d'utilisateurs pour jouer le rôle de l'équipe de support chargée de répondre aux réclamations. Dans l'organisation test, deux utilisateurs appartiennent à ce groupe : mauro.zetticci et thomas.wallis. Le responsable des deux utilisateurs est : michael.morrison
-
Cliquez sur le bouton Terminer
-
Sélectionnez Customer actor
-
Cliquez sur le bouton Groupes...
-
Cochez /acme/hr. Nous utiliserons ce groupe d'utilisateurs pour jouer le rôle des clients qui peuvent soumettre des réclamations. Dans l'organisation test, trois utilisateurs appartiennent à ce groupe : walter.bates, helen.kelly et april.sanchez
-
Cliquez sur le bouton Terminer
-
Sélectionnez Manager actor
-
Cliquez sur le bouton Rôles...
-
Sélectionnez le rôle member. Tous les utilisateurs de l'organisation test ont ce rôle. Mais, cela n'a pas vraiment d'importance, car cette association d'acteur sera annulée plus tard dans notre configuration
-
Cliquez sur le bouton Terminer
-
Cliquez sur le bouton Terminer pour fermer la fenêtre de configuration
À ce stade, si vous essayez d'exécuter le processus, vous verrez que walter.bates ne peut plus exécuter la tâche Review and answer claim. Vous devrez vous déconnecter du Portail Bonita (cliquez sur Walter Bates dans l'angle supérieur droit et sélectionnez Déconnexion) et vous connecter avec mauro.zetticci ou thomas.wallis (mot de passe : bpm) pour pouvoir afficher la tâche. Et vous devez vous reconnecter avec le compte walter.bates pour pouvoir afficher la tâche qui vous permet de lire la réponse fournie.
Actuellement, la tâche Read the answer and rate it est disponible pour tous les utilisateurs du groupe /acme/hr, mais elle devrait être disponible uniquement pour l'utilisateur qui a lancé le processus (walter.bates). De même, la tâche Deal with unsatisfied customer sera disponible pour tous alors qu'elle devrait être disponible uniquement pour le responsable de l'utilisateur qui a exécuté la tâche Review and answer claim. Pour répondre à ce problème, nous configurerons des filtres pour les acteurs :
-
Sélectionnez la Customer lane
-
Allez dans Général > Acteurs
-
Cliquez sur le bouton Définir... à côté de Filtre de l'acteur
-
Dans la liste, sélectionnez Initiateur
-
Cliquez sur le bouton Suivant
-
Définissez le nom : User who submit the claim
-
Cliquez sur le bouton Terminer
-
Sélectionnez la lane Manager lane
-
Suivez les mêmes étapes, mais sélectionnez le filtre acteur Le manager de l'utilisateur
-
Définissez le nom : Manager of the user who provided answer
-
Cliquez sur le bouton Suivant
-
Cliquez l'icône du crayon
-
Sélectionnez Script et collez le script Groovy suivant (il recherchera l'identifiant de l'utilisateur qui a exécuté la tâche Review and answer claim) :
import org.bonitasoft.engine.bpm.flownode.ArchivedHumanTaskInstance import org.bonitasoft.engine.bpm.flownode.ArchivedHumanTaskInstanceSearchDescriptor import org.bonitasoft.engine.search.SearchOptionsBuilder import org.bonitasoft.engine.search.SearchResult def taskName = 'Review and answer claim' final SearchOptionsBuilder searchOptionsBuilder = new SearchOptionsBuilder(0, 1) .filter(ArchivedHumanTaskInstanceSearchDescriptor.PARENT_PROCESS_INSTANCE_ID, processInstanceId) .filter(ArchivedHumanTaskInstanceSearchDescriptor.NAME, taskName).filter(ArchivedHumanTaskInstanceSearchDescriptor.TERMINAL, true) SearchResult<ArchivedHumanTaskInstance> searchResult = apiAccessor.processAPI.searchArchivedHumanTasks(searchOptionsBuilder.done()) final List<ArchivedHumanTaskInstance> tasks = searchResult.result tasks.first().executedBy
-
Cliquez sur OK
-
Cliquez sur Terminer
Si vous exécutez à nouveau le processus, seul walter.bates doit avoir accès à Read the answer and rate it et seul michael.morrison doit avoir accès à Deal with unsatisfied customer (car il est le responsable des deux utilisateurs qui peuvent exécuter la tâche Review and answer claim).
Nous avons maintenant un processus entièrement personnalisé qui traite les données et attribue les tâches aux utilisateurs appropriés. L'étape suivante consistera à permettre à ce processus d'interagir avec le monde extérieur.