Gérez vos processus métier avec JBoss jBPM

Les entreprises ont recherché avec diligence une approche structurée pour concevoir des actions / transactions commerciales et les exécuter de préférence à l'aide de processus automatisés. La gestion des processus métier (BPM) et la gestion des flux de travail offrent une solution à ce problème en utilisant des concepts tels que les actions, les tâches et les flux.

Cet article présente le BPM et aborde les techniques et les outils permettant d'autonomiser les systèmes d'entreprise avec le BPM et la gestion des flux de travail à l'aide de JBoss jBPM.

Le terme gestion des processus métier fait généralement référence à un ensemble d'activités que les entreprises peuvent employer pour automatiser et optimiser les processus métier d'une manière adaptable à des environnements en évolution dynamique. Ces activités recherchent généralement l'aide du génie logiciel et des outils; par conséquent, le terme BPM est souvent utilisé directement pour désigner les techniques et outils d'ingénierie.

Le BPM s'incarne dans trois pratiques distinctes:

  1. Conception de processus: la tâche de conception de processus existants et nouveaux
  2. Exécution de processus: exécution d'une séquence automatisée d'événements connexes impliquant des processus logiciels et / ou des activités humaines
  3. Surveillance des processus: respect et audit de l'état des processus individuels afin que les statistiques et les performances de ces processus puissent être enregistrées, rapportées et optimisées

Le BPM cherche à permettre aux ingénieurs logiciels de partager les mêmes concepts et cadres que les analystes commerciaux; Par conséquent, les éditeurs de logiciels ont tenté de créer des outils qui permettront aux entreprises de capturer, de concevoir et d'optimiser les processus commerciaux en utilisant des outils de modélisation graphique, des langages spécifiques au domaine et des applications propriétaires.

JBoss jBPM 3.0 offre la capacité de développer de nouveaux processus et flux de travail automatisés avec une orchestration standard de l'industrie à l'aide du Business Process Execution Language (BPEL), une API flexible et enfichable, un langage de définition de processus natif et un outil de modélisation graphique.

JBoss jBPM est un framework open source (licence LGPL) d'API Java, d'outils et d'un langage de définition pouvant fonctionner comme une application Web ou une application Java autonome. JBoss jBPM sert d'intermédiaire entre les analystes métier et les développeurs en leur donnant un langage de définition de processus commun appelé jPDL .

Vue d'ensemble de l'architecture JBoss jBPM

JBoss jBPM définit les définitions de processus dans des fichiers écrits en utilisant le langage de définition de processus JBoss. jPDL est un langage de programmation orienté graphique (GOP) basé sur un modèle de nœuds, de transitions et d'actions. Dans ce modèle, les nœuds sont des commandes exécutées lorsqu'ils sont rencontrés pendant le flux d'une définition de processus. Les transitions dirigent le flux d'exécution d'une définition de processus et les actions exécutent une logique spécifique lorsqu'un nœud ou un événement de transition se produit.

Dans jBPM, les définitions de processus sont présentées sous forme d'archives de processus. Une archive de processus est transmise au moteur de processus jPDL pour exécution. Le moteur de processus jPDL parcourt un graphe de processus, exécute des actions définies, maintient l'état du processus et enregistre tous les événements de processus.

JBoss jBPM est encapsulé dans les composants suivants:

  • Moteur de processus: ce composant exécute des actions de processus définies, maintient l'état du processus et enregistre tous les événements de processus via les composants délégués suivants:
    • Un gestionnaire de requêtes
    • Un gestionnaire d'état
    • Un gestionnaire de journaux
    • Un chargeur de définition
    • Un service d'exécution
  • Moniteur de processus: ce module suit, audite et signale l'état des processus au fur et à mesure de leur exécution
  • Langage de processus: le langage de définition de processus (jPDL) est basé sur GOP
  • Services d'interaction: ces services exposent les applications héritées en tant que fonctions ou données à utiliser dans les exécutions de processus

Les relations entre ces composants sont illustrées à la figure 1.

Comme le montre la figure 1, les définitions de processus jBPM contenant des gestionnaires d'actions sont chargées et exécutées par le moteur de processus jBPM. Lorsque le moteur de processus rencontre un nœud dans la définition de processus auquel une action est associée, tous les gestionnaires d'actions associés sont appelés. Les gestionnaires d'actions sont des instances de code Java qui interagissent avec des systèmes externes lors de leur exécution.

Voici un exemple de gestionnaire d'actions simple:

import org.jbpm.graph.def.*; import org.jbpm.graph.exe.*;

public class MyActionHandler implements ActionHandler { public void execute(ExecutionContext executionContext) { System.out.println("MyActionHandler has executed: " + executionContext); } }

Le fichier PDL dans une archive de processus est nommé process-definition.xml. Ce fichier contient la description formelle des processus. Un exemple de fichier process-definition.xml est illustré dans l'exemple suivant:

Une définition de processus est basée sur un graphe orienté. Le graphe est composé de nœuds, de transitions, d'un état de début et d'un état final. Le type de chaque nœud définit le comportement d'exécution du nœud. Lors de l'exécution d'une définition de processus, les entités suivantes entrent en jeu:

  • Instance de processus: une instance de processus est une exécution d'une définition de processus.
  • Jeton: un jeton est un chemin d'exécution. Un jeton est le concept d'exécution qui maintient un pointeur vers un nœud dans le graphique. Lorsqu'une instance de processus est créée, un jeton est créé pour le chemin principal d'exécution. Ce jeton est appelé jeton racine de l'instance de processus et est positionné dans l'état de démarrage de la définition de processus.
  • Signal: un signal ordonne à un jeton de continuer l'exécution du graphe par transition hors d'un nœud.
  • Nœud: les nœuds sont responsables de la poursuite de l'exécution d'un graphe. Lorsqu'un jeton entre dans un nœud, le nœud s'exécute. Un nœud qui ne propage pas l'exécution est considéré comme un état.
  • Action: les actions sont des instances de code Java exécutées lorsque des événements se produisent dans l'exécution d'un processus. Les principaux types d'événements sont «entrer dans un nœud», «quitter un nœud» et «effectuer une transition».

Les définitions de processus peuvent être créées facilement avec le concepteur de modélisation graphique jBPM. Le concepteur est actuellement installé en tant que plug-in Eclipse. La figure 2 illustre un exemple d'écran du concepteur de modélisation graphique.

Le concepteur graphique peut être utilisé pour créer des définitions de processus, attacher des gestionnaires d'actions à des événements, modifier la source de définition, créer des archives de processus, tester des définitions de processus, etc.

Déploiement de JBoss jBPM

JBoss jBPM stocke les définitions de processus dans une base de données. Par conséquent, le déploiement d'un processus dans JBoss jBPM implique l'analyse du processus-definition.xml et son stockage dans la base de données JBoss jBPM. Cela peut être fait par:

  • Utilisation de la partâche Ant fournie avec JBoss jBPM pour créer une archive de processus.
  • Utilisation de l'utilitaire deploypar. Cet utilitaire crée également une archive de processus et déploie l'archive de processus dans la base de données jBPM. L'utilitaire deploypar prend un fichier jBPM.properties comme attribut. Ce fichier spécifie les options de configuration, y compris la base de données dans laquelle l'archive de processus doit être déployée.
  • Analyse et stockage par programme du fichier process-definition.xml dans une banque de données.

Exécution de JBoss jBPM à quelques pas simples

JBoss jBPM acts as an orchestration engine that sits in the middle of enterprise applications, enabling integration and coordination between different applications.

For this article, I use the sample deployment shipped with jBPM to discuss how jBPM and jPDL are used to create and modify a simple Web-enabled order processing system.

Downloading JBoss jBPM

The JBoss jBPM starter kit contains everything needed to execute JBoss jBPM, with the exception of a JDK. The JBoss Application Server in the JBoss jBPM starter kit requires J2SE 1.4 or a more recent version.

After you have downloaded the starter kit, unzip it to a directory of your choosing. Once you have unzipped the starter kit, you will have a directory structure similar to the following:

  • Jbpm-starters-kit-3.1
    • jbpm: Contains the source code for the JBoss jBPM product
    • jbpm-bpel: Contains information about the BPEL extension for JBoss jBPM
    • jbpm-db: Contains sample configurations for connecting JBoss jBPM to other databases
    • jbpm-designer: Contains the Eclipse plug-in for the JBoss jBPM Visual Process Designer
    • jbpm-server: Contains the JBoss Application Server along with the JBoss jBPM engine and the sample process

Execute the JBoss jBPM engine

To start the JBoss application server with jBPM deployed, go to the jbpm-server directory and execute the startup script found there. A command window should pop up with the jBPM console window, similar to Figure 3.

Now, bring up a browser window and go to //localhost:8080/jbpm. You will be presented with the login page for the sample Web application for JBoss jBPM, shown in Figure 4.

Connectez-vous en tant que cookie monster et sélectionnez le lien Créer une nouvelle commande de vente Web. Cela créera une nouvelle instance du processus prédéfini de "vente Web", illustré à la figure 5.

Le fichier de définition réel, processdefinition.xml, se trouve dans websale.par et est illustré dans la liste suivante: