1. TP 2: Processus Métier BPEL
avec WSO2
Cours eServices - GL5
GL5 - 2015-2016
TP 2 ESERVICES MME. LILIA SFAXI 1
Objectifs du TP
Création d’une application SOA Composite en utilisant BPEL avec la suite WSO2
2. I. Conception d’une Application SOA avec WSO2
L’objectif principal de ce TP est de vous aider à concevoir une application SOA en
utilisant l’environnement WSO2 et le serveur Axis2. Pour cela, nous devons connaitre un
certain nombre de concepts.
1. WSO2
WSO2 (appelée aussi WSO2 pour signifier Web Service Oxygen) est une entreprise qui a vu1
le jour en Août 2005, et avait pour principal objectif de fournir des solutions SOA pour les
développeurs professionnels. Elle développe principalement des produits basés sur la
suite logicielle open source Apache, et tous ses produits sont sous la licence Apache
Software Licence.
2. WSO2-BPS
Le serveur WSO2-BPS est fourni par la suite WSO2 pour permettre aux développeurs2
de déployer facilement et rapidement des processus métiers utilisant le standard WS-
BPEL. Ce serveur repose sur le moteur BPEL de Apache ODE (Orchestration Director
Engine) pour fournir une console web graphique et complète, pour gérer et visualiser les
processus.
3. BPEL
Un processus métier (Business Process) est la procédure qu’une organisation utilise
pour réaliser un objectif métier plus grand. C’est un ensemble de tâches individuelles,
chacune s’exécutant dans un ordre spécifique. Il peut être synchrone ou asynchrone,
selon la méthode choisie pour invoquer ce processus.
Le langage BPEL (Business Process Execution Language) permet de représenter les
processus métiers, et de créer simplement des applications complexes faisant appel à
plusieurs services web. Les outils SOA de WSO2 Developer Studio fournissent un
environnement graphique BPEL rendant ainsi la création encore plus intuitive de ces
applications. La Figure suivante montre un exemple de processus BPEL développé avec
l’outil graphique de WSO2.
WSO2: http://www.yenlo.com/en/getting-started-wso2-basics-wso2-install/1
WSO2-BPS: http://wso2.com/products/business-process-server/2
TP 2 ESERVICES MME. LILIA SFAXI 2
3. Pour comprendre les processus BPEL, il faut définir un ensemble de concepts
fréquemment utilisés:
• Les services partenaires (Partner Services) : représentent tout service externe ou
client qui interagit avec le processus BPEL. Un processus BPEL fait appel à un ou
plusieurs partenaires externes tout au long de son exécution, pouvant être des
services web, des bases de données, ou d’autres processus BPEL.
• Les activités : ce sont les tâches métier individuelles dans le processus, permettant
de réaliser un objectif plus large. Ils représentent chaque étape du processus. Un
processus BPEL commence toujours avec une activité de réception (receive), puis
invoque des services externes (invoke) et enfin renvoie le résultat au client (reply).
• Les variables : Il existe plusieurs variables et messages qui circulent entre les
activités du processus, et entre les activités et les partenaires. Dans la Figure 2, on
retrouve une activité Assign entre les activités Receive et Invoke, qui permet
d’affecter les éléments de l’itinéraire (date, destination…) à une nouvelle variable.
Cela peut être réalisé par une simple opération de copie, ou par un traitement sur
les entrées (concaténation, somme…).
II. Ma première application SOA
Dans cette première application, nous allons réaliser les tâches suivantes:
• Créer un service web Concat, permettant de concaténer deux chaînes de
caractères, qu'on va déployer sur le serveur Axis2.
TP 2 ESERVICES MME. LILIA SFAXI 3
4. • Définir un processus métier BPEL permettant la lecture en entrée de deux chaînes
de caractères, leur concaténation en faisant appel au service Concat et l’envoi du
résultat en sortie.
1. Installation et Configuration
1. Télécharger tous les prérequis pour ce TP
• JDK 1.7 ou 1.6
• WSO2 Developer Studio (version 3.7.1 avec Eclipse JavaEE Kepler) : http://
wso2.com/products/developer-studio/
• Apache Axis2 Java, Binary distribution, version 1.6.3 : https://axis.apache.org/
axis2/java/core/download.cgi
• WSO2 Business Process Server, version 3.2.0: http://wso2.com/products/
business-process-server/
2. Décompresser toutes les archives dans le même répertoire.
3. Lancer le serveur axis2 standalone en exécutant le fichier bin/axis2server.bat (sur
windows) ou bin/axis2server.sh (sur les systèmes UNIX), se trouvant le répertoire
d'installation d'axis2.
4. Lancer le serveur wso2-bps en exécutant le fichier bin/wso2server.bat (pour
windows) ou bin/wso2server.sh (pour UNIX), se trouvant sous le répertoire
décompressé de wso2-bps.
2. Création d'un Service Web Axis2
On démarrera d'abord le Developer Studio de WSO2, qui n'est autre qu'un Eclipse
modifié. Il fournit un Dashboard qui permet de lancer les types de projets les plus
importants. On peut retrouver ce Dashboard sous le menu Developer Studio -> Open
Dashboard.
TP 2 ESERVICES MME. LILIA SFAXI 4
5. 1. Pour créer un nouveau service Axis2, cliquer sur le lien Axis2 Service Project se
trouvant dans le dashboard.
2. Lui donner le nom ConcatService, le nom de package insat.tp2.ws, et le nom de
classe Concat
3. Implémenter cette classe, en créant une méthode concat, qui saisit deux chaînes
de caractères, et retourne une chaîne composée de ces deux chaînes séparées
par un espace.
4. Déployer ce service dans le serveur Axis2 que vous avez démarré. Pour cela, faire
un clic droit sur le projet, et choisir Export Project as Deployable Archive. Choisir
ensuite le répertoire de déploiement de Axis2, généralement sous le chemin:
<rep_install_axis2>/repository/services
Le fichier sera déployé sous le format .aar. Un déploiement réussi provoque
l'affichage d'un message semblable à celui-ci, sous le terminal où on a démarré le
serveur:
Vous pourrez voir également la liste de tous vos services sous le chemin:
http://localhost:8080/axis2/services/
Le résultat sera sous la forme suivante:
En cliquant sur le nom du service, on peut visualiser son fichier WSDL.
5. Tester le service avec SOAPUI. Vérifier qu'il retourne bien un résultat semblable à
celui-ci:
TP 2 ESERVICES MME. LILIA SFAXI 5
6. 3. Création du processus métier avec BPEL
Notre objectif maintenant est d'intégrer ce service dans un processus métier. Nous nous
proposons donc de créer un processus métier très simple qui fait appel au service
Concat et retourne son résultat.
1. Dans le dashboard, choisir BPEL Workflow.
2. Créer un nouveau processus BPEL synchrone, que vous appellerez ConcatBPEL.
(Choisir la perspective BPEL pour pouvoir visionner les éléments nécessaires à la
configuration de notre processus). Un fichier intitulé ConcatBPEL.bpel représente
graphiquement le processus, qui a la forme suivante:
TP 2 ESERVICES MME. LILIA SFAXI 6
7. 3. La palette à droite montre l'ensemble des activités et contrôles qu'on peut insérer
dans le processus. Insérer dans l'ordre les tâches Sequence, Assign, Invoke et
Assign à la place de la tâche obsolète “FIX_ME", modifier leurs noms pour obtenir
un processus ayant cette forme:
4. Avant de configurer l'appel au service, il faut d'abord importer son fichier wsdl.
Pour cela, faire un clic droit sur le projet du service web (ConcatService) et choisir
Generate WSDL. Sauvegarder ce fichier dans le répertoire bpelContent du projet
ConcatBPEL.
5. Configurer la tâche InvokeConcatService sous l'onglet Propriétés. Pour cela:
a. Créer un nouveau Global Partner Link intitulé ConcatPL
b. Dans la fenêtre qui apparaît, cliquer sur Add WSDL et choisir le fichier wsdl
que vous venez d'importer. Sélectionner ensuite ConcatPortType dans la
fenêtre Matches.
c. Nommer le port type ConcatPT
d. Nommer le rôle ConcatRole (n'oubliez pas de sélectionner ConcatPortType
dans la fenêtre Port Type)
e. Cliquer sur Finish
f. Dans la fenêtre Properties, dans la case Quick Pick, double cliquer sur
l'opération concat.
Normalement, à ce stade, le symbole d’erreur sur cette tâche devrait disparaître.
6. Pour pouvoir associer les entrées du processus (reçues par la tâche receiveInput)
aux paramètres d'entrée du service web, il faut suivre les étapes suivantes:
TP 2 ESERVICES MME. LILIA SFAXI 7
8. a. Commencer par définir deux chaînes de caractères comme entrées au
processus. Pour cela, double cliquer sur le fichier ConcatBPELArtifacts.wsdl,
sous le répertoire bpelContent du projet.
b. Cliquer sur la flèche à droite du rectangle ConcatBPEL, devant input.
c. Ajouter une autre entrée au RequestType de type String, comme suit:
d. Maintenant, revenir à l'onglet Properties de l'élément AssignInputs. Dans la
partie Details, cliquer sur New.
e. Ajouter une assignation allant de la première entrée du processus BPEL vers le
premier paramètre de la requête du service web Concat. Refaire la même
chose pour la deuxième entrée et le deuxième paramètre. Quand la fenêtre
suivante apparaît:
TP 2 ESERVICES MME. LILIA SFAXI 8
9. Cliquer sur Yes. Et garder l'assignation générée.
f. Refaire la même opération pour assigner la sortie du service web à celle du
processus.
7. Pour finir, dans le fichier deploy.xml, associer le port ConcatBPELPort au client, et
le port ConcatHttpSOAP11Endpoint à ConcatPL.
Exporter le projet sous forme d'archive zip, que vous sauvegarderez à l'endroit de votre
choix.
4. Déploiement et Test du Processus Métier
Une fois le serveur WSO2-BPS démarré, ouvrir la page d'administration à l'adresse:
https://localhost:9443/carbon/admin/index.jsp3
Ajouter un nouveau Processus BPEL en cliquant sur Add (sous la rubrique Processus).
Charger l'archive du projet ConcatBPEL que vous venez de générer. Ce fichier a
simplement été copié sous le répertoire :
<rep_install_wso2bps>/repository/deployment/server/bpel
Vous verrez bientôt dans la liste des processus déployés votre ConcatBPEL. Cliquer sur
le process ID, une fenêtre montrant les détails du processus s'affichera.
Login: admin, Mot de passe: admin3
TP 2 ESERVICES MME. LILIA SFAXI 9
10. Cliquer surTry It, pour tester votre processus:
Vous pourrez également utiliser SOAPUI pour le tester. Pour retrouver l'URL du WSDL du
processus BPEL, cliquer sur WSDL1.1 dans la rubrique WSDL Details de la page
d'information du processus.
Activité
Modifier votre processus pour ajouter un appel à un autre service, qui rajoute un point
d'exclamation à la fin de la chaîne concaténée.
TP 2 ESERVICES MME. LILIA SFAXI 10
11. III. Homework
Créer une application SOA de demande de prêt qui permet de réaliser les opérations
suivantes:
• Saisir les données de l’utilisateur : Nom, prénom, âge, sexe, salaire, montant
demandé.
• Vérifier si l’utilisateur a le droit d’avoir un prêt ou pas. Un utilisateur a le droit d’avoir
un prêt si:
- Son âge est compris entre 18 et 65 ans.
- Son salaire est supérieur à 600dt
- S’il peut rembourser son dû avant ses 70 ans (le montant demandé doit être
supérieur à la limite = salaire annuel * (70 – âge) * 0,5)
• L’application doit afficher le nom et prénom de l’utilisateur, la réponse (Prêt accepté
ou pas) et la raison du rejet si le prêt est refusé.
• Votre application doit comporter au moins deux services externes invoqués, puis
stocker les informations de la demande ainsi que la réponse dans une base de
données.
Exemple de réponse :
Mr Flen Fouleni – Demande de Prêt REFUSÉE.
Raison : Vous avez dépassé la limite d’âge autorisée.
TP 2 ESERVICES MME. LILIA SFAXI 11