SOA :BPML

Introduction BPMN : Business Process Modeling Notation

BPMN definit essentiellement les tâches métier et leurs relations en format xml.

Le plugin "Eclipse STP Modeler" permet de créer des fichiers BPMN.

Nous allons essayé de créer un projet avec ce plugin. Voilà un exemple de représentation BPML d'un processus métier:



Figure 1. Model of a business process



Ce shéma montre un unique flux horizontal d'un processus métier coupé en trois tranches et disposé verticalement dans l'ordre. Ce shéma a été créé en utilisant le "STP BMN modeler" d'eclipse, que vous utiliserez plus tard.

Vous pouvez voir où le processus démarre avec le cercle vide sur la gauche, et le flux progresse vers la droite en suivant les flêches et les arcs, et se termine ) avec un cercle vide à droite.

BPMN estsimplement un format XML décrivant, dans notre exemple , le modèle de la figure 1.

Il contient des "vertices" (Pluriel de "Vertex": intersection, noeud) qui correpondent à des noeuds et des "sequenceEdges" qui correspondent à de flèches et des arcs.

Regardons un exemple: (Listing 1) Les "Vertices" sont essentiellement des nodes ou des tâches, représenté graphiquement dans la figure 1 par des cercles, des losanges (Têtes de diamand) et des carrés. Dans le Listing 1, vous pouvez voir qu'ils sont identifiés, aussi, comme une liste de "outgoingEdges" et de "incommingEdges". Des identifiants donne simplement un ID à chaque "Vertices" qui peut être référencé comme "source" ou "target" d'un "sequenceEdge" (Representé dans la figure 1 par des flèches directionnelles allant de "Vertices" en "Vertices"). L'information importante dans chaque "sequenceEdges" sont les attributs "source" et "target" qui spécifient les réference des "vertices" (noeuds) source et destination. Remarquez que ce format de fichier n'est pas éxecutable sur un moteur BPEL comme le moteur "ODE" d'apache. C'est uniquement la modélisation d'un processus métier.
Des outils existent pour transformer ces fichiers BPMN (Par exemple le projet ATL d'eclipse et un open source écrit par BABEL) en modèle BPEL exécutable

BPEL Business Process Execution Language

BPEL est executable sur des moteurs comme ODE (Orchestration Director Engine) d'Apache. LA différence entre BPEL et BPMN est que BPEL est plus structuré, étant par définition un langage d'éxécution. A la place de "Vertices" et de "SequenceEdges", un fichier xml BPEL contient des séquences d'instruction qui incluent l'invocation de Web-Service, des operations et des instructions comme des boucles "while' qui peuvent exécuter une séquence de code encore et encore si une condition reste "true". (Voir le tage ... àprès l'ouverture dans le listing 2) ou encore des instructions "if" et "else-if" Dans la figure 1 (Coupe 2), il y a une instance où un arc va vers l'arrière. C'est comme ça qu'est représenté une boucle "while" en BPMN. Là , vous pouvez voir 2 "vertices" (noeuds) appelés while1 et while2 qui facilitent le branchement correct des processus. (while1 a deux entrées (incomingEdges) en 1 seule sortie et while2 prend une entrée et la divise en deux sorties) La condition de la boucle "while" est définie par "while_ok", et si il reste "true", la tâche ("shippingEstimator task") sera exécutée encore et encore. Quand cette même condition n'est plus vraie, l'éxecution s'arrête et passe à la tâche de fin ("checkout task"). Pour additionner, BPMN XML définit un modèle graphique de votre processus métier avec des noeuds et des graphes, et BPEL definit un modèle executable de votre processus métier avec des constructions éxécutables comme des boucles "while", des instructions "if" et des instructions qui appellent des opérations sur des Web-Services existants. Le processus métier que vous allez modéliser est un simple flux permettant d'ajouter un jouet à une liste d'achat. Les utilisateurs auront le choix d'utiliser un "shippingEstimator"(Voir la condition de la boucle while dans le listing 2), de confirmer, et de passer une commande qui pourra être rejetée ou acceptée. Le processus devra éventuellement envoyer une facture au client et rajouter la commande dans la queue des commandes à expédier. Pour faire cela, vous aurez à installer l'outil de développement Eclipse, avant de vous plonger dans votre "processus métier".

Section 3. Guide d'installation du projet STP ("SOA Tool Platform") d'eclipse

Le projet "SOA Tools Paltform" (STP) d'eclipse fournit des outils permettant la conception, la configuration, l'assemblage, le deploiement, la surveillance et la gestion de software conçu dans le cadre de SOA (Service Oriented Architecture). STP suit les spécifications du SCA (Component Architecture Specification) . STP comprend donc plusieurs outils (Liste non exhastive):

Il est possible de télécharger l'ensemble de ces outils à l'url : http://download.eclipse.org/stp/downloads/ ( J'ai essayé de mettre à jour par l'outil update d'eclipse, ca n'a pas marché, je conseille donc de télécharger le zip "All in one" de le dezipper dans le répertoire d'eclipse.)

Section 4. Utiliser l'éditeur BPMN d'éclipse

L'éditeur STP BPMN se veut simple à utiliser et intuitif. D'abord, nous allons apprendre à créer un diagramme BPMN pour modéliser les visiteurs achetant des jouets sur votre site web. Puis nous apprendrons quel types d'activités que nous aurons à employer dans ce modèle. Et finalement, vous verrez comment modéliser vos processus métier en utilisant l'éditeur BPMN

Votre premier diagramme BPMN

C'est le moment de démarrer Eclipse. Comme l'éditeur BPMN n'est pas basé sur un type de projet, vous avez juste à créer un projet générique:

Nouveau projet

Vous devriez maintenant voir le nouveau projet dans la fenêtre "Package Explorer" . Selectionnez le et créez un nouveau diagramme BPMN:
figure 5

Clickez sur "Finish" pour créer un diagramme BPMN. Votre projet devrait ressembler aà la figure ci-dessous. Click Finish to create the BPMN diagram.
figure 6

Excellent! Maintenant, vous ètes prét à manipuler quelques types d'activités. Ces eléments sont affichés sur la palette de droite.

Introduction des types d'activité

Il y a plusieurs types d'activité que vous pouvez utiliser pour modéliser votre activité métier. Nous allons passé en revue 5 des types d'activité que vous allez utiliser. "Empty Start" , sous "Start Events"

figure 7

Cette activité démarre le processus, le cercle vide sur la gauche de la Figure 1. Apprenez à manipuler l'éditeur: Il faut sélectioner la tache, puis clicker au centre du diagramme. La prochaine est une tâche, comme representée dessous:

figure 8

Les tâches (Task) sont des commandes comme invoquer un Web-Service. Les deux suivantes sont une des "gateway" qui permettent à un processus de se diviser en 2 directions différentes, exclusivement ou en parallèles. D'abord est la "exclusive data-based gateway".

figure 9

Vous comprendrez comment ca marche plus tard. En bref, c'est utilisé pour branché le processus métier vers 2 chemins différents, un pour le cas où la commande est un echec, et l'autre si la commande a été un succes. Maintenant regardon la "parallel gateway".

figure 10

Vous pouvez utiliser ce "gateway" pour définir 2 tâches qui seront exécutées en parallèle, comme par exemple envoyé une facture au client et envoyé un ordre d'envoi au service des expéditions après une commande réussie.
La dernière activité à rajouter est la "Empty End Event", un évènement qui termine le processus.

figure 11

Cela correspond au cercle vide sur la droite de la figure 1, terminant le processus.

Créer le processus metier

Maintenant il faut modéliser le processus métier. Pour commencer , clicker sur le "Empty Start Activity". Puis "double-click" et appelé cette activité "start" par exemple.

figure 12

Clicker sur l'activité de type "task", la placer à la droite de cercle "start", "double-click" et l'appelé "addToyToCart".

figure 13

Maintenant, nous allons créer un nouvel arc depuis le cercle "start" jusqu'à la tâche "addToyToCart". Plcer le curseur sur la bordure droite du cercle "start" jusqu'à ce que 2 petites flèches apparaissent à sa droite.Clicker sur le petit carré à l'extrémité de la flèche pleine. L'étirer jusqu'à la tâche "addToyToCart" jusqu'à ce qu'une flèche sombre apparaisse à sa droite.

figure 14

Relacher la souris, et un nouveau lien devrait relier les 2 activités, comme ci-dessous:

figure 15

Bien, vous avez créé votre premier arc. Votre "business process" commence à prendre forme.

figure 16

Avec l'aide de la figure 1, vous devez être capable de créer de nouvelles tâches. Remarquez que vous pouvez donner un nom aux arcs, ce qui donne encore plus de clarté au shéma. Une fois terminé, vous pouvez examiner le résultat en BPMN correspondant à votre diagramme en regardant le fichier .bpmn. Vous pouvez voir les "vertices" et les "sequenceEdges" qui décrivent le "business process" que vous avez modelés. Félicitations ! Vous avez réussi à modéliser un "Business Process" en utilisant le "BPMN modeler". Maintenant, il vous reste à convertir le BPMN en BPEL, et à déployer le BPEL sur un moteur BPEL (Ode d'Apache par exemple) . Ce sera peut-être l'objet de prochains tutoriels . Quand pensez-vous?