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 (partie 1/2)

Note : 3 votes pour une moyenne de 4,33.
par , 06/12/2015 à 17h34 (5427 Affichages)
1) Présentation et fonctionnalités de jBPM

Les nouveaux développements d'applications proposent que la conception puisse se faire par les utilisateurs finaux et des développeurs qui ne seraient pas des gourous des dernières tendances technologiques.

Ce tutoriel a pour but de montrer un cas concret simple d'un processus métier exécutable au sens de la norme BPMN2 ( http://www.omg.org/spec/BPMN/2.0/ ).

Pour bien comprendre les différents concepts comme l'exécution des "Human Task", j'utiliserais la suite open source jBPM ( http://www.jbpm.org/ ).

Au cours de mes différentes missions en conseil en urbanisation, j'ai eu l'occasion de mettre en oeuvre le moteur de règles métiers open source Drools ( http://www.drools.org/ ) permettant de concevoir, d'exécuter et de gérer de manière efficiente des règles métiers en dehors du code et des applications.

Cette brique éprouvée est devenue le standard des moteurs de règles open source.

Derrière cette suite logicielle se trouve jBoss (le serveur d'application JEE le plus utilisé en production) et Red Hat, l'éditeur de la distribution Linux la plus répandue en entreprise, à qui appartient jBoss.

Drools et jBPM appartiennent donc à la famille JBoss/Red Hat, mais jBPM fait il aussi que son frère Drools ?

Red Hat commercialise les 2 offres sous les appellations : Red Hat® JBoss® BRMS (Business Rules Management System) ( https://www.redhat.com/fr/technologi...business-rules ) et Red Hat® JBoss® BPM Suite ( http://www.redhat.com/en/technologie...middleware/bpm )

Pour Red Hat la société commerciale, il est clair que Drools et jBPM servent de laboratoire d'expérimentation. Les solutions opensource n'étant bien évidemment pas garanties contre le bogues, Red Hat s'engage par contre dans les solutions payantes a corrigé tous les défauts et à apporter son aide et son expertise aux futurs clients.

Si le moteur Drools est fiable, robuste et n'a plus de preuve à faire, qu'en est-il de jBPM ?

L'histoire de jBPM est un peu mouvementée.

La première version qui a fait connaître jBPM est la version 3, à l'époque, la norme BPMN était en cours de finalisation. JBPM avait donc réussi avec ses formats propriétaires JPDL et GPD à s'imposer comme standard des moteurs de processus exécutables et cette version est d'ailleurs encore utilisée en production aujourd'hui dans quelques grandes entreprises.

La version 4 est un fiasco ! A telle point qu'elle est restée inachevé. Les créateurs originaux sont partis en cours de réalisation, pour lancer une nouvelle solution (open source), Activiti ( http://activiti.org/ ).

Pour relancer la machine, on envoit les experts de l'équipe Drools à la rescousse. La version 5 reprend tout de A à Z avec l'objectif de supporter la nouvelle norme BPMN 2 exécutable et son XML associé..

JBoss tente de se différencier en promouvant l’intérêt de l’intégration de sa solution avec son moteur de règles (Drools), arguant qu’une solution BPM sans cette fonctionnalité n’est pas concevable.

Si jBPM est remis sur les rails, il lui reste beaucoup de chemin à parcourir car pendant ce temps les solutions open source concurrente ont beaucoup progressées. Si le moteur fonctionne, ce n'est pas le cas des outils pour Eclipse et encore moins pour ceux dédiés aux concepteurs de processus métiers. Dans la documentation, il est fait mention que pour le BAM (Business Activity Monitoring), les développeurs ont toutes les briques pour développés eux-mêmes leurs dashboard. L'exemple fourni est une caricature de ce qu'on exige d'une vraie solution de BAM.

Avec la nouvelle version 6, la norme BPMN 2 pour les processus exécutable est maintenant bien supportée.

La stratégie de Red Hat est de concurrencer les solutions commerciales et de pénétrer le marché des grandes organisations.

Dans cette optique Redhat rachete la société Polymita spécialisée dans les moteurs de BPM et dans le BAM.

Le référentiel Apache Jackrabbit a été changé et s’appuie maintenant sur le standard GIT.

Tous les outils web (Guvnor pour l'administration, cliente, ...) ont été intégrés dans un seul outil : KIE Workbench basé sur UberFire un autre open source de Red Hat, surcouche de GWT, permettant de faire du client riche web. KIE Workbench devient la plateforme web commune à Drools et jBPM.

Pour Eclipse, jBPM 6 intègre le nouveau plugin de modélisation BPMN2 ( https://www.eclipse.org/bpmn2-modeler/ ) qui fait partie de Eclipse Modeling Project.

Les fonctionnalités suivantes sont aussi supportées :
  • Clustering et haute disponibilité
  • Nouveau BAM entièrement revu à partir de la solution Polymita rachetée par Red Hat
  • Utilisation du framework UberFire permettant de développer rapidement des écrans de reporting


Les enjeux à moyen terme sont colossaux, Red Hat nous promet de développer :
  • des outils de simulation
  • le support du cloud
  • des connecteurs BPM
  • le support de la totalité de la norme BPMN2
  • des outil web de modélisation des données
  • des générateur de formulaires
  • le « No code tooling », la possibilité aux experts métiers de créer, déployer, exécuter et surveiller leurs processus sans avoir à écrire du code.
  • les "processus dynamique", c'est à dire la possibilité de changer dynamiquement une instance de processus en cours d’exécution comme ajouter une tâche à la volée.
  • les support des applications mobiles
  • les outil de migration d’un processus en cours d’exécution vers un nouveau, incluant un outil graphique gérant les différences
  • l'analyse de processus pour détecter les problèmes et les optimiser
  • le "Goal driven BPM" qui a pour ambition, au lieu de modéliser les processus comme une séquence d’étapes, de se focaliser plus sur les buts et les pré-conditions qui serviront à générer le processus résultant peut être à partir des concepts métiers et de la modélisation orientée but (GORE Goal Oriented Requirements Engineering).


En tous les cas la complète intégration du moteur de règles Drools et du moteur de processus exécutable jBPM est un net avantage

2) Etude de cas avec "human task"

Les nouvelles tendances d'ingénierie logicielle proposent d'impliquer de plus en plus les acteurs fonctionnels dans la conception des applicatifs.

La norme BPMN 2 (Business Process Modeling Notation) a été spécialement conçue pour la MOA afin qu'elle puisse participer à la modélisation de ses processus métier.

Le BPM (Business Process Management) a pour but d'automatiser l'exécution de ces processus.

La dernière version de jBPM ( http://www.jbpm.org/ ), la version community (open source) de la suite Red Hat JBoss BPM, propose les outils de modélisation BPMN, le moteur d'exécution, des modules de reporting (BAM Business Activity Monitoring), d'administration pour le cycle de vie des processus, de générateurs de formulaires, fonctions de validation et simulation, des plugins Eclipse pour les développeurs, et enfin directement intégré dans le package, Drools le standard des moteurs de règles.

Ce tutoriel s'adresse aux débutants en BPM et a pour but de :
  • montrer un cas concret complet d'un processus métier exécutable au sens de la norme BPMN2 ( http://www.omg.org/spec/BPMN/2.0/ ).
  • expliquer le fonctionnement des tâches humaines dans un processus automatisé
  • décrire les étapes pour installer la version open source (community) jBPM
  • créer une unité organisationnelle, un repository et un projet dans l'IDE web KIE Workbench,
  • réaliser un processus exécutable avec l'outil de modélisation web BPMN 2
  • déployer et exécuter le processus
  • montrer les interactions avec les différents acteurs métiers impliqués dans le processus avec la récupération de leurs tâches dans leur corbeille


Aussi tout ce qui concerne le langage BPMN 2, l’architecture jBPM, la conception détaillée des formulaires, le modèle de données, le BAM, le cycle de vie des processus et des tâches, la persistance des processus, la sécurité, la validation, la simulation, l’optimisation, les performances des processus et l'intégration avec Drools feront l’objet d’autres tutoriels plus spécialisés.

Description du processus métier :

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

Le processus est déclenché par le service des ressources humaines dans le but de suivre et de réaliser un compte rendu des différents entretiens d'un candidat à un poste.

Un membre de la RH démarre le processus. Un écran lui demande de saisir le nom du candidat, le poste et des questions pour un test de compétences (ici réduit à 1 question).

Le jour du passage du test, le candidat se connecte avec un nom et un mot de passe fourni par la RH. Il répond aux questions du test et se déconnecte.

La RH, se connecte à l’IDE KIE, récupère et exécute la tâche qui se trouve dans sa corbeille, visualise les réponses aux tests, fait passer l'entretien au candidat, puis termine la tâche en mettant son appréciation.

Le chef de projet (CP) procède exactement de la même manière pour saisir son appréciation.

Les 2 tâches peuvent être réalisées dans n'importe quel ordre et sont indépendantes.

Une fois les 2 tâches concernant les appréciations RH et CP entièrement réalisées, un membre de la Direction Générale (DG) pourra se connecter à KIE, récupérer et exécuter la tâche qui se trouve dans sa corbeille et qui consiste àvisualiser les appréciation de la RH et CP et à saisir sa décision finale.

Ce processus métier, volontairement simpliste coté BPMN, permet de montrer la prise en compte de tâches humaines dans un processus exécutable.

3) L'installation

Mais assez parlé et passons aux choses sérieuses. Comme à l'habitude dans mes tutoriaux, je vais partir de 0.

jBPM étant conçu en Java, il vous faut l'installer (si ce n'est pas déjà fait). La dernière version Java 8 fait parfaitement l'affaire :

http://www.oracle.com/technetwork/ja...s-2133151.html

Pensez bien à configurer les variables d'environnement JAVA_HOME avec le répertoire d'installation du jdk et la variable PATH avec le répertoire bin.

J'aurais aimé télécharger et cliquer sur un exécutable, qui masque toute la cuisine interne et arriver directement sur l'IDE.

Mais jBPM a choisi de fournir un script Ant, permettant, il est vrai, aux architectes et aux développeurs d'avoir un script prêt à l'emploi qui pourra avantageusement servir à l'exploitation et être personnalisée à loisir en fonction par exemple du SGBD utilisé.

L'installation complète propose un script Ant pour démarrer, arrêter, nettoyer les différents composants de la suite jBPM.

Téléchargez Ant

http://ant.apache.org/bindownload.cgi

Dézippez et configurez la variable d'environnement ANT_HOME avec le répertoire d'installation.

Téléchargez jBPM :

http://sourceforge.net/projects/jbpm...m-6.3.0.Final/

Cliquez: Download jbpm-6.3.0.Final-installer-full.zip (390.2 MB)

Dézippez pour obtenir le répertoire jbpm-installer.

Avant de commencer à exécuter l'intégration des briques, je vous conseille d'ajouter tout de suite les users et les rôles nécessaires au bon déroulement de notre processus.

Sinon, après l'installation, vous seriez obligé de faire « ant clean.demo », modifiez les fichiers et à nouveau ant install.demo et vous perdriez votre repository avec vos processus.

Ajoutez les noms des utilisateurs et leur mot de passe dans le fichier users.properties du répertoire auth de jbpm-installer :

rhona=rhona
sylvie=sylvie
thierry=thierry
helena=helena
jacques=jacques

et leurs rôles (groupes) dans le fichier roles.properties :

rhona=admin,analyst,IT
sylvie=analyst,HR,RH
thierry=analyst,PM,CP
helena=analyst,DG,RH
jacques=analyst,DG

Les nouveaux utilisateurs et leurs rôles seront directement intégrés dans le serveur d'application JBoss Wildfly.

L'installation se lance en ligne de commande dans le répertoire jbpm-installer :

ant install.demo

Nom : tutoriel-jbpm-jboss-red-hat-bpmn-installation-02.png
Affichages : 2575
Taille : 121,9 Ko

Le script télécharge les briques nécessaires comme le serveur d'application JBoss Wildfly, la base H2, le driver adéquat, Hibernate, Eclipse Luna et les plugins jbpm, etc, etc, ...

Le nouvel IDE, KIE Workbench (jbpm-console.war) est installé en vue d'être déployé quand on démarrera le serveur, les plugins sont installés dans Eclipse.

Le reporting est une application web (dashboard-builder.war) à part qu'il faut installer :

ant install.dashboard.into.jboss

Le répertoire auth avec les 2 fichiers "users.properties" et "roles.properties" servent à définir les users et roles pour l'application jbpm-console.war qui est déployée dans le serveur d'application jee JBoss Wildfly.

Une fois cette application démarrée, en vous connectant, vous pourrez modéliser des processus en BPMN 2 et les exécuter. Ces processus avec leurs variables ainsi que les formulaires attachés aux tâches humaines et bien d'autres choses font parti d'un repository Git.

( voir http://www.urbanisation-si.com/tutor...les-partie-510 ).

Ce repository Git est constitué des 4 répertoires dans jbpm-installer : .index ; .niogit ; .security ; repositories

Donc si vous avez des unités organisationnelles, des repositories et des projets avec des modèles BPMN 2, etc, à sauvegarder, il suffit de copier ces répertoires sur une unité de sauvegarde.

Pour sauvegarder la configuration de wildfly et les users/rôles, il faut aussi sauvegarder les répertoires auth et conf.

Si vous avez Eclipse fourni avec jBPM, il faut sauvegarder le workspace associé.

Vous pourrez alors faire "ant clean.demo" qui va tout supprimer pour pouvoir refaire une nouvelle installation.

Recopier les répertoires auth et conf dans jbpm-installer puis "ant install.demo" qui configurera le serveur avec les bons users/rôles.

Recopier ensuite les 4 répertoires dans jbpm-installer : .index ; .niogit ; .security ; repositories puis "ant start.demo.noeclipse".

Vous retrouverez alors vos users/rôles et vos modèles BPMN, formulaires, projets, ...

(Remarque sous Windows 10 vous ne pouvez pas renommer des fichiers avec des nouveaux noms commençant par un point. Vous êtes obligé de le faire en mode commande avec "ren", par exemple : ren _tutojbpm.index .index).

Vous pourriez aussi sauvegarder le répertoire db (base h2 par défaut) si vous vouliez conserver les états et l'historique de vos processus ce qui serait vitale en environnement de production.

4) Démarrer l'ensemble des composants

Mettons en ordre de marche l'ensemble :

ant start.demo
ou
ant start.demo.noeclipse
pour ne pas démarrer Eclipse

Nom : tutoriel-jbpm-jboss-red-hat-bpmn-installation-03.png
Affichages : 2560
Taille : 41,2 Ko

Cette tâche ant démarre :
  • le SGBD H2
  • le serveur wildfly
  • KIE Workbench (IDE) et le dashboard (BAM)
  • Eclipse



A noter qu'il existe toute une flopée de tâches Ant pour démarrer uniquement tel ou tel composant non obligatoire comme Eclipse par exemple.

A ce stade vous devriez avoir Eclipse Luna d'ouvert.

La partie réservée aux développeurs comme les APIs jBPM permettant les tests unitaires, le débogage, l'audit et la simulation de processus sera abordée dans un tutoriel ultérieur.

Eclipse peut être refermé sans impact.

5) Connexion à l'IDE KIE Workbench et création des unités organisationnelles

Le KIE Worbench se lance à partir d'un navigateur :

http://localhost:8080/jbpm-console/kie-wb.html

Nom : tutoriel-jbpm-jboss-red-hat-bpmn-kie-workbench-connexion-04.png
Affichages : 2570
Taille : 88,4 Ko

Si par le plus grand des hasards, l'application ne se chargeait pas, vérifier dans le répertoire

jbpm-installer/wildfly-8.1.0.Final/standalone/deployments

de ne pas avoir le fichier jbpm-console.war.undeployed

Si c'est le cas, supprimer le (ATTENTION pas le fichier jbpm-console.war mais l'autre avec l'extension .undeployed).

En le supprimant vous devriez voir apparaître un nouveau fichier avec l'extension isdepoying puis au bout de quelques instants qui se transforme en .deployed !

On va créer d'abord créer une nouvelle unité organisationnelle qui peut par exemple correspondre à une zone métier ou une zone ressouce pour un grand compte (domaine banque, domaine assurance, RH, DSI, ...).

Dans l'exemple nous créerons l'organisation "com.urbanisation-si".

Une unité organisationnelle peut avoir plusieurs repository de stockage des ses processus, règles et objets métiers. Nous créerons ici pour les besoins du tutoriel le repository "blogrepo".

Et enfin, un repository peut contenir plusieurs projet pouvant correspondre à une application. Nous créerons le projet "tutojbpm".

Nom : tutoriel-jbpm-jboss-red-hat-bpmn-kie-workbench-unit-repository-project-05.png
Affichages : 2591
Taille : 111,5 Ko

Dans l'écran du KIE Workbench, connectez vous en administrateur avec admin et le mot de passe admin.

Vous pouvez franciser l'application en cliquant sur la roue dentée en haut à droite et prendre French.

Pour ce tutoriel nous resterons dans la langue de William Shakespeare et en mode Basic.

Créer une nouvelle unité organisationnelle :
Menu : Authoring - Administration - Organizational Units - Manage Organizational Units - Add - Saisir le nom "com.urbanisation-si"

Créer un nouveau repository :
Menu : Repositories - New Repository - Saisir "blogrepo" - sélectionner l'unité "com.urbanisation-si" et cliquez sur Managed Repository pour avoir la gestion des versions.

Créer un nouveau projet :
Menu : Authoring - Project Authoring - New Item - Project - Saisir "tutojbpm"

Rhona Maxwel
www.urbanisation-si.com

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

Commentaires