IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

Machine Learning

Tutoriel jBPM : exemple complet de processus exécutable suite (partie 2/2)

Noter ce billet
par , 06/12/2015 à 18h11 (2158 Affichages)
6) Conception du processus en BPMN 2

Après cet intermède administratif mais ô combien nécessaire, passons à la conception du processus qui va être réalisé par un expert métier dûment formé à BPMN 2 et à l'outil KIE Workbench (pour simplifier nous resterons connecter avec admin).

Pour modéliser le processus en BPMN :
•Menu : Authoring - Project Authoring - Explore - Assurez-vous d'avoir bien sélectionné l'unité com.urbanisation-si, le repository blogrepo et le projet tutojbpm - New Item - Business Process - Saisir le nom du processus "recrutement" - laissez le nom du package proposé : com.urbanisation_si.tutojbpm

Nom : tutoriel-jbpm-jboss-red-hat-bpmn-kie-workbench-home_06.png
Affichages : 1078
Taille : 139,7 Ko

A priori jBPM va utiliser ce nom à la compilation, c'est pour cette raison que le - de urbanisation-si se transforme en _ (un nom Java ne peut pas contenir le caractère - qui est réservé).

Cliquez sur les doubles chevrons de gauche (<<) pour afficher la bibliothèque BPMN 2 et sur les doubles chevrons de droite (>>) pour afficher les propriétés d'un élément sélectionné.

Tout est contextuel, le modeleur BPMN 2 web inclus tout ce qui se fait de mieux en terme de client web riche.

En sélectionnant un élément dans la zone de travail, des symboles apparaissent tout autour vous permettant très rapidement de développer votre processus sans avoir à retourner dans la toolbox ou dans la zone de propriété.

Nom : tutoriel-jbpm-jboss-red-hat-bpmn-description-recrutement-08.png
Affichages : 1539
Taille : 44,4 Ko

  • Sélectionnez dans "Evènements de commencement", l'évènement de début simple (rond vide), faites un "drag and drop" dans la zone de travail.
  • Cliquez dessus, des icônes apparaissent tout autour du symbole.
  • Cliquez sur le rectangle, une nouvelle tâche avec un « séquence flow » est automatiquement créé. Sélectionnez la tâche, cliquez sur le symbole de gateway exclusive XOR (X), la gateway est créée avec le « séquence flow »,
  • Sélectionnez la gateway, cliquez sur le rectangle, puis une 2ème fois pour avoir 2 tâches en parallèles à partir de gateway.
  • Sélectionnez la 1ère tâche, cliquez sur le symbole de gateway,
  • Sélectionnez la 2ème tâche, cliquez sur le symbole de flèche « séquence flow » et amener la souris sur la 2ème gateway.
  • Sélectionnez la 2ème gateway, cliquez sur le rectangle,
  • Sélectionnez la dernière tâche et cliquez sur le symbole du rond entouré (évènement de fin).
  • Sauvegardez régulièrement en cliquant sur le bouton en haut à droite.
  • Sélectionnez à tour de rôle chaque tâche, cliquez sur le symbole de clé et sélectionnez « Tâche Utilisateur ».
  • Double cliquez sur chacune d’entre elle, une zone de saisie apparaît pour nommer vos tâches.
  • Sélectionnez à tour de rôle chaque gateway, cliquez sur le symbole de la clé et sélectionnez «Parallel »
  • Il reste pour chaque tâche à configurer la partie "subject" c'est à dire le libellé qui apparaîtra sur les formulaires
  • Configuez le mapping des données en entrées et en sorties. Pour chacune des tâches, cliquez sur "Tâches à compléter" et suivez les écrans suivants.


Pour créer les variables processus, cliquez en dehors d'un artefact BPMN 2 c'est à dire dans l'espace de travail.
Voir ci-dessous l'ensemble des variables pour la totalité des tâches :

Nom : tutoriel-jbpm-toutes-les-variables.png
Affichages : 1114
Taille : 1,59 Mo

Les variables locales à la tâche "Test de compétence"

Remarque : cette tâche est réservée à l'utilisateur dont le user de connexion est renseignée dans la variable de processus "candidat" initialisée au démarrage du processus par "admin".

Pour que cette tâche se retrouve dans la corbeille correspondant à la variable "candidat", il faut mettre dans la propriété "Acteur" la chaîne : #{candidat}

Ce mapping signifie qu'en entrée, les valeurs des variables de processus (globales) "poste" et "testCompetence" sont recopiées dans les variables locales de la tâche portant le même nom (on aurait pu donner des noms différents car les zones de mémoires correspondantes sont bien différentes).

De même en sortie, la valeur de la variable locale testCompetence" est recopiée dans la variable globale du même nom.

Les variables locales à la tâche "Entretien Ressources Humaines"

Remarque : cette tâche est réservée au groupe "RH".

Pour que cette tâche se retrouve dans la corbeille du groupe "RH", il faut mettre dans la propriété "Acteur" la valeur RH

Ce mapping signifie qu'en entrée, les valeurs des variables de processus (globlaes) "poste", "testCompetence" et "candidat" sont recopiées dans les variables locales de la tâche portant le même nom (on aurait pu donner des noms différents car les zones de mémoires correspondantes sont bien différentes).

De même en sortie, la valeur de la variable locale "recommandationRH" est recopiée dans la variable globale du même nom.

Les variables locales à la tâche "Entretien Chef de Projet"

Remarque : cette tâche est réservée au groupe "CP".

Pour que cette tâche se retrouve dans la corbeille du groupe "CP", il faut mettre dans la propriété "Acteur" la valeur CP

Ce mapping signifie qu'en entrée, les valeurs des variables de processus (globlaes) "poste", "testCompetence", "recommandationCP" et "candidat" sont recopiées dans les variables locales de la tâche portant le même nom (on aurait pu donner des noms différents car les zones de mémoires correspondantes sont bien différentes).

De même en sortie, la valeur de la variable locale "recommandationCP" est recopiée dans la variable globale du même nom.

Les variables locales à la tâche "Décision Directeur de Projet"

Remarque : cette tâche est réservée au groupe "DG".

Pour que cette tâche se retrouve dans la corbeille du groupe "DG", il faut mettre dans la propriété "Acteur" la valeur DG

Ce mapping signifie qu'en entrée, les valeurs des variables de processus (globlaes) "candidat", "poste", "testCompetence", "recommandationRH" et "recommandationCP" sont recopiées dans les variables locales de la tâche portant le même nom (on aurait pu donner des noms différents car les zones de mémoires correspondantes sont bien différentes).

De même en sortie, la valeur de la variable locale "decisionFinale" est recopiée dans la variable globale du même nom.

Quand le flow d’exécution arrivera sur une tâche, le moteur la placera dans la corbeille de l'utilisateur ou du groupe correspondant au user de connexion à l'application en fonction de la valeur de la propriété "Acteur" de la tâche.

A la connexion, l'utilisateur pourra alors consulter la liste des tâches en attente qui lui sont réservées.

Il pourra sélectionner une tâche.

Si un formulaire a été associé à la tâche, il s'affichera avec le bouton "Réclamer" (Claim).

Les champs de formulaires afficheront les valeurs des variables locales associées en entrée et initialisés en fonction du mapping avec les variables globales (processus).

Si l'utilisateur clique sur ce bouton, il pourra saisir dans les champs de sortie associés aux variables locales dont les valeurs seront recopiés ensuite dans les variables globales de processus en fonction du mapping.

Une fois le formulaire rempli, l'utilisateur clique le bouton "Terminer" (Complete), ce qui a pour effet de faire avancer à la ou les tâche(s) suivante(s) dans le processus.

7) Vérifiez la conformité à la norme BPMN 2


A ce stade, vous pouvez activer la validation (ruban des icônes au dessus du diagramme BPMN 2, choisissez "Début de validation") qui va vérifier la conformité de votre processus avec la norme des processus exécutables BPMN 2 (exemple : un processus exécutable doit avoir un nœud de fin, si vous supprimez celui de votre processus, la validation va vous avertir qu’il en faut un).

8) Génération de formulaires et mapping des variables

L'objectif de cet article est de voir comment on génère automatiquement des formulaires et comment on mappe les champs avec les variables locales aux tâches.

Voyons tout d’abord les variables globales d’un processus.

Au démarrage de l’instance du processus, ces variables seront créées et éventuellement initialisées.

Pour définir les propriétés du processus, cliquez quelque part dans la zone de travail. La zone de gauche affiche alors les propriétés du processus.

Cliquez sur "Définitions de variables" puis saisir les variables du processus qui seront utilisées en entrée ou en sortie des tâches.

Vérifiez et modifier les autres champs (id, nom, package, processus exécutable, ...) avec les valeurs de l'écran ci-dessus.

La transmission en entrée et en sortie des valeurs des différents champs de formulaires se fait par recopie des variables globales de processus dans des variables locales de chaque tâche, puis sur le formulaire on va mapper chaque champ en entrée ou en sortie avec ces variables locales.

Pour générer automatiquement tous les formulaires de toutes les tâches en plus du formulaire attaché au démarrage du processus, dans le bandeau en haut, sélectionner l’icône de génération de formulaires, dans le menu déroulant, sélectionnez « Générer tous les formulaires »

Dans le répertoire src, les formulaires apparaissent avec leur convention de nommage : <nom de la tâche>-takform.form

Pour notre tutoriel dont l’objectif est de voir les étapes de conception d’un processus métier simple, nous garderons en l’état le look des formulaires générés, sachant que l’on peut les personnaliser. De même l’aspect manipulation sera réduit à sa plus simple expression en manipulant en entrée/sortie les variables globales du processus.

Sélectionnez dans l’ordre les formulaires et modifiez-les en fonction des écrans ci-dessous.
  • Cliquez sur un champ pour qu'apparaisse autour des icônes contextuelles.
  • Cliquez sur le crayon pour éditer un champ.



Nom : tutoriel-jbpm-tous-les-formulaires.png
Affichages : 1143
Taille : 1,66 Mo

Le formulaire correspondant au processus se nomme tutojbpm.recrutement-taskform.form.
Il contient par défaut tous les champs correspondants aux variables de processus.
Ne laissez que les champs : "candidat, poste et testCompetence" et supprimez les autres.
Nous nous contenterons de spécifier les valeurs en entrée/sortie des variables locales liées aux zones de saisies.

Sélectionnez le champ candidat, cliquez sur le crayon pour avoir accès aux propriétés du champ, sélectionnez "Output binding expression", saisissez candidat et cliquez sur « Required ». La valeur saisie dans le champ candidat sera recopiée dans la variable globale de processus "candidat" et pourra être récupérée par les autres formulaires des autres tâches pour être affiché.

Répétez les mêmes étapes pour les champs "poste" et "testCompetence".

Répétez les étapes précédentes pour les autres formulaires.

Formulaire lié à la tâche "Test de competences" : testCompetences-taskform.form
poste :
Input binding expression : poste
*testCompetence :
Output binding expression : testCompetence (Required)

Formulaire lié à la tâche "Entretien Ressources Humaines" : entretienRH-takform.form
poste :
Input binding expression : poste
*recommandationRH :
Output binding expression : recommandationRH (Required)
testCompetence :
Input binding expression : testCompetence

Formulaire lié à la tâche "Entretien Chef de Projet" : entretienCP-takform.form
poste :
Input binding expression : poste
*recommandationCP :
Output binding expression : recommandationCP (Required)
testCompetence :
Input binding expression : testCompetence

Formulaire lié à la tâche "Décision Directeur de Projet" : decisionFinale-takform.form
candidat :
Input binding expression : candidat
*decisionFinale :
Output binding expression : decisionFinale (Required)
poste :
Input binding expression : poste
recommandationCP :
Input binding expression : recommandationCP
recommandationRH :
Input binding expression : recommandationRH
testCompetence :
Input binding expression : testCompetence

9) Construction et déploiement du processus de notre étude de cas

Une fois les formulaires personnalisés, on déploie le projet :
  • Cliquez sur le bouton Open Project Editor - Menu Build - Build & Deploy -
  • Cliquez sur le bouton undeploy correspondant au projet.


Vous devez avoir le message comme quoi c'est bien déployé.

10) Démarrage et test final de l'exécution complète de l'étude de cas

L'objectif de cet article est de voir le déroulement complet du processus avec le démarrage du processus avec son formulaire associé, puis la connexions des différents participants avec la récupération des tâches dans leur corbeille, la saisie du formulaire associé et la progression automatique du workflow.

En étant connecté avec le user « admin », démarrez une instance du processus :
  • Menu Process Management - Process Definitions - sélectionnez recrutement - cliquez sur start


Le formulaire de démarrage du processus s'affiche.

Pour simplifier, dans notre exemple, c'est admin qui spécifie que le candidat sera "rhona" pour le poste "urbaniste SI" et le test de compétence (ah si tous les tests d'embauche étaient comme celui-ci ...) "2 + 2 = ?" auquel devra répondre le candidat pour ensuite être évalué par "sylvie" des ressources humaines, "thierry" du groupe Chef de Projet et la décision finale sera prise par "jacques" du groupe Direction Générale au vu de 2 recommandation RH et CP.

Le formulaire lié au processus, remplissez les champs comme indiqué dans l'écran suivant et validez.

Dans le cas contraire vérifiez si par exemple le projet n'est pas déjà déployé : Menu Deploy- Process Deployments -

Etant donné que tout a été généré et validé par l’outil, il ne devrait pas y avoir d’erreur lors du déploiement.

Dans le prochain article nous verrons le déroulement complet du processus avec le démarrage du processus avec son formulaire associé, puis la connexions des différents participants avec la récupération des tâches dans leur corbeille, la saisie du formulaire associé et donc la progression du workflow.

Dans le menu Process Management - Process Instances - Onglet de droite « Instance Detail » montre la "human task" "Test de competence" active et dans l'état "Reserved" pour "rhona".

L'onglet "Process Variables" affiche les valeurs de toutes les variables de processus.

Le flow est passé à la 1ère tâche « Test de compétences ».
Déconnectez-vous et connectez-vous avec le user « rhona », supposons que ce soit une candidate au poste.
Allez dans le menu Tâches (Tasks), dans l'onglet Personnel (Personnal), cliquez sur la tâche en attente, le formulaire s'affiche à droite et est non saisissable.

Cliquez sur le bouton Demande (Start) pour pouvoir saisir dans les champs qui ne sont pas en read only. La tâche est dans l'état "réservée"

Une fois la saisie terminée, cliquez sur le bouton Terminé (Complete) pour terminer la tâche.

Recommencez les mêmes étapes avec « sylvie » du groupe RH, « thierry » du groupe CP, et « jacques » du groupe DG.

Voici les écrans de :
  • recrutement : lancement du processus
  • 1 Test de compétences : rhona la candidate qui postule au poste et qui répond au test de compétences
  • 2 Entretien Ressources Humaines : sylvie du groupe RH qui donne son évaluation
  • 3 Entretien Chef de Projet : thierry du groupe CP qui donne son évaluation
  • 4 Décision Directeur de Projet : jacques du groupe DG qui prend la décision finale d'accepter ou non le candidat.


Nom : tutoriel-jbpm-test-final.png
Affichages : 1135
Taille : 1,50 Mo

Une fois la dernière tâche terminée (la décision du DG est prise), le processus se termine.

Ce didacticiel complet a permis de voir :
  • l’installation jBPM,
  • une présentaton de l’IDE KIE Workbench,
  • la création d’un projet dans un repository dans une unité organisationnelle,
  • la conception d’un processus métier à la norme BPMN 2 avec l’outil web
  • la conception des formulaires associés aux tâches humaines
  • le déploiement du processus dans le moteur de jBPM
  • le démarrage et l’exécution d’une instance de processus
  • la récupération et l’accomplissement des tâches par les différents acteurs en fonction de leurs affectations.


Un bon nombre de thématiques n’ont pas été traitées comme
  • l’administration,
  • l’exploitation,
  • la persistance,
  • les transactions,
  • les performances,
  • le processus de mise en production,
  • le BAM (Business Activity Monitoring),
  • la simulation (BPMSim),
  • la gouvernance, l
  • e cycle de vie,
  • l’aspect méthodologique de conception des processus métier,
  • le lien avec l’urbanisme et la stratégie des SI ,
  • le retour sur investissement d'un outil de BPM,
  • les outils réservés aux développeurs,
  • l’intégration d’un moteur de règles métiers, j’en passe et des meilleurs, …


Mais il faut bien en garder un peu pour d’autres aventures « tutorielesques » qui verront le jour très prochainement.

Rhona Maxwel
www.urbanisation-si.com

Envoyer le billet « Tutoriel jBPM : exemple complet de processus exécutable suite (partie 2/2) » dans le blog Viadeo Envoyer le billet « Tutoriel jBPM : exemple complet de processus exécutable suite (partie 2/2) » dans le blog Twitter Envoyer le billet « Tutoriel jBPM : exemple complet de processus exécutable suite (partie 2/2) » dans le blog Google Envoyer le billet « Tutoriel jBPM : exemple complet de processus exécutable suite (partie 2/2) » dans le blog Facebook Envoyer le billet « Tutoriel jBPM : exemple complet de processus exécutable suite (partie 2/2) » dans le blog Digg Envoyer le billet « Tutoriel jBPM : exemple complet de processus exécutable suite (partie 2/2) » dans le blog Delicious Envoyer le billet « Tutoriel jBPM : exemple complet de processus exécutable suite (partie 2/2) » dans le blog MySpace Envoyer le billet « Tutoriel jBPM : exemple complet de processus exécutable suite (partie 2/2) » dans le blog Yahoo

Commentaires