Vous êtes sur la page 1sur 54

Composition de services Web

avec BPEL

Sami Bhiri
teaching.bhiri@gmail.com

Sami BHIRI
BPEL - Outline

• Acknowledgement and credits


• Processus métiers & Composition de services
– Chorégraphie, orchestration et langage de processus métier
• BPEL
– introduction
– Perspectives service et processus
– Structure générale d’un BPEL
– Liens de partenaire
– Activités atomiques
– Activités structurées
– Détails des activités atomiques
• Outils BPEL

Page 1 19/12/2016 Sami BHIRI


Web Services Concepts, Architectures and
Applications

• Material: Web Services Concepts, Architectures and Applications


• Authors: Gustavo Alonso, Fabio Casati, Harumi Kuno, Vijay Machiraju
• Publisher: Springer Verlag 2004, ISBN 3-540-44008-9

Page 2 19/12/2016 Sami BHIRI


IKS Education Material

• Material: Web services and Service Oriented Architectures


• Location: http://www.iks.inf.ethz.ch/education/ss08/ws_soa
• Author: Gustavo Alonso: ©Gustavo Alonso, D-INFK. ETH Zürich.

• Material: Enterprise Application Integration (Middleware)


• Location: http://www.iks.inf.ethz.ch/education/ws06/EAI
• Author: Gustavo Alonso and Cesare Pautasso: ©IKS, ETH Zürich.

Page 3 19/12/2016 Sami BHIRI


Telecom Sud Paris Education Material &
Mickaël BARON’s Material
• Material: Services Web
• Location: http://www-inf.int-evry.fr/cours/WebServices
• Author: Samir Tata

• Material: BPEL : Orchestrer les Services Web


• Location: http://mbaron.developpez.com/soa/bpel/
• Author: Mickael Baron: © Mickael Baron

Page 4 19/12/2016 Sami BHIRI


BPEL - Outline

• Acknowledgement and credits


• Processus métiers & Composition de services
– Chorégraphie, orchestration et langage de processus métier
• BPEL
– introduction
– Perspectives service et processus
– Structure générale d’un BPEL
– Liens de partenaire
– Activités atomiques
– Activités structurées
– Détails des activités atomiques
• Outils BPEL

Page 5 19/12/2016 Sami BHIRI


Processus métiers

• Un processus métier est un enchaînement d’activités entre acteurs d’une


entreprise pour aboutir à un service donné.
– Acteurs : humains, applications/services, processus métier
• Business Process Management (BPM)
– Cycle de vie des processus métier A1
• Modélisation, Déploiement, Exploitation, Administration A2
– Business Process Management Initiative (BPMI)
• BPM & Web Services
A3
– W3C Web Service Choreography Working Group
• BEA, Intalio, SAP, Sun
– OASIS Web Services Business Process Execution Language A4
Technical Committee A5
• IBM, Microsoft A7
A6
Processus Métier

Page 6 19/12/2016 Sami BHIRI


Composition de services

• La technologie des services Web promeut la réutilisation de composants


logiciels
• Des services plus complexes peuvent être définis en composant d’autres
services existants
• La réutilisation d’un service =opération d’interaction avec une ou
plusieurs de ses opérations
• Pour définir un service composé, Il suffit de spécifier la logique métier de
la composition. i.e. le flot d’interactions avec les services composants
• Les services composés sont eux mêmes des services, qui peuvent jouer
le rôle de services composants dans d’autres compositions
• Les langages de processus métiers et de modèles à flot de tâches
(workflow) permettent de définir la logique de composition de services
Web

Page 7 19/12/2016 Sami BHIRI


Composition (orchestration) et
coordination (chorégraphie)

• La composition et la coordination peuvent être vues comme


deux facettes du même problème
• La composition modélise la structure interne et
l’implémentation d’un service composite
• Les protocoles de coordination se concentrent plutôt sur les
interactions externes/observables entre un ensemble de
services.
• La composition doit suivre les protocoles de coordination
des services composants.
• Le protocole de coordination du service composite peut être
inféré en examinant son structure interne.

Page 8 19/12/2016 Sami BHIRI


Exemple de composition et de
coordination
• Cet exemple simple définit un protocole pour échanger un bon de
commande entre deux services Web de deux entreprises.
• Une demande de bon de commande est envoyé, suivie
immédiatement par un accusé de réception et une réponse de
confirmation par la suite.

Demande de bon de commande

Business “A” Business “B”


Accusé de réception
du bon de commande

Réponse du bon de commande

Inspiré de ©Gustavo Alonso, D-INFK. ETH Zürich.

Page 9 19/12/2016 Sami BHIRI


Exemple: vue de
coordination/chorégraphie
• La perspective coordination définit l’échange observable de messages entre
les services Web
• Ceci est décrit par le protocole métier (protocole publique) liant les deux
parties

Protocole métier
Business “A” Business “B”

Env. de demande Rec. de la


de BC demande de BC
Demande de bon de commande

Rec. accusé de Env. De l’accusé


rec. du BC Accusé de réception de rec.
du bon de commande
Rec. réponse du Env. réponse du
BC BC
Réponse du bon de commande

Inspiré de ©Gustavo Alonso, D-INFK. ETH Zürich.

Page 10 19/12/2016 Sami BHIRI


Exemple: vue de
coordination/chorégraphie
• La perspective composition définit le comportement interne de chaque
service Web impliqué.
• Ceci est décrit via l’orchestration (ou processus privé) de chaque partie
impliquée.

Workflow du partenaire “A”


Préparer Env. de demande
BC. de BC
de l’application Demande de bon
utilisateur de commande
Rec. accusé de
rec. du BC Accusé de réception
du bon de commande
Vers la BD Sauv. Rec. réponse du
Confirm. BC
Du BC Réponse
du bon de commande
Processus prive “A”
Inspiré de ©Gustavo Alonso, D-INFK. ETH Zürich.

Page 11 19/12/2016 Sami BHIRI


Exemple: vue complète

• Les processus publiques et privés de chaque service doivent être cohérents pour que
l’interaction aboutit
• Les processus publiques (protocoles métiers) qui régissent la coordination des
services Web doivent être connus par les différents partenaires
• Le processus privé qui orchestre l’échange des messages avec le système interne
est souvent gardé confidentiel.

Workflow du partenaire “A” Workflow du partenaire “B”

Préparer Env. de demande Rec. de la Sauv. BC


BC. de BC demande de BC
Demande de bon
de commande
Rec. accusé de Env. De l’accusé
rec. du BC Accusé de réception de rec.
du bon de commande
Sauv. Rec. réponse du Env. réponse du Vérif.
Confirm. BC BC stoque
Du BC Réponse
du bon de commande
Inspiré de ©Gustavo Alonso, D-INFK. ETH Zürich.

Page 12 19/12/2016 Sami BHIRI


Chorégraphie / Orchestration

• Chorégraphie
– Vision globale/distribuée
– Collaboration publique entre participants
• Description de l’ordre de messages échangés entre les participants
• Définition de contraintes sur les interfaces des participants
– Non exécutable tel quel (transformation en processus BPML)
– WS-CDL (WS-Choreography Description Language)
• Orchestration
– Vision centralisée et local à un processus
– Implantation privée des participants
– Exécutable
– WS-BPEL (WS-Business Process Execution Language)

Page 13 19/12/2016 Sami BHIRI


Langages de compositions

• Différents langages permettent de modéliser les processus


métiers
• Fondés sur des concepts proches
– Activités, opérations, appels de services
– Echanges des messages, modification des messages
– Gestion des erreurs, événements
• Syntaxe basée sur le format XML
• Outillés
– Editeurs graphiques
– Moteur d’exécution

© Mickael Baron

Page 14 19/12/2016 Sami BHIRI


Langages de compositions

Langages de
programmation Textuel Notation
traditionnel graphique

JAVA Orienté
C# XML WebML donnée

OCR WSBPEL JOpera Orienté


BPML processus

CHAIMS XL À base
UML
de modèle

©Gustavo Alonso, D-INFK. ETH Zürich.

Page 15 19/12/2016 Sami BHIRI


BPEL - Outline

• Acknowledgement and credits


• Processus métiers & Composition de services
– Chorégraphie, orchestration et langage de processus métier
• BPEL
– introduction
– Perspectives service et processus
– Structure générale d’un BPEL
– Liens de partenaire
– Activités atomiques
– Activités structurées
– Détails des activités atomiques
• Outils BPEL

Page 16 19/12/2016 Sami BHIRI


BPEL?

• BPEL (Business Process Execution Language) est un langage de


description de composition de service Web en spécifiant le flot
d’interactions avec ces services composants.
• Fournit des primitives/activités pour interagir avec des services web
(composants), définir le flot de contrôle, la manipulation des variables et
la gestions des anomalies.
• BPEL est un langage basé sur XML
• BPEL se base sur WSDL
• Il ne s’intéresse pas à l’implémentation du langage mais seulement à la
sémantique des primitives/activités qu’il fournit
• Résultat de la fusion de deux langages XLANG (Micfrosoft) et WSFL
(IBM)
• Abstract BPEL permet aussi de définir des protocoles
d’interaction/coordination des services web

Page 17 19/12/2016 Sami BHIRI


BPEL et les services Web

Un portType
d’un service
composant
Un flot
d’opérations
d’interactions
avec des
services web

Page 18 19/12/2016 Sami BHIRI


Exemple : WS-BPEL

Web Service Réservation Séjour


Web Service
A1 Compagnie Aérienne

A2
Web Service
WSDL

Client Hôtel
du Web Service A3

Web Service
A4 Banque
Ai : activité du
processus métier
A5
Web Service
Poste

Page 19 19/12/2016 Sami BHIRI


WS-BPEL: un service + un processus

Web Service Réservation Séjour


Perspective service Web Service
A1 Compagnie Aérienne
•un processus bpel est
lui même externalisé A2
en tant que service
Web Service
(composé) décrit par
WSDL

Hôtel
un document WSDL
A3
qui

• décrit les points Web Service


A4 Banque
d’interaction clients
avec le processus
(messages et A5
opérations) Web Service
Poste

Page 20 19/12/2016 Sami BHIRI


WS-BPEL: un service + un processus

Web Service Réservation Séjour


Perspective processus
Web Service
A1 Compagnie Aérienne
•un fichier BPEL décrit
une sorte de workflow où
A2
les activités basiques
sont principalement des
WSDL Web Service
Hôtel
interactions avec des
services web
A3
(composants) en plus
des activités de flot de Web Service
A4 Banque
contrôle de manipulation
de variables et de
gestion des anomalies
A5
d’exécution. Web Service
Poste

Page 21 19/12/2016 Sami BHIRI


BPEL - Outline

• Processus métiers
• Composition de services
– Choreographie/orchestration
• BPEL
– BPEL?
– Partie statique/dynamique
– Structure d’un BPEL
– Liens de partenaire
– Activités atomiques
– Activités structurées
– Structure des activités atomiques
• Outils BPEL
Page 22 19/12/2016 Sami BHIRI
Vue générale de la structure de BPEL

Partner / Role
Definitions

Process
<process> Instance
State
<partners> … </partners> Matching
<variables> … </variables>
<correlationSets> … </correlationSets> Transaction
Exception management
Handling <faultHandler> … <faultHandler>
<compensationHandler> … </compensationHandler>
<eventHandler> … </eventHandler>
Events
(activities)* Process Flow
</process>

activities = <receive>, <reply>, <invoke>, <assign>, <throw>,


<terminate>, <wait>, <empty>, <sequence>, <switch>,
<while>, <pick>, <flow>, <scope>, <compensation>

Page 23 19/12/2016 Sami BHIRI


BPEL structure

19/12/2016
Les partenaires d’un processus BPEL

• Un processus BPEL compose/orchestre des services Web et est lui


même externalisé en tant que service Web.

• Deux types de partenaires d’un processus BPEL:


– Les services composants du processus BPEL à invoquer

– Les clients du service BPEL composite

• Un élément <partnerLink> exprime une relation entre le processus BPEL


et (i) les services composants à invoquer ou (ii) les clients du processus
BPEL.

Page 25 19/12/2016 Sami BHIRI


Comment définir les partenaires d’un
processus BPEL?
• Trois éléments permettent de définir les partenaires d’un processus BPEL:
– Un élément <partnerLinkType>
• définit un ou deux rôles
• Chaque rôle fait référence à un portType (WSDL)
– ce portType est à implémenter par le service qui implémente ce rôle (c.à.d soit un
service composant à invoquer, soit le service BPEL à invoquer par un client)
• Partner Link Types ne sont pas définis dans le processus BPEL, mais étend souvent un
document WSDL.
– Un élément <partnerLink>
• définit le lien concret avec le service/client partenaire
• Permettant de spécifier un attachement (en dehors de la portée de BPEL)
• fait référence à un partner link type.
• est définit dans un document BPEL
• Plusieurs partner links peuvent partager le même partner link Type.
– Un élément <partners>
• définit un ensemble de partner links

Page 26 19/12/2016 Sami BHIRI


Exemple: demande de prêt

19/12/2016
Exemples de <partnerLinkType>

L’attribut name identifie un type de


<plnk:partnerLinkType name=‘’loanServiceLT’’> lien partenaire
<plnk:role name=“loanService”
portType=‘’tns:loanServicePT’’>
</plnk:partnerLinkType>
<plnk:partnerLinkType name=‘’riskAssessmentLT’’>
<plnk:role name=“assessor” L’elément role définit un rôle dont le
nom est spécifié par son attribut
portType=‘’risk:riskAssessmentPT’’> name et le protType auquel il fait
</plnk:partnerLinkType> référence est définit par son
<plnk:partnerLinkType name=‘’approvalLT’’> attribut portType.
<plnk:role name=“approver”

portType=‘’approval:approvalPT’’>
</plnk:partnerLinkType>

Page 28 19/12/2016 Sami BHIRI


Exemples de <partnerLinks>

<bpws:partnerLinks> L’attribut name identifie un lien


<bpws:partnerLink name=‘’customer’’ partenaire particulier
myRole=‘’loanService’’
partnerLinkType=‘’tns:loanServiceLT’’/> L’attribut myRole spécifie le rôle du
<bpws:partnerLink name=‘’approver’’ processus BPEL.
partnerRole=‘’approver’’
partnerLinkType=‘’tns:approvalLT’’/> L’attribut partnerRole spécifie le rôle
<bpws:partnerLink name=‘’assessor’’ du service composant à invoquer ou
partnerRole=‘’assessor’’ du client
partnerLinkType=‘’tns:riskAssessmentLT’’/>
</bpws:partnerLinks> L’attribut partnerLinkType fait
référence au partnerLinkType qui
associe un portType (WSDL) au rôle
spécifié.

Page 29 19/12/2016 Sami BHIRI


Les rôles dans <partnerLink>

• Les attributs myRole et partnerRole peuvent être définis en même temps

• Quand seulement myRole est spécifié  lien pour invoquer le service


BPEL composite

• Quand seulement partnerRole est spécifié  lien pour invoquer un


service composant

• Un lien qui définit les deux attributs myRole et partnerRole permet, entre
autres, d’établir des interactions asynchrones.

Page 30 19/12/2016 Sami BHIRI


Variables

• Les messages sont envoyés et reçus vers et de partenaires


– Nécessite de sauvegarder ces messages pour être utilisés par le processus BPEL
• BPEL définit la notion de variables qui permet de manipuler les
messages des interactions entre les partenaires
• Une variable est définie par des types et des messages déclarés dans
un WSDL
• Une variable est définie par les attributs suivant
– name : nom de la variable
– type : typée via un type XML Schema par exemple
Ou
– messageType : typée via un message

© Mickael Baron

Page 31 19/12/2016 Sami BHIRI


Activités simples

Correspondent aux étapes atomiques d’un processus BPEL


<receive> bloquante jusqu’à un message est reçu

<reply> envoie un message, éventuellement en réponse à un message reçu


<invoke> envoie de message pour invoquer une opération à distance

<assign> met à jour les valeurs des variables


<wait> suspend l’exécution du processus pour une certaine période de temps
<empty> opération vide pour des raisons de synchronisation

<terminate> termine le processus


<throw>/ lève une exception pour être capturé par un gestionnaire d’exception
<rethrow>
<catch>/ capture une exception d’un certain type
<catchAll>
<compensate> défait métier des activités terminées

Page 32 19/12/2016 Sami BHIRI


Activités structurées (flot de contrôle)

Les activités structurées définissent le flot de controole du processus


d’une facon hierarchique en emboitant les elements suivants:

<sequence> Exécute une suite d’activités une à la suite de l’autre

<switch> Choisit une activité parmi un ensemble d’activités


<while> Définit un traitement répétitif
<flow> Définit des traitements en parallèles
<pick> Bloquante pour un message, parmi plusieurs alternatifs, ou un alarme et
branche vers le traitement approprié selon ce qui arrive en premier.
<scope> Définit un bloque d’activités

Page 33 19/12/2016 Sami BHIRI


Lien de flots de contrôle

• Un lien définit une relation de causalité entre deux activités


<links>
<link name=“lienAtoB »>

</links>

<invoke name=“A”>
<source linkName=“lienAtoB”>

</sequence>

<receive name=“B”>
<target linkName=“lienAtoB”>

</flow>

Page 34 19/12/2016 Sami BHIRI


Activité <invoke>

L’activité <Invoke> invoque une opération (type one-way ou request/response)


d’un partenaire
Utilise un message en entrée et éventuellement un message en sortie

<invoke
name=‘’…’’  nom de l’activité
partnerLink=‘‘…’’  lien identifiant le partenaire
portType=‘‘….’’  portType de l’operation
operation=‘‘….’’  l’opération à invoquer
inputvariable=‘‘….’’  variable contenant le message en entrée
outputvariable=‘‘….’’ />  variable contenant le message en sortie

Page 35 19/12/2016 Sami BHIRI


Activité <receive>

L’activité <Receive> est une activité bloquante en attente d’un message à


envoyer par un partenaire/client
souvent utilisée comme la première activité pour initialiser une nouvelle instance
du processus
L’attribut createInstance est mis à «yes» dans ce cas.

<receive
 Nom de l’activité
name=‘’…’’
createInstance=‘’yes’’  Dans ce cas, une nouvelle instance sera créée
partnerLink=‘‘…’’
 Lien identifiant le partenaire
portType=‘‘….’’
operation=‘‘….’’  l’operation que le processus doit implementer
variable=‘‘….’’ />  variable où stocker le message recu

Page 36 19/12/2016 Sami BHIRI


Activité <reply>

L’activité <reply> permet d’envoyer (répondre) un message à un partenaire


Le couplage des activités <receive> et <reply> permet d’implémenter des
invocations asynchrones.

<reply
name=‘’…’’ Nom de l’activité
partnerLink=‘‘…’’
portType=‘‘….’’  Lien identifiant le partenaire
operation=‘‘….’’  l’opération que le processus doit implémenter
variable=‘‘….’’ />
 variable contenant le message à envoyer

Page 37 19/12/2016 Sami BHIRI


Activité <assign>

L’activité <Assign> permet d’affecter la valeur d’une variable à partir de la valeur


d’une autre variable

<assign>
<copy>  l’activité <assign> peut contenir plusieurs
<from variable=‘‘….’’/> éléments <copy>
<to variable=‘‘….’’/>
</ copy >  Possibilité d’utiliser des expressions Xpath et
</ assign > transformations XSL pour extraire/construire les
messages appropriés

Page 38 19/12/2016 Sami BHIRI


Pour faire du BPEL : Outils

• Deux catégories d’outils sont à distinguer


– Editeur graphique de processus BPEL
– Moteur BPEL intégré dans la majorité des serveurs d’application

• A noter que les solutions BPEL proposées par les éditeurs de logiciels
fournissent à la fois l’éditeur et le serveur

• Les éditeurs graphiques sont généralement intégrables dans les


environnements de développement (Eclipse, Netbeans, Visual Studio,
…)

• Dans ce cours, nous utiliserons Eclipse BPEL designer comme éditeur


graphique et Apache ODE comme moteur d’exécution

© Mickael Baron

Page 39 19/12/2016 Sami BHIRI


Exemple: demande de prêt

19/12/2016
Partner Link

 Besoinde définir les interactions un processus BPEL et


un Web services
 Processus BPEL : partner links
 WSDL du service Web : partner link types

19/12/2016
Partner Link : WSDL

 Each role must support


exactly one WSDL portType
 In this example portTypes for
each role have different
namespaces
 In case of asynchronous
communication both
portTypes can be from same
namespace
 A portType can define exactly
1 Role

19/12/2016
Partner Link : BPEL

19/12/2016
Data flow

 Defining variable
 Variable for each
message type

19/12/2016
Control flow

 The execution order of parallel activities


<source> : activity source
<target> : activity target

19/12/2016
Activités basiques

19/12/2016
Activités basiques

<invoke
partnerLink=‘‘…’’
portType=‘‘….’’
operation=‘‘….’’
inputVariable=‘‘….’’
outputVariable=‘‘….’’/>

<receive
partnerLink=‘‘…’’
portType=‘‘….’’
operation=‘‘….’’
variable=‘‘….’’ />

<reply
partnerLink=‘‘…’’
portType=‘‘….’’
operation=‘‘….’’
variable=‘‘….’’ />
19/12/2016
Activités basiques

<assign>
<copy>
<from variable=‘‘….’’/> <to variable=‘‘….’’/>
</ copy >
</ assign >

<throw faultName= “…” faultVariable=“…”/>

<wait for=‘‘…’’’ ? Until=‘’…’’ ? ’/>

<terminate/>

<empty>

19/12/2016
Activités basiques

19/12/2016
Key Concepts - Invoke

19/12/2016
Activités structurées

19/12/2016
Activités structurées

19/12/2016
Moteurs BPEL

 Orchestra (http://orchestra.ow2.org)
 Apache ODE (http://ode.apache.org/)
 eClarus (http://www.eclarus.com/)
 ActiveBPEL (http://sourceforge.net/projects/activebpel/)
 JBoss JBPM (http://www.jboss.com/products/jbpm/)
 IBM BPEL4J (http://www.alphaworks.ibm.com/tech/bpws4j)
 IBM WBI Server Foundation
(http://www.ibm.com/software/integration/wbisf)
 Oracle BPEL Process Manager (http://otn.oracle.com/bpel)
 Collaxa BPEL Orchestation Server (http://www.collaxa.com/)
 OpenStorm ChoreoServer (http://www.openstorm.com/)
 FiveSight PXE (http://www.fivesight.com/pxe.shtml)
 Active Endpoints ActiveWebflow Server (http://www.active-
endpoints.com/products/activewebflow/index.html?wiki)
 ActiveBPEL Open Source BPEL Engine
(http://www.activebpel.org?wikipedia)
 bexee BPEL Execution Engine (http://bexee.sourceforge.net)

19/12/2016