Tp3 - Application SOA avec BPEL

16
Institut National des Sciences Appliquées et de Technologie TP3 : Conception d’une Application SOA Dr. Lilia Sfaxi Objectifs du TP : Création d’une application SOA composite en utilisant BPEL et Netbeans LA 3 SIL – 2013/2014

description

Visitez http://liliasfaxi.wix.com/liliasfaxi

Transcript of Tp3 - Application SOA avec BPEL

Page 1: Tp3 - Application SOA avec BPEL

I n s t i t u t N a t i o n a l d e s S c i e n c e s A p p l i q u é e s e t d e T e c h n o l o g i e

TP3 : Conception d’une Application SOA Dr. Lilia Sfaxi

Objectifs du TP : Création d’une application SOA composite en utilisant BPEL et Netbeans

LA 3 SIL – 2013/2014

Page 2: Tp3 - Application SOA avec BPEL

2 TP3 : Conception d’une Application SOA

Architecture  Orientée  Services

I. Conception d’applications SOA dans l’environnement Netbeans L’objectif principal de ce TP est de vous aider à concevoir une application SOA en utilisant l’environnement Netbeans et le serveur Glassfish. Pour cela, nous devons connaitre un certain nombre de concepts.

I.1. OpenESB

OpenESB1 est un projet qu fournit des outils ESB faciles d’utilisation pour la conception, le développement, le test et le déploiement d’applications SOA.

I.2. 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 Netbeans fournissent un environnement graphique BPEL rendant ainsi la création de ces applications encore plus intuitive. La Figure 1 montre un exemple de processus BPEL dévloppé avec l’outil graphique de Netbens.

Figure 1 : Exemple de processus BPEL avec les outils graphiques de Netbeans

Pour comprendre les processus BPEL, il faut définir un ensemble de concepts fréquemment utilisés:

1 OpenESB : Open Enterprise Service Bus : http://www.open-esb.net

Page 3: Tp3 - Application SOA avec BPEL

TP3 : Conception d’une Application SOA 3

Architecture  Orientée  Services

- 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, qui peuvent ê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 renvoient 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 1, 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…). Cette affectation est représentée par un autre outil

Netbeans : Le BPEL Mapper (voir la Figure 2)

Figure 2 : Le Netbeans BPEL Mapper

I.3. Applications Composites et JBI

Une application composite permet de rassembler la logique métier et les sources de données à partir de plusieurs systèmes sous-jacents. Elle peut être associée à un ou plusieurs processus métier, et peut rassembler plusieurs étapes en présentant au client à travers une interface unique. Au sein de ce type d’application, et comme exigé par les architectures SOA, il est possible de remplacer ou de mettre à jour des composants individuels d’une application sans affecter d’autres composants. Dans l’environnement Netbeans, ce type d’application est déployé comme un module JBI, dans l’environnement d’exécution de JBI fourni par Glassfish.

JBI (Java Business Integration) est une norme édictée dans la JSR208, basée sur une

Page 4: Tp3 - Application SOA avec BPEL

4 TP3 : Conception d’une Application SOA

Architecture  Orientée  Services

approche SOA. Elle définit une architecture permettant la mise en place de solutions d’integration, basées sur l’utilisation de composants qui communiquent via des messages. JBI définit une partie d’un ESB: le conteneur de services, responsible de la vraie intégration. C’est l’endroit où des composants informatiques (comme des applications, protocoles, bases de données ou même fichiers de données) sont transformés en fournisseurs et/ou consommateurs de services. Il définit les services sous forme de fichiers WSDL.

Figure 3 : Composition de l’environnement JBI

JBI définit un ensemble de composants (représentés dans la ……):

- Normalized Message Router : routeur responsable de gérer la communication entre

plusieurs composants JBI. Il permet le couplage lâche entre ces composants.

- Service Engines : composants JBI qui fournissent (et consomment) la logique métier

et les services de transformation vers les autres composants. Plusieurs SE sont

disponibles dans l’environnement JBI, tels que BPEL SE pour l’orchestration des

services métiers, JEE SE pour la consommation de services web JEE, SQL SE pour

l’exécution des requêtes SQL…

- Binding Components : composants JBI qui permettent la communication avec les

services externes, indépendamment du protocole utilisé. Ils permettent de

convertir un message vers un protocole standard, pour être manipulé par les autres

composants JBI. Exemples de BC: File BC, pour la lecture/écriture à partir de

fichiers, SMTP BC pour le support des emails, SOAP BC pour l’envoi et la réception

de messages en utilisant le protocole SOAP…

Page 5: Tp3 - Application SOA avec BPEL

TP3 : Conception d’une Application SOA 5

Architecture  Orientée  Services

II. Ma première application SOA: Helloworld Dans cette première application, nous allons réaliser les tâches suivantes:

- Définir un processus métier BPEL permettant la lecture en entrée d’une chaine de

caractères, sa concaténation avec une autre chaine et l’envoi du résultat en

sortie.

- Définir une application composite qui appelle de processus BPEL, lui donne en

entrée une requête SOAP contenant la chaîne initiale, et recevant en sortie une

réponse SOAP avec les deux chaînes concaténées.

- Définir ensuite un service Web externe qui va réaliser la concaténation. Il sera par la

suite invoqué par le processus BPEL.

Pour cela, vous aurez besoin des outils OpenESB, que vous trouverez en bundle dans le site officiel (http://www.open-esb.net ) . Nous avons utilisé pour ce TP la version 2.3.

II.1. Création du processus métier avec BPEL

Pour créer un nouveau processus BPEL:

- Aller vers New Project, choisir la catégorie SOA puis BPEL Module.

- Choisir HelloWorldBPEL comme nom de projet.

Vous obtiendrez le résultat suivant:

Figure 4 : Application HelloWorld : BPEL

Page 6: Tp3 - Application SOA avec BPEL

6 TP3 : Conception d’une Application SOA

Architecture  Orientée  Services

Dans la palette à droite, vous trouverez les différentes activités que vous pourrez ajouter à votre processus. Pour l’instant, nous commençons par créer les Services Partenaires avec lesquels ce processus va interagir.

Le service qui va fournir les entrées au processus sera décrit pas un fichier WSDL. Mais avant, pour la bonne pratique, nous allons réaliser un fichier XSD (XML Schéma Definition) dans lequel nous définissons les types de messages qui seront échangés dans ce processus.

Dans le cas de l’application HelloWorld, deux messages seront échangés: un message en entrée, de type chaîne de caractères, qu’on appellera input, et un message en sortie, de type chaîne de caractères, qu’on appellera output.

Pour créer un nouveau fichier XSD:

- Faire un clic droit sur le répertoire Process Files de votre application BPEL, et choisir

New à XML Schema

- Appeler ce schéma HelloworldXSD

- Dans la fenêtre qui apparaît, choisir l’onglet Design pour une représentation

graphique de votre schéma.

- Pour créer des types complexes, faites glisser Complex Type à partir de la palette

vers le champ Complex Types. Définir deux types complexes InputType et

OutputType, avec chacun un élément simple, respectivement inputString et

outputString de type string.

Remarque : Pour cet exemple, bien sûr, la création d’un type complexe est obsolète, car il contient juste un élément chaîne de caractères, mais ces étapes peuvent être utiles pour des applications avec des types plus élaborés de messages, contenant plusieurs champs.

- Créer ensuite deux éléments simples : input et Output, de types respectifs InputType

et OutputType.

Votre fenêtre aura alors l’allure suivante:

Page 7: Tp3 - Application SOA avec BPEL

TP3 : Conception d’une Application SOA 7

Architecture  Orientée  Services

Figure 5 : Application Helloworld : Schéma XML

On peut ensuite créer le fichier WSDL approprié.

- Faire un clic droit sur Process Files et choisir New à WSDL Document

- Appeler ce fichier HelloworldWSDL

- Dans la partie Abstract Configuration, définir le type des entrées et des sorties

respectivement dans les cases Input et Output, comme suit:

-

Figure 6 : Application Helloworld : Création du Fichier WSDL

Une fois le fichier créé, son apparence devra ressembler à ce qui suit.

Page 8: Tp3 - Application SOA avec BPEL

8 TP3 : Conception d’une Application SOA

Architecture  Orientée  Services

Figure 7 : Application Helloworld : Fichier WSDL

Pour créer le processus BPEL:

- Ouvrir le fichier HelloworldBPEL et choisir l’onglet Design.

- Faire glisser le fichier WSDL créé dans la fenêtre principale. Des cercles oranges

apparaitront aux endroits où il est possible de placer le fichier: prenez soin de le

placer à gauche du processus helloworldBPEL. Un nouveau Partner Link sera créé.

Le renommer HWInput.

- A partir de la palette de droite, faire glisser respectivement les activités suivantes

entre les activités Process Start et Process Stop:

o Receive : pour saisir la chaîne en entrée à partir du service décrit par

HelloWorldWSDL. Double-clquer sur cette activité pour la configurer. Préciser

le Partner Link à partir duquel les données seront reçues (HWInput),

l’opération visée (HelloworldWSDLOperation) et générer la variable en entrée

en cliquant sur le bouton Create. La fenêtre aura l’apparence suivante :

Page 9: Tp3 - Application SOA avec BPEL

TP3 : Conception d’une Application SOA 9

Architecture  Orientée  Services

Figure 8 : Application Helloworld : Configuration de l'activité Receive

o Reply : pour envoyer le résultat du processus au service client. Le configurer

de la même manière que l’activité Receive.

- Insérer entre ces deux activités une activité Assign : elle permet d’affecter les

variables en entrée aux variables en sortie du processus. Pour configurer cette

activité, double-cliquer dessus. Une fenêtre BPEL Mapper s’ouvrira.

o Le but est de concaténer la chaîne en entrée avec la chaîne Hello. Pour

cela, cliquer sur le bouton String sur le menu supérieur, et choisir String Litteral.

Le faire glisser dans la fenêtre principale, et écrire la chaîne “Hello “.

o Faire glisser de la même manière StringàConcat dans la fenêtre principale.

o Relier les différents éléments de manière à obtenir le mapping suivant:

Figure 9 : Application Helloworld : BPEL Mapper

Votre processus aura alors l’allure suivante:

Page 10: Tp3 - Application SOA avec BPEL

10 TP3 : Conception d’une Application SOA

Architecture  Orientée  Services

Figure 10 : Application Helloworld : Processus BPEL final

II.2. Création de l’Application Composite

Pour créer l’application composite:

- Choisir New Project à SOA à Composite Application

- La nommer HelloWorldComposite

- Double-cliquer sur Service Assembly pour voir l’assemblage des différents services

de l’application. La fenêtre est divisée en 3 parties: une pour les ports WSDL, une

pour les modules JBI, et une autre pour les modules externes.

Figure 11 : Application Helloworld : Composite Application

- Faire glisser votre application HelloworldBPEL dans la partie JBI Modules. Cliquer sur

Build pour voir son contenu.

Page 11: Tp3 - Application SOA avec BPEL

TP3 : Conception d’une Application SOA 11

Architecture  Orientée  Services

- Faire glisser un binding SOAP de la palette de droite dans la partie WSDL Ports.

- Relier ce binding au module BPEL comme indiqué sur la figure suivante.:

Figure 12 : Application Helloworld : Composite Application finale

- Enregistrer et Deployer votre application,

II.3. Test de l’application composite

Une fois votre application déployée, il possible de la tester.

- Cliquer avec le bouton droit sur le répertoire Test de l’application composite, et

choisir: New Test Case. L’appeler: HelloworldTest

- Dans la fenêtre suivante, choisir le fichier WSDL de votre application composite, puis

l’opération HelloworldWSDLOperation.

- Double cliquer sur le fichier Input créé. Modifier la chaîne en entrée avec le mot:

World!

- Clic-droit sur HelloworldTest et lancer le test. Normalement, la fenêtre d’erreur

suivante va apparaître:

- Cette fenêtre indique que le test n’est pas réussi, car la sortie obtenue ne

correspond pas à la sortie attendue. En effet, le fichier Output du HelloworldTest,

étant resté vide, n’a pas montré le résultat correct que vous attendiez. En cliquant

sur Yes, ce fichier sera rempli avec le résultat obtenu, et une deuxième exécution

du test devra indiquer que le test est réussi.

Page 12: Tp3 - Application SOA avec BPEL

12 TP3 : Conception d’une Application SOA

Architecture  Orientée  Services

Figure 13 : Application Helloworld : Test Réussi

II.4. Appel d’un service web externe

Le but maintenant est de réaliser la concaténation dans un service web externe, au lieu de l’implémenter directement dans le processus BPEL. Pour faire cela, suivre les étapes suivantes:

- Créer un nouveau service web intitulé Concat (comme appris dans le TP

précédent). Ce service contient une seule opération, concat, qui saisit deux

chaînes de caractères, et retourne leur concaténation. Enregistrer et Déployer

votre service.

- Pour représenter un nouveau service web dans le processus BPEL, il faut le

représenter sous forme de fichier WSDL. Faire un clic-droit sur Process Files de

l’application HelloworldBPEL, et choisir New à External WSDL Document(s)

- Lui donner comme URL le chemin vers le fichier WSDL de votre service web Concat

- Faire glisser ensuite votre fichier WSDL importé vers la partie droite de la fenêtre

principale. Il est important de le placer à droite, car c’est un service qui est invoqué

par le processus, pas un service client.

- Nommer le partner Link créé : ConcatLink, comme suit:

Page 13: Tp3 - Application SOA avec BPEL

TP3 : Conception d’une Application SOA 13

Architecture  Orientée  Services

Figure 14 : Application Helloworld : Configuration du Partner Link

- Dans le processus BPEL, supprimer l’activité Assign.

- Faire glisser ensuite l’activité Invoke entre les activités Receive et Reply. Elle permet

de faire appel à un service externe.

- Configurer l’activité Invoke comme indiqué dans la figure suivante:

Figure 15 : Application Helloworld : Configuration du Invoke

Page 14: Tp3 - Application SOA avec BPEL

14 TP3 : Conception d’une Application SOA

Architecture  Orientée  Services

- Insérer ensuite deux activités Assign, respectivement entre Receive et Invoke, et

entre Invoke et Reply.

- Configurer le premier Assign comme suit:

Figure 16 : Application Helloworld : Appel au service Concat

- Configurer ensuite le deuxième Assign en associant les deux variables de retour.

- Le processus obtenu aura alors l’allure suivante:

Page 15: Tp3 - Application SOA avec BPEL

TP3 : Conception d’une Application SOA 15

Architecture  Orientée  Services

Figure 17 : Application Helloworld : Processus BPEL final avec invocation de service externe

- Revenir à votre application composite, et la mettre à jour. Elle devra avoir l’allure

suivante:

Figure 18 : Application Helloworld : Application composite avec appel de service externe

- Tester votre application Helloworld.

Page 16: Tp3 - Application SOA avec BPEL

16 TP3 : Conception d’une Application SOA

Architecture  Orientée  Services

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:

o Son âge est compris entre 18 et 65 ans.

o Son salaire est supérieur à 600dt

o 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 un service externe invoqué, 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.