jeudi 14 mai 2009

Comment modéliser un processus métier avec JBPM : exemple “gestion des entretiens”

La notion de Graph Oriented Programming (GOP), offre l’avantage de structurer l’application autour d’un graphe présentant une modélisation du processus à automatiser. Le graphe est déclaré & séparé du code source (java dans ce qui suit, mais C# lorsqu'on exploite WF de .Net)

je présente dans ce qui suit, un exemple simple de mise en ouvre d’un processus métier avec JBPM.

Rappelons que GOP définit une notion de GVM (Graph Virtual Machine), en suivant les étapes simple :

a) définit le graphe

b) définit the modèle d’exécution du graph

c) ajoute le support aux états d’attente

Le graphe est déclaré & séparé du code java:

Présentation du processus « gestion des entretiens »

Ce processus permet de sélectionner des candidats qui ont déjà déposé leurs CVs (le dépôt des CV est hors du processus). Les candidats sont contactés pour fixer un RDV (fixer une date, un lieu et un évaluateur) pour les entretiens d’embauche.

Une fois l’entretien passé (cette étape est aussi hors de notre processus), l’évaluation du candidat est notée. Le Responsable (Directeur) décide de la suite à donner : un ou plusieurs autres entretiens ou le rejet de la candidature. En regroupant les différentes évaluations attribuées à un candidat dans les différents entretiens, le Responsable valide ou rejette le recrutement du candidat.

Analyse fonctionnelle du processus

Le diagramme suivant résume les différentes étapes du processus « gestion des entretiens » :

clip_image002

Les différentes tâches du processus sont :

Etape

Description

Sélection des candidats

Sélectionner les candidats qui vont passer leurs entretiens d’embauche (saisir leurs noms, prénoms, adresses et téléphones…)

Contacter les candidats

Fixer la date et le lieu de l’entretien.

Inscrire les entretiens

Préciser le type de l’entretien, sa durée son thème ainsi que l’examinateur qui va l’effectuer.

Evaluation de l’entretien

Une fois l’entretien effectué, l’évaluateur affecte une note au candidat et optionnellement des commentaires.

Passage d’autres entretiens

Le directeur doit décider si le candidat doit passer d’autres entretiens. Dans le cas contraire, on doit passer à l’étape de validation.

Validation de l’entretien

Dans cette dernière étape, le directeur doit valider ou rejeter le recrutement du candidat.

Développement du processus « gestion des entretiens »

Dans cette partie nous allons lancer un projet nommé "Gestion Entretiens" dans l’environnement éclipse : le plugin Eclipse de JBPM.

Il s’agit d’un outil open source offert par Jboss : http://www.jboss.com/products/jbpm/

Il suffit de l’installer et de lancer Eclipse :

Pour cela, on suit les étapes suivantes :

· File – New project – Process Project – Nom: "Gestion Entretiens ".

· Dans le Package: click droit sur "src/main/jpdl" – New – Other – Process Definition – Nom: "Gestion des entretiens".

Rajout des rôles avec le concept de swimlane

Cette étape consiste à définir les différents groupes (rôles ou acteurs au sens UML) qui vont participer dans les différentes étapes du processus.

Il s’agit d’un concept présent aussi en BPMN et d’autres méthodes de notation de processus : la notion de couloir pour organiser les activités selon différents responsabilités fonctionnelles ou d'organisation

BPMN possède deux objets de regroupement (espace couvert (Pool), couloir (Lane)), pour représenter une organisation, une direction, un service, une personne ou autre réalisateur de l’activité et utilisé pour représenter un regroupement d’activités sous la responsabilité du participant

Les swimlanes utilisées dans notre processus sont :

- Directeur, group(Directeur)

- Evaluateur, group(Evaluateur)

- Assistante, group(Assistante)

- Candidat, group(Candidat)

Pour créer un swimlane, on procède comme suit :

· Dans l’onglet Swimlanes de l’Edit area – Sélectionner « Add » – Saisir le nom du swimlane – Choisir « Expression » – Saisir « group (Nom du swimlane) ».

clip_image004

Rajout des nœuds et des transitions

On trouve les différents éléments du langage jPDL qui vont constituer le diagramme du processus :

clip_image006

Construction du diagramme de l’application

On commence notre diagramme par un « Start node » qui désigne le début du processus. Sélectionner « Start node » puis le placer au milieu l’espace à gauche de la fenêtre ci-dessus. Double-cliquez sur le nouveau nœud. Une fenêtre contenant les propriétés du nœud va s’ouvrir. Choisir le nom « Sélection du candidat ».

clip_image008

Maintenant, on doit associer une tâche pour ce nouveau nœud. Pour cela, dans le menu Outline, cliquez-droit sur « Selection du candidat » – Add Task – cliquez-double – Choisir le nom « Selection du candidat ».

clip_image010

Rajout propriétés : variables

Dans la même fenêtre ci-dessus, dans l’onglet « Controller » – Cliquez Add – puis rajouter les variables du processus et définir leurs propriétés (read, write, required).

clip_image012

Toujours dans la même fenêtre des propriétés de la tâche « Selection du candidat », dans l’onglet « Assignement », choisir comme type d’assignement « Swimlane », et comme swimlane le groupe « Directeur ».

clip_image014

Ainsi on a mis en place notre première tâche qui consiste à sélectionner les candidats qui vont passer l’entretien.

On passe maintenant à la deuxième tâche qui va nous informer si notre candidat est déjà contacté ou non.

Sélectionner « Task node », le placer dans l’espace utilisé pour le diagramme au dessous du nœud « Sélection du candidat ». Cliquez-double sur ce nouveau « Task node » et choisir le nom « Candidat contacte ? ».

clip_image016

Ensuite, on doit attribuer comme d’habitude tâche à ce nœud appelée « Candidat contacte ? » :

clip_image018

Puis, on choisit comme assignement le groupe « Assistante »:

clip_image020

Afin de relier les deux nœuds, on doit cliquer le bouton « Transition », ensuite cliquez sur le premier nœud « Sélection du candidat » et sur le deuxième nœud « Candidat contacte ? ». On obtient le diagramme suivant :

clip_image022

On procède de la même façon pour créer les autres nœuds du diagramme du processus.

Nom du noeud

Type du noeud

Nom de la tâche

Swimlane

Variables du processus

Contacter candidat

Task node

Contacter candidat

Assistante

· Date – R/W – Date entretien

· Lieu – R/W – Lieu entretien

Inscrire entretien

Task node

Inscrire entretien

Assistante

· numEntr – R/W - Code entretien

· ExamEntr – R/W - Examinateur entrtien

· durEntr – R/W - Duree entretien

· sujEntr – R/W - Theme entretien

Evaluer entretien

Task node

Evaluer entretien

Evaluateur

· numEntre – R/W - Numero entretien

· noteEntr – R/W – Notes

· comEntr – R/W - Commentaires

Passage dautres entretiens ?

Task node

Passage d'autres entretiens ?

Directeur


Validation

Task node

Validation

Directeur

· ValidEntr – R/W - Entretien valide ?

On obtient le diagramme de processus suivant :

clip_image023

Le reste du travail est d’installer ce diagramme dans l’application,

Mais ceci est une autre histoire …


autres sujets :

1. Un peu de monitoring Métier (BAM) avec JBPM et SeeWhy (event-driven business intelligence )

2. Comment modéliser un processus métier avec JBPM : exemple “gestion des entretiens”

3. Quelle est la différence entre JBPM et Intalio ?

4. Graph Oriented Programming (GOP) avec JBPM

5. La version 4 de JBPM prend le virage de BPMN

6. BPM & Moteur de workflow : l’offre open source

5 commentaires :

Anonyme a dit…

ce que je cherche c'est lautre histoire d'instaler le diagrame dnas l'application

Anonyme a dit…

Exactement ça !!! Je cherche le matching entre ce diagramme et mes classes Java. Pouvez-vous Si Khaled nous aider ? Merci d'avance.

Anonyme a dit…

meme question aussi :(

Anonyme a dit…

moi aussi je suis à la rechreche d'un tutoriel qui permet de faire cette liaison

Anonyme a dit…

Salut M. Khaled BEN DRISS.
j'ai l'impression que vous ne répondez pas aux commentaires postés sur vos articles.
nous sommes tous dans le besoin de la suite de votre mot de conclusion et je cite "Mais ceci est une autre histoire …". alors comment faire pour avoir la réponse?

Enregistrer un commentaire

Architecte SOA & Professionnel Open Source Headline Animator

 
Khaled BEN DRISS
Cloud Computing, SOA et Web 2.0 : Des sujets techniques sur SOA et l'Open Source : de Java & .Net, PHP5, Symfony, à SaaS / PaaS en passant par Azure, google appengine, le BPM, la Modélisation et d'autres sujets du coté du serveur et cloud computing.