Polycopié de Cours
Pour la réalisation de ce document, et afin d’atteindre l'objectif tracé, nous avons déployé tous
les efforts nécessaires pour consulter plusieurs sources traitant du sujet (ouvrages, notes de
cours, publications et les sites internet). Nous avons par la suite effectué des comparaisons et
des recoupements entre les différentes informations rencontrées. Enfin, dans un souci
d’accessibilité aux utilisateurs, toutes les informations pertinentes ont été sélectionnées,
synthétisées et regroupées dans une forme pédagogique tout en respectant le canevas officiel
défini par le ministère de l’enseignement supérieur et de la recherche scientifique.
Néanmoins, compte tenu des avancées fulgurantes de l’informatique, nous avons conscience
que ce document restera partiel et non exhaustif et qu’il fera appel à notre vigilance pour son
enrichissement par le biais d’une actualisation permanente.
Nous souhaitons aux utilisateurs qui consultent ce document d’y trouver, les enseignements
qu’ils recherchent, et nous les invitons à nous proposer toute suggestion qu’ils jugent utile et de
nous signaler toute éventuelle erreur ou coquille qui aurait échappée à notre vigilance.
De plus, nous avons le plaisir, d’informer nos utilisateurs que, nous profitons des dernières
technologies mises en œuvre dans les enseignements pour soumettre le cours dans un format
interactif. Pour cela, nous utilisons la plateforme MOODLE (Modular Object Oriented
Dynamic Learning Environment). Cette dernière permet aux étudiants d'avoir des comptes
qu'ils utilisent pour accéder aux cours en ligne. Ils y trouveront pour chaque partie du cours
enseignée en classe :
- Un enrichissement par des vidéos, des livres, des références bibliographiques etc. jugées
complémentaires par l’enseignant dans le but de leur offrir une meilleure
compréhension du cours et d’améliorer leurs connaissances
- Des forums et des espaces de chat, d’échanges mutuels et de collaboration, entre eux
et/ou avec l'enseignant, qui leur permettent de rattraper et d’enrichir les parties du cours
qui auraient été mal assimilées en classe
- Des tests auxquels ils répondront en ligne avec correction automatique et instantanée et
ce, pendant une période fixée par l'enseignant
- Des travaux ou des exposés à faire par groupe en utilisant les forums et les chats
spécifiés par l’enseignant pour chaque groupe. Ces travaux, une fois réalisés, seront
déposés dans un espace spécifique de la plateforme avec notification automatique à
l’enseignant
Grâce à cette méthode, nous pensons que les étudiants se retrouveront au centre de leur
apprentissage entrain de progresser ensemble de manière collaborative.
1. Introduction
Les architectures à base de services (SOA) consistent à concevoir des applications distribuées
à l'aide de composants réutilisables et interopérables dont les interactions s'effectuent sur la
base d'échanges de messages. Ces architectures offrent un avantage évident qui est
l'interopérabilité. Cet avantage implique que les applications peuvent s'invoquer et interagir
mutuellement, indépendamment de leurs plates-formes sous-jacentes, de leurs localisations
géographiques et aussi des langages dans lesquels ces applications ont été développées. Ceci
est assuré par le fait que les architectures à base de services se basent sur : (i) l’émergence d’une
couche de services (figure 1) dans laquelle, chaque service permet d’offrir une vue logique des
traitements et données existants déjà ou à développer, et où chaque service encapsule ces
traitements et données et masque ainsi l’hétérogénéité, (ii) l’utilisation des mécanismes
standards pour la publication, la recherche, l’invocation et la composition de ces services.
1
Chapitre 1 Introduction aux architectures orientées services
Grace au concept service, l’architecture orientée service a remporté un grand succès ce qui a
permis d’orienter cette dernière vers des aspects très variés qui dépassent largement le domaine
initial qu’est l’architecture logicielle. Aujourd’hui la SOA est considérée comme un style
architectural pour le système d’information de l’entreprise.
Dans ce chapitre, nous présentons, la notion de service à savoir : sa définition et ses composants.
Ensuite, nous présentons l’architecture orientée service à savoir : sa définition, ses composants,
son fonctionnement, les principes de conception dans SOA, le cycle de vie des services dans la
SOA enfin les avantages et les inconvénients de la SOA.
2. Notion de service
2.1.Définition
Dans une SOA, un service représente une brique logicielle dont les fonctionnalités, les
propriétés non fonctionnelles ainsi que les conditions d'utilisation sont définies de manière
déclarative par un descripteur de service. Ces services peuvent être publiés, découverts et
invoqués pour être utilisables par d’autres services. Ainsi les services peuvent être composés
pour donner d'autres services appelés services composés dont l'exécution fait intervenir d'autres
services appelés services composants. Ceci dans le but d’exécuter des fonctionnalités de plus
haut niveau. Suite à cette composition, on distingue des services (fonctionnel ou métier)
spécifiés au niveau du cahier des charges et des services (entité ou utilitaire) issu d’un travail
d’architecture applicative qui prépare l’implémentation des services métiers (Figure 2).
La liaison entre les services se fait de façon dynamique par envoi de messages. Elle n'est
effectuée qu'au moment de l'exécution, juste avant que le service requis ne soit utilisé. Grâce
aux mécanismes d'encapsulation et de liaison retardée, un service peut-être décrit et utilisé
indépendamment de sa réalisation. De ce fait un couplage extrêmement faible entre services
est assuré et l'interopérabilité de systèmes en environnements hétérogènes est facilitée.
2
Chapitre 1 Introduction aux architectures orientées services
3
Chapitre 1 Introduction aux architectures orientées services
- 2éme définition : SOA est un ensemble de composants qui peuvent être invoqués, et dont
les descriptions d’interface peuvent être publiées et découvertes.
4
Chapitre 1 Introduction aux architectures orientées services
Pour être fonctionnelle, l’architecture orientée service doit fournir des mécanismes de
publication (X), de recherche (Y) et d’invocation de service (Z) à savoir :
- (X) pour assurer la communication, par le moyen d'échanges de message, entre les
composants de la SOA.
- (Y) pour la description des services. Elle doit contenir la façon dont on peut accéder au
service ainsi que ce qu’il est capable de faire, sans donner le détail sur la façon dont il
est implémenté.
5
Chapitre 1 Introduction aux architectures orientées services
- (Z) pour la recherche des services demandés par les clients. Il sert à faciliter la
découverte des services qu’il répertorie en fournissant les détails concernant la façon
dont ils communiquent.
6
Chapitre 1 Introduction aux architectures orientées services
7
Chapitre 1 Introduction aux architectures orientées services
Le cycle de vie des services est défini en quatre phases (détaillé au chapitre 3) :
8
Chapitre 1 Introduction aux architectures orientées services
9
Chapitre 1 Introduction aux architectures orientées services
3.6.2. Inconvénients
- La mise en place d’une SOA a un coût élevé à la fois financier et humain :
Former une équipe d'experts en conception ainsi que plusieurs équipes pour
développer et administrer les différents services.
Dans le cas idéal, l’activité de l’entreprise doit être pensée autour des services.
Si le fonctionnement de l’entreprise n’est pas organisé autour des services alors
il est difficile d’utilisé une SOA et donc le coût de fonctionnement sera élevé.
- Les SOA ont un intérêt limité si l’entreprise ne base pas ses processus sur l’exploitation
des services.
- Difficulté de migrer d’une architecture monolithique vers une architecture SOA sans
étude préalable efficace.
10
Chapitre 2 : Modélisation des processus d’affaires
1. Introduction
Un service métier représente le résultat d’une opération dans une organisation. Il peut être
représenté à différents niveaux et au même titre que les opérations d’une organisation du fait
que ces dernières peuvent, aussi, être représentées à différents niveaux de granularité. Pour
obtenir un service métier, il est nécessaire que les services puissent être composés en des
services plus complexes. Cette composition se poursuit jusqu’à ce que le service résultant
fournisse un support entier pour les processus métiers. Les processus métiers sont ainsi définis
dans le contexte de la composition des services, comme étant une collection d’activités à travers
lesquelles les services sont invoqués.
Le traitement offert par un service métier, obtenus suite à la composition, est un service de type
particulier. En effet, le rôle du service métier est d’offrir un ensemble cohérent de traitements
métiers d’où le terme de processus métier (processus d’affaires) qui représente l’enchainement
d’activités à exécuter pour réaliser l’objectif du service métier. Cet enchainement forme ce
qu’il est convenu d’appeler le flux de contrôle du processus, c’est à dire sa logique d’exécution.
Ceci nécessite une bonne gestion qui permet au client de ne pas ressentir qu’il utilise un service
composé. Pour cela, la gestion des processus métiers est assurée par la méthodologie de gestion
de processus d'affaires BPM (Business Process Managenement). Cette méthodologie inclut les
concepts, les méthodes et les techniques nécessaires pour la modélisation, la conception,
l’administration, la configuration, l’exécution et l’analyse des processus métiers. Par la suite,
BPMS (Business Process Managenement Software) a proposé un ensemble d'outil destiné à
supporter la démarche BPM. Cet ensemble comprend un catalogue de processus d'affaires, des
outils de modélisation graphique (exemple : BPMN), des outils d'aide à l'implémentation, des
moteurs d'exécution à base de flux (exemple : BPEL), des moteurs de règle d'affaires pour
l'adaptation, et des outils de pilotage et de création de rapports. La Figure 1 illustre les
différentes normes en relation avec le cycle de vie d'un processus d'affaires dans le cadre de
11
Chapitre 2 Modélisation des processus d’affaires (Business Process Modeling -BPM)
BPM. Dans ce chapitre, nous présentons la modélisation des processus métiers, quant à leur
exécution ; elle sera abordée dans le chapitre 4.
Figure 1 : Les différentes normes en relation avec le cycle de vie d'un processus d'affaires
dans le cadre de BPM.
2. Processus d’affaires
2.1.Définition
Le terme processus d’affaires est une traduction française de la notion de Business Process ;
plusieurs synonymes de ce mot existent tels que : processus, processus métiers, processus
opérationnel et processus d’entreprise. Un processus d’affaires est un ensemble d'activités
structurées et mesurables conçues pour produire un résultat de valeur pour un client ou un
marché particulier. Le processus d'affaires met l'accent sur la façon dont le travail est fait au
sein d'une organisation. Les activités sont spécifiques et ordonnées dans le temps et 1’espace.
2.2.Catégorisation des processus
Les processus métiers peuvent être classés dans un espace à deux dimensions (figure 2)
suivant le temps nécessaire à l’exécution complète du processus et suivant la complexité de de
ce dernier (de simple et directe à hautement complexe). A partir de ce classement, il ressort
trois catégories bien distinctes de processus métiers : processus à processus, personne à
processus et enfin personne à personne.
12
Chapitre 2 Modélisation des processus d’affaires (Business Process Modeling -BPM)
Durée du processus
a- Processus à processus
Dans la majorité des cas, les processus appartenant à cette catégorie sont peu complexes
et ne durent que très peu de temps. Il s’agit de processus discrets qui se concentrent sur des
transformations de données. Leur but est de transférer un objet métier d’une application vers
une autre. Il suffit, pour cela, de définir la logique métier de transformation de ses objets.
b- Personne à processus
Les interactions personne à processus découlent le plus souvent d’un processus de type
transactionnel comme une demande de validation ou la résolution d’une exception dans une
tâche automatisée. Pour cette raison, ce type de processus est très répétitif avec peu de
différences entre les différentes instances du processus. Ces processus sont souvent basés sur
des états et impliquent des interactions personnes à processus à des étapes spécifiques alors que
les autres étapes sont automatisées. Un exemple serait l’acceptation d’accorder un crédit lors
d’une vente.
c- Personne à personne
Les processus de type personne à personne relient les employés d’une entreprise dans
un but collaboratif comme par exemple le processus de développement de nouveaux produits.
La planification des ressources est centrée sur des processus et des connaissances explicites
alors que la gestion des projets est plus guidée par des connaissances tacites.
13
Chapitre 2 Modélisation des processus d’affaires (Business Process Modeling -BPM)
14
Chapitre 2 Modélisation des processus d’affaires (Business Process Modeling -BPM)
ses sorties et ses services. Un diagramme est un graphe de nœuds où chaque nœud peut
être une fonction simple ou un autre diagramme. Les arcs orientés représentent des flux
de données ou de contrôle. Une fonction ne peut débuter que lorsque toutes ses entrées
sont disponibles.
- IDEF1 : Modélise la vue informationnelle qui expose les entités du système ainsi que
les relations entre elles. Il est basé principalement sur le modèle relationnel de données
avec l'approche entité/relation. IDEF1 utilise la technique de conception ENALIM
(Evolving Natural Language information Model) connue maintenant sous le nom ORM
(Object Rote Modeling).
- IDEF3 : Modélise la vue dynamique en décrivant la séquence des étapes du processus
ainsi que les contraintes qui les sous-tendent et les événements du système avec une
prise en compte de l'aspect temporel. Il utilise la terminologie de scénario qui décrit une
occurrence d'un processus d'affaires. Un scénario est décrit par deux modèles selon deux
stratégies de modélisation. La première stratégie centrée sur le processus qui décrit les
séquences et la deuxième stratégie centrée sur 1'objet, qui expose la transition des objets
au sein du scénario.
4.1.2. RAD
RAD (Role Activity Diagram) est une méthode visuelle pour modéliser et analyser les processus
d’affaires. Dans le cadre de RAD, un processus d'affaires est un ensemble de rôles exécutés par
des acteurs. L'interaction entre ces rôles définit la chorégraphie. Chaque rôle expose l'ensemble
des activités ordonnées par leurs états. Une ressource (entité) peut être reliée à une activité ou
à une interaction lors d'un échange entre les rôles. RAD expose l'entité sous ses différents états
pendant le déroulement du processus en utilisant le concept d'ELH (Entity Lifetime Histories).
Un diagramme RAD supporte les concepts de base de modélisation de processus d'affaires. Il
met l'emphase sur la vue dynamique et la structure des rôles au niveau organisationnel.
4.1.3. EPC
EPC (Event-driven Process Chains) est un langage qui offre une notation graphique à base de
connecteurs logiques. Ses concepts de base sont les fonctions, les événements et les connecteurs
logiques. Un processus EPC est représenté par un graphe d'événements et de fonctions.
L'événement décrit la situation avant ou après l'exécution d'une fonction (une étape du
processus). EPC permet de modéliser les processus parallèles. Il est principalement centré sur
15
Chapitre 2 Modélisation des processus d’affaires (Business Process Modeling -BPM)
l'aspect comportemental et fonctionnel d'un processus d'affaires. Dans une version étendue,
EPC permet de représenter la vue informationnelle et la vue organisationnelle.
4.2.Langages dynamiques
Ces langages partagent les caractéristiques suivantes : (i) ils mettent l'accent sur la vue
dynamique, (ii) ils offrent une description complète permettant de mettre en œuvre et exécuter
le processus d'affaires, (iii) ils mettent l'accent sur un format de sérialisation pour les échanges,
(iv) ils sont normalisés par le WfMC (Workflow Management Coalition) (cf : chapitre 4). Parmi
ces langages en trouve :
4.2.1. BPMN
BPMN (Business Process Mode! and Notation) est un langage graphique récent de plus en plus
accepté comme une norme. Il vise à combler le vide entre la technologie de l'information et les
analystes d'affaires en présentant une notation graphique simple et facile à assimiler par des
utilisateurs ayant moins de connaissance techniques. Avec une base fondée sur les réseaux de
Pétri et centrée sur l'aspect comportemental d'un processus d'affaires, BPMN supporte tous les
concepts de base d'un processus d'affaires avec une sémantique de flux de contrôle bien définie.
4.2.2. XPDL
XPDL (XML Process Definition Language) : c’est un langage de définition de processus basé
sur XML. Il est défini dans l’objectif d’offrir un format standard de sérialisation pour BPMN.
Plusieurs entreprises utilisent XPDL pour la définition et l'échange de processus d'affaires, dont
IBM et BEA Systems.
4.2.3. BPML
BPML (Business Process Modeling Language) offre un langage formel à base de XML pour
représenter des processus exécutables qui traitent tous les aspects des processus d'affaires des
entreprises, y compris les activités complexes, les transactions et leur compensation, la gestion
des exceptions et la sémantique opérationnelle. Dans BPML, un processus est un ensemble
d'activités qui s'exécutent dans un contexte caractérisé par des propriétés spécifiques telles que
les variables et les exceptions.
4.2.4. BPDM
BPDM (Business Process Definition Metamodef) : l'objectif de ce langage est de fournir un
modèle standard pour unifier l'ensemble des normes de modélisation de processus d'affaires.
Le langage BPDM est indépendant de toute notation graphique et de toute méthodologie de
gestion de processus d'affaires ce qui a permis aux entreprises de continuer à utiliser les mêmes
outils de modélisation de processus en leur possession.
16
Chapitre 2 Modélisation des processus d’affaires (Business Process Modeling -BPM)
4.3.2. ebXML
ebXML (Electronic Business using eXtensible Markup Language) est proposé afin de permettre
aux entreprises de toutes tailles, opérant dans n'importe quel domaine, de collaborer avec toute
autre entreprise dans le monde. ebXML propose de nouvelles normes d'échanges pour le
17
Chapitre 2 Modélisation des processus d’affaires (Business Process Modeling -BPM)
commerce électronique B2B. L'échange entre les partenaires se fait par le biais de documents
XML sur Internet. Contrairement à RosettaNet, ebXML est une collection de normes
génériques qui ne dépendent d'aucun domaine d'affaires. Parmi les normes d'ebXML, nous
citons BPSS (Business Process Specification Schema) et CPP (Collaboration Protocol Profile).
La famille des normes ebXML aborde les domaines suivants :
- La norme BPSS pour décrire des processus d'affaires. Cette dernière sert à définir la
collaboration entre des partenaires (B2B) dans un processus d'affaires à travers les
transactions et les échanges de documents.
- La norme CPP permet aux entreprises de représenter les processus d'affaires qu'elles
supportent et comment elles les supportent.
- Un mécanisme pour enregistrer et rechercher des CPP à travers un registre public
(ebXML Registry Services).
- Un mécanisme pour établir la correspondance entre deux CPPs pour produire un accord
de collaboration (Collaboration Protocol Agreement, CPA).
- Une librairie de processus d'affaires de base (Core business processes) et les documents
qui couvrent les scénarios d'affaires les plus fréquents.
18
Chapitre 2 Modélisation des processus d’affaires (Business Process Modeling -BPM)
19
Chapitre 2 Modélisation des processus d’affaires (Business Process Modeling -BPM)
20
Chapitre 2 Modélisation des processus d’affaires (Business Process Modeling -BPM)
21
Chapitre 3 : Les Web services
1. Introduction
Lorsque les interactions d’une SOA s'appuient sur Internet et sur les standards Web, on parle
de services Web. La conception des spécifications Web services a été menée dans l’objectif de
répondre au mieux aux enjeux de l’architecture SOA. Les Web services fournissent les bases
technologiques nécessaires pour réaliser l’interopérabilité entre les applications en utilisant
différentes plateformes, différents systèmes d’exploitation et différents langages de
programmation.
3.1.Architecture de référence
3.1.1. Les composants de l’architecture de référence
L’architecture de référence comporte trois composants de base qui sont (Figure 1) :
- Le fournisseur de service : c’est le propriétaire du service Web. Il représente
l’environnement d'hébergement et d'exécution du service. Il peut être considéré comme
«serveur» dans une architecture client/serveur. Il est constitué de trois couches de bases:
La couche de données : contient une ou plusieurs bases de données
La couche applicative : c'est la plateforme de développement qui assure
l'exécution du service Web
La couche de description : elle expose les fonctionnalités du service via un
fichier WSDL
- Le client : Le client est défini comme le consommateur du service. Il peut accéder à ce
dernier en échangeant avec le fournisseur des messages SOAP. Techniquement, le client
peut être une simple application Windows ou Web, comme il peut être un autre service
Web.
- L’annuaire des services : L’annuaire des services est un registre de description qui
offre aux fournisseurs le moyen de publier et d'indexer leurs services Web sur le réseau,
il permet, en outre, aux clients de rechercher les services publiés.
3.1.2. Etapes d’exécution des Services Web dans une architecture de référence
Les principales étapes d’exécution des services Web dans l’architecture de référence sont
(Figure 2) :
23
Chapitre 3 Les Web services
Figure 2 : Etapes d’exécution des Services Web dans une architecture de référence.
- Etape 1 : définition et description du service Web
Cette étape consiste à décrire ce que fait le service Web ainsi que la solution qu’il
propose. La définition est faite en WSDL au sein du fournisseur de services Web.
- Etape 2 : publication du service Web
Cette étape consiste à publier le service Web dans un annuaire dédié UDDI afin de le
rendre accessible aux clients.
- Etape 3 : recherche du service Web
Dans cette étape le client se connecte, sur un annuaire UDDI pour effectuer une
recherche de service Web correspondant à ses besoins.
- Etape 4: récupération des informations de description du service et enregistrement
du client
Dans cette étape, le service Web trouvé par le client, récupère de l’annuaire UDDI la
description du service au format WSDL puis s’enregistre auprès du fournisseur associé
au service Web. Cet enregistrement indique au fournisseur l’intention du client
d’utiliser le service Web suivant les conditions décrites dans la publication.
- Etape 5 : connexion au service Web
Cette étape permet d’assurer la communication entre le composant demandeur du
service et le fournisseur de service à travers des Wrappers (listener et proxy). Pour cela,
le proxy du composant demandeur émet une requête SOAP au composant fournisseur
du service. Le protocole HTTP véhicule le message SOAP jusqu’au listener du
fournisseur du service.
24
Chapitre 3 Les Web services
25
Chapitre 3 Les Web services
XML est un sous ensemble du SGML (Standard Generalized Markup Language), c’est un
langage balisé, issu d’une recommandation W3C, ayant pour but d’encoder tout type de
données, indépendamment du code machine de celle-ci. Il a été développé dans le but de
partager facilement des données entres différents systèmes et en particulier à travers un réseau
type internet en séparant le contenu (données) du contenant (présentation des données).
XML est devenu une famille très large de standards variés, il est utilisé dans tous les standards
des services Web, soit WSDL, UDDI, SOAP. Parmi les spécifications XML on trouve :
- XSD (XML Schema) : c’est un langage qui sert à décrire formellement un vocabulaire.
- XSLT (Extensible Stylesheet Language Transformation) : utilisé pour transformer un
document XML basé sur un schéma en un autre document XML qui peut être un
document lui-même basé sur un autre schéma.
- XPath (XML Path Language) : fournit une syntaxe d’expression utilisée pour créer des
chemins de localisation.
4.2. SOAP (le protocole de communication des Services Web)
SOAP (Simple Object Access Protocol) ou (Service Oriented Architecture Protocol) est un
protocole pour l’échange d’informations dans un environnement reparti, basé sur le standard
XML. Il permet la communication entre composants, logiciels et applications en s’appuyant sur
des protocoles standards de type http, smtp,…etc.
SOAP définit un ensemble de règles pour structurer des messages qui peuvent être utilisés dans
de simples transmissions unidirectionnelles, mais il est particulièrement utile pour exécuter des
dialogues requête-réponse RPC (Remote Procedure Call). Il n’est lié à aucun système
d’exploitation ni à aucun langage de programmation. Ce qui permet donc, aux dialogues entre
clients et serveurs de pouvoir tourner sur n'importe quelle plate-forme et de pouvoir s’écrire
dans n'importe quel langage du moment qu'ils puissent formuler et comprendre des messages
SOAP.
Un message SOAP est constitué d’une enveloppe qui contient deux sous-éléments spécifiques
à SOAP à l'intérieur : un env:Header (en-tête) et un env:Body (corps) (Figure 4). Les contenus
de ces éléments sont définis par l'application et ne font pas partie de la spécification de SOAP.
26
Chapitre 3 Les Web services
Enveloppe SOAP
- L'en-tête SOAP : c’est un élément optionnel. Il peut avoir plusieurs fils (SOAP blocks).
Ces fils sont utilisés pour ajouter les fonctionnalités au message comme
l’authentification et la gestion des transactions. Ceci permet d'étendre un message
SOAP de manière spécifique à l'application.
- Le corps SOAP : c’est un élément obligatoire. Le corps SOAP contient l’information
destinée au receveur. Il doit fournir le nom de la méthode invoquée par une requête, ou
le nom de la méthode pour générer la réponse. Il doit aussi, fournir l’espace de nom
correspondant au nom du service. Le corps SOAP peut contenir un SOAP fault. Ce bloc
est utilisé pour transmettre l’information des erreurs durant le traitement du message.
27
Chapitre 3 Les Web services
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Body>
<m:GetPrice xmlns:m="http://www.w3schools.com/prices">
<m:Item>Apples</m:Item>
</m:GetPrice>
</soap:Body>
</soap:Envelope>
On remarque que les éléments m: GetPrice et Item sont des éléments spécifiques à l’application
- Exemple de réponse :
Le prix des pommes est 1,90. Une réponse SOAP est la suivante :
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Body>
<m:GetPriceResponse
xmlns:m="http://www.w3schools.com/prices">
<m:Price>1.90</m:Price>
</m:GetPriceResponse>
</soap:Body>
</soap:Envelope>
28
Chapitre 3 Les Web services
Enveloppe
SOAP
Exemple :
La requête http :
POST http://localhost:8080/NotebookWebService/notebook HTTP/1.1
Content-Type: text/xml; charset=UTF-8
SOAPAction: ""
User-Agent: Jakarta Commons-HttpClient/3.1
Host: localhost: 8080
Content-Length: 459
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Body>
<m:GetPrice xmlns:m="http://www.w3schools.com/prices">
<m:Item>Apples</m:Item>
</m:GetPrice>
</soap:Body>
</soap:Envelope>
La réponse http :
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/xml; charset=utf-8
Transfer-Encoding: chunked
Date: Sun, 13 Dec 2009 12:00:33 GMT
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Body>
<m:GetPriceResponse
xmlns:m="http://www.w3schools.com/prices">
<m:Price>1.90</m:Price>
</m:GetPriceResponse>
</soap:Body>
</soap:Envelope>
29
Chapitre 3 Les Web services
30
Chapitre 3 Les Web services
Service
Définition
d’implémentation d’un
Port
service
Binding
PortType
Définition d’interface d’un
service
Message
Type
31
Chapitre 3 Les Web services
- Les Types
Ici le type de donnée ‘commande’ est décrit ci-dessous comme une date et une liste non vide de
produits à commander, chacun dans une quantité non nulle donnée.
<types>
<schema targetNamespace="http://www.yothuyindi.fr:8080/exemple/fournisseur.xsd">
<xsd:complexType name="Commande"><xsd:sequence>
<xsd:element name="dateCommande" type="xsd:date">
<xsd:element name="LigneDeCommande" minOccurs="1" maxOccurs="unbounded">
<xsd:complexType><xsd:sequence>
<xsd:element name="RéférenceProduit" type="xsd:string"/>
<xsd:element name="Quantité" type="xsd:positiveInteger"/>
</xsd:sequence></xsd:complexType> </xsd:element>
</xsd:sequence></xsd:complexType>
</schema>
</types>
- Les Messages
Ici, le document décrit deux messages pour l'interaction : le premier message est la requête
reçue par le service, l'autre est l'accusé de réception renvoyé. Les valeurs fournies pour les
attributs élément sont des noms de types XML Schema ou définis dans la partie types ci-dessus.
<message name="SoumissionBdC">
<part name="body" element="xsdl:Commande"/>
</message>
<message name="RecepisseBdC">
<part name="body" element="xsd:string"/>
</message>
- Le Type Port
Ici les opérations offertes par le service sont exposées par le biais de points d'entrée. Un point
d'entrée (élément portType) fournit la signature de chaque opération et doit par la suite être
associé à une implantation particulière (voir plus loin la description de la partie binding). WSDL
permet l'existence de plusieurs points d'entrée dans un même document. Ainsi, la même
opération peut être rendue disponible au travers d'implantations différentes. Les valeurs des
attributs message font référence à un message défini plus haut (élément message du document
WSDL). La définition de la signature d'une opération s'appuie sur trois sous éléments possibles
: input pour le message en entrée, output pour celui en sortie et fault pour un message d'erreur
émis par le service.
32
Chapitre 3 Les Web services
<portType name=pt_RecevoirBdC>
<operation name="op_Commande">
<input message="wsn:SoumissionBdC">
<ouput message"=wsn:RécépisséBdC">
</operation>
<operation name=...
..............
</operation>
</portType>
- La liaison (Binding)
La dernière partie du document WSDL fixe la mise en correspondance entre chaque point
d'entrée (un ensemble d'opérations) et son implantation, et permet de définir quels services sont
associés à quelle mise en correspondance. Dans le fragment donné ci-dessous, l'implantation
des points d'entrée s'appuie sur SOAP.
33
Chapitre 3 Les Web services
contacts), pages jaunes (services classés par catégories industrielles) et pages vertes
(information d’implémentation des services Web proposés) (figure 7). Ainsi, UDDI se présente
comme un ensemble de bases de données utilisées par les entreprises pour enregistrer leurs
services Web ou pour localiser d’autres services Web.
- Pages blanches : elles référencient les noms, adresses, contacts, identifiants, etc., des
entreprises enregistrées. Ces informations sont décrites dans des entités de type
Business Entity. Cette description inclut des informations de catégorisation permettant
de faire des recherches spécifiques dépendant du métier de l’entreprise.
- Pages jaunes : elles contiennent des détails sur le métier de l’entreprise et les services
qu’elle propose. Ces informations sont décrites dans des entités de type Business
Service.
- Pages vertes : elles comportent des informations techniques sur les services proposés.
Elles incluent des références vers les spécifications des services Web et les détails
nécessaires à l’utilisation de ces services. Ces informations sont décrites dans deux
documents : un Binding Template et un Technology Model (tModel).
- Les tModels : Représentés par un schéma XML, Ils contiennent des informations
permettant de connaître les normes que respectent le service Web, le format des
messages, le protocole de transport utilisé et d’identifier la catégorie à laquelle
appartient le service.
34
Chapitre 3 Les Web services
<businessEntity>
nom, contacts, description, identités, catégories
<tModel>
Un annuaire UDDI offre plusieurs point d’entrées (API), mais les deux grandes
bibliothèques d’appels sont : l’API de requête utilisée par les utilisateurs des services Web pour
chercher et exploiter les services et l’API de publication pour publier les services Web par les
fournisseurs.
35
Chapitre 3 Les Web services
- Pages jaunes :
- Pages vertes :
- tModels :
36
Chapitre 3 Les Web services
Implémentation UDDI
<import>
BusinessEntity
<service> BusinessService
BusinessTemplate
<port>
BusinessTemplate
<port>
tModel
Interface
<types>
<messages>
<portType>
<Binding>
37
Chapitre 3 Les Web services
Fonctions Standards
Découverte UDDI, WSIL, ADS (Advertisement and Discovery of Services Protocol), ebXML.
Description WSDL, Daml-S, OWL-S, SAWSDL,
Echange SOAP, DIME (Direct Internet Message Encapsulation), SWAT (SOAP With Attachment).
SOAP-RP (SOAP-Routing Protocol), WS-Transaction (XML Web Services Transaction
Transaction Language)
BTP (Business Transaction Protocol)
SAML (Security Assertion Markup Language), XACML (XML Access Control Markup
Sécurité
Language), WS- Security (Web Services Security)
ebXML, XLang, XPDL (XML Pipeline Definition Language), WSFL (Web Services Flow
Gestion des
Language), WSCL (Web Services Conversation Language) , tpaML (Trading Partner
processus
Agreement Markup Language), BPWS (Business Process Execution Language)
Orchestration BPML (Business Process Management Language), BPEL4WS (Business Process Execution
Gestion de WSUI (Web Services User Interface), WSXL (Web Services eXperience Language), WSRP
l’interfaçage (Web Services for Remote Portals), WSCL (Web Services Component Model)
client
Pilotage des BTP, Biztalk, ebXML, RosettaNet
échanges B2B
Documents xCBL (XML Common Business Library), UBL (Universel Business Language)
commerciaux
38
Chapitre 3 Les Web services
Scénario Green-Field
Cette méthode décrit comment une nouvelle description de l’interface du service sera créée
pour un nouveau service Web. Dans ce scénario le processus de développement est comme
suit :
Construction :
Création d’un nouveau service Web : cette étape inclut la conception, le
développement et le test du service.
Génération de l’interface WSDL, qui décrit le service et la manière de son invocation.
La description de l’interface du service peut être générée à partir de l’implémentation
Nouveau Web du service (actuellement la plupart des plateformes de développement fournissent une
service génération automatique du code WSDL qui décrit le service Web).
+ Déploiement :
Interface du Publication de l’interface du service : La définition d'interface de service doit être
service n’existe pas publiée avant que le service ne soit déployé. L’interface du service est utilisée par un
demandeur du service pour déterminer comment accéder à un service. Un service
d’enregistrement (UDDI par exemple) est utilisé pour la fonction de publication, ce
dernier peut être publique ou privé tout dépend du contexte d’utilisation.
Déploiement du service Web : le code exécutable pour le service doit être fourni dans
l’environnement d’exécution.
Création de la définition de l’implémentation du service.
Publication de la définition de l’implémentation du service dans un service
d’enregistrement.
Exécution :
Exécution du service Web : le service Web est maintenant opérationnel, déployé dans
l’environnement d’exécution et publié dans un service d’enregistrement. Il peut donc,
être invoqué par les consommateurs.
Scénario Top-Down
Nouveau Web Cette méthode est utilisée lorsqu’un nouveau service Web peut être développé en se conformant
service à une interface existante. Ce type d'interface de service est habituellement une partie d'une
+ norme d'industrie qui peut être implémentée par n’importe quel nombre de fournisseurs de
Interface de services. Dans ce scénario, le processus de développement est comme suit :
service existe déjà Construction :
Trouver l’interface du service : cette dernière est supposée existante et publiée dans
un service d’enregistrement. Donc, la fonction de recherche est faite au niveau d’un
service d’enregistrement (annuaire UDDI, par exemple).
39
Chapitre 3 Les Web services
Scénario Bottom-Up
Cette méthode est utilisée lorsque les fonctionnalités existantes d’une application sont exposées
comme un service Web.
Construction :
Génération de l’interface du service : l’interface est générée à partir de
Application/service l’implémentation de l’application qui représente le service Web.
existe déjà Déploiement :
+ Déploiement de service Web.
Interface du Création de la définition de l’implémentation du service.
service n’existe pas Publication de l’interface du service.
Publication de la définition de l’implémentation du service.
Exécution :
Exécution du service Web.
Scenario Meet-in-the-Middle
Application/service Cette méthode est utilisée lorsque la description de l’interface du service existe déjà et
existe déjà l’application qui représente le service existe aussi. Le problème qui peut être posé dans cette
+ situation est que les fonctionnalités de l’application existante ne peuvent pas correspondre
Interface de exactement à la description de l’interface du service Web désiré.
service existe déjà
40
Chapitre 3 Les Web services
Pour régler ce problème, un enveloppe (Wrapper) peut être crée pour l’application existante qui
utilise la définition de l’interface du service. Dans ce scénario le processus de développement
est comme suit :
Construction :
Trouver l’interface du service qui sera utilisée pour implémenter le service Web
Création d’un gabarit (template) de l’implémentation du service en utilisant la
définition de l’interface du service trouvé
Développement du service d’enveloppement (service Warpper).
Déploiement :
Déploiement de services Web.
Création de la définition de l’implémentation du service.
Publication de la définition de l’implémentation du service.
Exécution :
Exécution du service Web.
41
Chapitre 3 Les Web services
De plus, contrairement à SOAP, les requêtes ne sont pas encapsulées dans une enveloppe, ce
qui réduit le cout de traitement, et elles ne sont pas limitées au XML. Elles peuvent contenir
des réponses au format CSV (Command Separated Value), JSON JavaScript Object Notation
ou encore RSS (Really Simple Syndication). Il est possible donc, d’obtenir la sortie dont on a
besoin sous une forme facile à analyser avec le langage dont on a besoin pour l’application.
La description d'une application Web RESTful est décrite par le langage WADL (Web
Application Description Language). Cette description contient le modèle des ressources
déployées, leur structure, types de supports, les méthodes HTTP, etc. Dans un sens, WADL est
un analogue de la WSDL (Web Service Description Language) qui décrit les services Web
SOAP. WADL est cependant spécifiquement conçu pour décrire les ressources Web RESTful.
Dans ce qui suit la figure 10 ainsi que le tableau 3 montrent la différence entre REST et SOAP.
42
Chapitre 3 Les Web services
SOAP REST
SOAP est un protocole. REST est un style d’architecture.
SOAP signifie Simple Object Access Protocol. REST signifie REPresentational State Transfer.
SOAP ne peut pas utiliser REST car c’est un REST peut utiliser les services Web SOAP car il s’agit d’un
protocole. concept et peut utiliser n’importe quel protocole comme
HTTP, SOAP.
SOAP utilise des interfaces de services pour exposer REST utilise l’URI pour exposer la logique métier.
la logique métier.
JAX-WS est l’API java pour les services Web SOAP. JAX-RS est l’API java pour les services Web RESTful.
SOAP définit les normes à suivre strictement. REST ne définit pas trop de normes comme SOAP.
SOAP nécessite plus de bande passante et de REST nécessite moins de bande passante et de ressources que
ressources que REST. SOAP.
SOAP définit sa propre sécurité. Les services Web RESTful héritent des mesures de sécurité du
transport sous-jacent.
SOAP autorise uniquement le format de données REST autorise différents formats de données tels que le texte
XML. brut, HTML, XML, JSON, etc.
SOAP est moins préféré que REST. REST plus préféré que SOAP.
43
Chapitre 4 : Exécution de processus d’affaires
1. Introduction
L’exécution d’un processus d’affaire revient à exécuter l’ensemble des activités (les services
qui le composent) de ce dernier dans un enchainement bien déterminé. Cette exécution possède
deux vues fondamentales et complémentaires à savoir : l’orchestration et la chorégraphie.
L'orchestration décrit la séquence des activités, leurs branchements et leurs synchronisations.
La chorégraphie permet de décrire les interactions, dans le cadre de la collaboration, entre les
activités.
Les processus d’affaire permettent de réduire considérablement les coûts des transactions.
Toutefois, plusieurs problèmes de coordination peuvent être posés lors de l’exécution de ces
processus. Pour dépasser ces problèmes, la technologie Workflow s’est imposée. Cette
technologie permet de rationnaliser, coordonner et contrôler un processus d’affaire. Ceci dans
le but d’assurer une bonne gestion de l'ensemble des tâches à accomplir et des différents acteurs
impliqués dans la réalisation de ce processus. Cette technologie est supportée par un ensemble
de langages entre autre le langage BPEL (Business Process Execution Langage) adopté pour
l’exécution des processus d’affaire.
Dans ce chapitre nous présentons les méthodes de l’orchestration et de la chorégraphie, le
moteur de Workflow ainsi que le langage BPEL.
2. Orchestration et Chorégraphie
2.1.Orchestration
L’orchestration décrit comment les services Web peuvent interagir entre eux selon une
perspective opérationnelle, avec des structures de contrôle, incluant l’ordre d’exécution des
interactions (la logique métier).
Les services Web ne savent pas (et non pas besoin de savoir) qu’ils sont invoqués dans une
composition et qu’ils sont une partie d’un processus métier complexe, seul le coordinateur
central de l’orchestration le sait et prend le contrôle de tous les services Web impliqués et
coordonne l’exécution des différentes opérations des services Web qui participent dans le
processus tel que schématisé dans la figure 1.
44
Chapitre 4 Exécution de processus d’affaires
2.2.Chorégraphie
La chorégraphie est, par nature, collaborative. Elle décrit les différents messages qui transitent
entre les différents acteurs d’un processus (les services), l’identité de ceux-ci n’étant pas
forcément encore connue. La chorégraphie permet la collaboration point-à-point entre plusieurs
services Web et donne ainsi une vision abstraite des échanges au sein d’un processus. Elle ne
permet en aucun cas une exécution, mais sert cependant de première spécification au processus
concret (orchestration) à réaliser. Elle permet la modélisation d’un point de vue global afin de
prendre en compte des situations de concurrences dans les environnements distribués et ainsi
donner une vue plus flexible. Contrairement à l’orchestration, la chorégraphie n’a pas de
coordinateur central. Chaque service Web impliqué dans la chorégraphie sait exactement à quel
moment ses opérations doivent être exécutées et avec qui l’interaction doit avoir lieu. La
collaboration dans la chorégraphie des services Web peut être représentée de la manière
suivante (figure 2).
45
Chapitre 4 Exécution de processus d’affaires
3. Moteur de Workflow
L’approche Workflow est une technologie clé pour l’automatisation des processus métiers.
Cette technologie supporte les processus métiers qui intègrent des applications ainsi que ceux
qui impliquent des tâches humaines. Elle décrit le circuit de validation, les tâches à accomplir
entre les différents acteurs d’un processus, les délais, les modes de validation, et fournit à
chacun des acteurs les informations nécessaires pour la réalisation de sa tâche.
L’effort majeur pour standardiser le Workflow a été fait par la WfMC (Workflow Management
Coalition). La WfMC définit un Workflow comme étant la vision automatisée de la totalité ou
d’une partie d’un processus durant laquelle des documents, des informations, ou des tâches sont
transmises d’un participant à un autre en suivant des règles procédurales.
La WfMC est un consortium international d’éditeurs de Workflow, d’utilisateurs, d’analystes
et de groupes de recherches, dont les objectifs sont la promotion des technologies de Workflow
et la définition de standards. La WfMC présente le méta-modèle de base pour représenter les
systèmes de Workflow. Ce méta-modèle souligne les éléments de base et les liens qui doivent
exister pour supporter l’automatisation d'un processus. Ce méta-modèle vise à établir un format
d'échange entre les différents modèles et outils de Workflow. Pour cela WfMC propose cinq
interfaces supportées par un ensemble de langages (Figure 3).
46
Chapitre 4 Exécution de processus d’affaires
47
Chapitre 4 Exécution de processus d’affaires
La définition d'un processus avec BPEL est constituée d’une partie déclarative des différents
éléments du processus suivie par une partie de description du processus (l’algorithme)
a. La partie déclarative
Elle permet de décrire :
- les messages échangés entre les services,
- les services appelés,
- les interactions entre les partenaires,
- les partenaires,
- les variables utilisées durant la collaboration d’affaires,
- le gestionnaire d'erreurs.
b. La partie de description
Pour cette partie BPEL offre des constructions comme des boucles, des branchements, des
variables, des assignements, etc. permettant de définir des processus métiers de manière
algorithmique. Dans cette partie les fonctionnalités les plus importantes offertes par BPEL
sont :
- Décrire la logique du processus métier à travers la composition de services.
- Composer des processus métiers complexes à partir de processus et de services plus
simples.
- Manipuler des invocations synchrones et asynchrones des opérations des services,
et gérer les callbacks qui viendront après.
- Supporter les activités séquentielles et les activités concurrentes
- Invoquer les opérations des services en séquence ou en parallèle.
- Maintenir des activités longues qui sont interruptibles.
- Reprendre des activités interrompues ou qui ont échoué pour minimiser le travail à
refaire.
- Router les messages entrants à l’activité ou au processus destinataire.
- Organiser les activités en se basant sur leur temps d’exécution et définir leur ordre
d’exécution.
- Exécuter les activités en parallèle.
- Intègrer des mécanismes de contrôle pour la gestion des flux des activités
4.1.Les principales instructions de BPEL
Un processus BPEL est composé d'étapes appelées activités. Il supporte les activités basiques
et les activités structurées
48
Chapitre 4 Exécution de processus d’affaires
49
Chapitre 4 Exécution de processus d’affaires
nouveau Web service utilise un ensemble d’entrées (port type) à travers lesquelles
il fournit des opérations comme n’importe quel autre Web service. Pour invoquer
un processus métier exécutable, on doit invoquer le Web service résultant. Dans la
majorité des cas BPEL est utilisé pour spécifier des processus exécutables.
b. Les processus métiers abstraits : Ils sont définis principalement pour deux
scénarios :
- Décrire le comportement du service sans savoir exactement dans quel
processus métier il va prendre place.
- Définir des protocoles de collaboration parmi plusieurs parties et préciser le
comportement externe de chaque partie.
50
Chapitre 5 : Formalismes pour les accords de niveau de service
1. Introduction
Dans le contexte des architectures orientées service, l'usager d'un service doit, au moins,
connaître la syntaxe des opérations qu'il souhaite utiliser. Pour cela, il utilise un contrat de
service dont la version la plus simple décrit la syntaxe de ce dernier. Le contrat peut être enrichi
par des informations non fonctionnelles telles que des informations sur le comportement et/ou
sur la qualité garantie de service. Ces données supplémentaires rendent le contrat négociable et
permettent, dans un environnement concurrentiel, à des services similaires provenant de
plusieurs fournisseurs de se distinguer.
On distingue quatre niveaux de contrat à savoir (figure 1) :
- Le niveau syntaxique : spécifie les opérations disponibles, les paramètres d'entrées et
de sorties requis et éventuellement les exceptions qui pourraient être levées durant ces
opérations.
- Le niveau comportemental : spécifie le comportement de chaque opération en utilisant
des assertions booléennes appelées pré-conditions ou post-conditions et invariants.
- Le niveau synchronisation : spécifie le comportement global d'objets en termes de
synchronisations entre appels de méthodes.
- Le niveau qualité de service (QoS) : a pour but de qualifier et quantifier la livraison
d'un service du point de vue de critères spécifiques à un domaine. Un service composé
d’un ensemble de fonctionnalités (propriétés fonctionnelles), peut-être décliné en
plusieurs services aux propriétés extra-fonctionnelles différentes, et donc de qualité
différente.
51
Chapitre 5 Formalismes pour les accords de niveau de service
SLA (Service Level Agreements) est un contrat souscrit entre le fournisseur d'un service et un
usager de ce service dans lequel sont définis les engagements de ces deux parties.
Ces engagements déterminent le niveau de service fourni ainsi que les pénalités encourues en
cas de manquement de part et d'autre, ils sont définis par des critères objectifs de qualité de
service pouvant être évalués par les deux parties. Bien que les accords de niveaux de services
52
Chapitre 5 Formalismes pour les accords de niveau de service
Le cycle de vie d’un accord de niveau de service se découpe en quatre phases (figure 2) : une
première phase qui conduit à la définition des grandes lignes de l’accord et fournit une base à
la négociation. Une fois négocié, l’accord peut optionnellement être revu et renégocié au cours
de sa vie. Enfin l’accord peut se prendre fin pour diverses raisons.
53
Chapitre 5 Formalismes pour les accords de niveau de service
telle mesure est indispensable mais elle implique la mise en place d'un système de
facturation.
- Décrire les procédures de mesure à utiliser. Les mesures peuvent être stockées pour
être réutilisées comme preuves en cas de litige entre les parties, ou bien servir à des
outils statistiques ou prévisionnels.
- Fixer une date pour la renégociation de l'accord. Cette date est en fait une date de
validité de l'accord. Comme les politiques des différents acteurs peuvent changer (prix
du service, volume autorisé, etc.) il est nécessaire d'avoir dans ces cas-là une phase de
renégociation.
3.2.La négociation
La négociation repose sur la recherche du compromis optimal entre les besoins et les capacités
de chaque partie dans les limites de ce que ces dernières peuvent offrir.
Au terme de la négociation les parties échangent leurs consentements pour exprimer l'accord
des volontés, qui se matérialisent à travers l’acceptation de l'offre. L’acceptation, qui peut être
tacite ou explicite, est l’adhésion au contenu précis de l’offre.
Il existe trois niveaux de négociation possibles, de la plus simple à la plus sophistiquée, à
savoir :
- Niveau sélection : la première forme de négociation tient plus de la simple sélection. Le
prestataire propose un SLA, et le consommateur a uniquement le choix de l’accepter ou
le refuser. S’il accepte, l’accord est valide tel quel, dans le cas contraire le
consommateur doit trouver un autre fournisseur.
- Niveau personnalisation : dans ce cas, le fournisseur laisse plus de choix aux
consommateurs. Il peut proposer différentes offres prédéfinies et fixes parmi lesquelles
le consommateur choisit celle qui lui convient. Il peut, en outre, proposer un contrat
dont certaines clauses sont négociables parmi lesquelles, le consommateur peut choisir
la qualité de service qu'il désire tout en restant dans des intervalles prédéfinis. Le choix
du consommateur peut, dans ce cas, avoir des répercussions sur le prix du service ou la
durée d'engagement par exemple.
- Niveau conversationnel : le dernier niveau, beaucoup moins courant, correspond à une
véritable négociation stricto sensu : l'accord est construit et élaboré par les différentes
parties qui en fixent les clauses au terme d’une discussion. Ce niveau peut être atteint
par la mise en place de stratégies et de politiques de négociation. Toutefois le gain dans
54
Chapitre 5 Formalismes pour les accords de niveau de service
la liberté de choix se fait au détriment du processus qui est plus complexe et implique
plus d’échanges que les deux premiers niveaux.
3.3.Renégociation
Au cours de sa vie, un accord de niveau de service peut être renégocié. Un nouveau besoin ou
de nouvelles offres de la part d'une des parties peuvent être à l’origine de cette renégociation.
La renégociation d'un accord peut aboutir à un simple prolongement de la durée, mais il est
aussi possible que les clauses du contrat soient renégociées partiellement ou même dans leur
totalité. La renégociation peut alors affecter la valeur d’un paramètre de qualité de service ou
toute autre modification de clause (politiques, tarifs, etc.). Par exemple, si un fournisseur
d'applications hébergées change son infrastructure, il peut proposer à ses clients une nouvelle
grille tarifaire, de meilleures performances (niveau de service plus haut), et les clients peuvent
soit accepter la renégociation, soit garder l’ancien contrat.
3.4.Fin de l’accord
Un accord de niveau de service peut se terminer pour trois raisons différentes :
- L'accord peut tout simplement ne plus être valide une fois que sa date d'expiration est
atteinte : il arrive à son terme.
- La violation d'une clause peut entrainer la rupture de l'accord et donc sa fin si une telle
mesure est stipulée dans les politiques.
- Si l'une des parties décide de mettre fin à l'accord, ce dernier n'est plus valide et la partie
ayant rompu le contrat peut être amenée à subir des pénalités.
55
Chapitre 5 Formalismes pour les accords de niveau de service
La surveillance des accords de niveau, assurée par le SLM, doit être déléguée à une partie tierce
de confiance choisie par les parties signataires de l'accord, pour un arbitrage impartial. Cette
tierce partie peut être constituée d'un seul ou de plusieurs auditeurs. Chaque auditeur est chargé
de prendre des mesures pour vérifier le respect des accords dont la surveillance lui a été confiée.
En cas de non-respect il doit appliquer les mesures décrites par les politiques de pénalité. Les
auditeurs jouent un rôle primordial dans le SLM et deviennent des acteurs à part entière qui
pourrait être nommés certifieurs de service.
Le langage WSLA est un langage de description d'accords de niveau de service basé sur WSDL.
La spécification WSLA intègre les différents concepts liés aux accords de niveau de service
(figure 3). Un accord de type WSLA est divisé en trois parties :
- les parties concernées par l'accord, c'est-à-dire les parties contractantes ainsi que les
parties tierces
- la description du service. Elle contient les opérations fournies par le service, le protocole
de transmission des messages, les paramètres d'accord de niveau de service, les critères
de qualité de service ainsi que les métriques associées à ces critères (les métriques
intègrent les fonctions et les algorithmes nécessaires aux mesures)
- les obligations qui concernent les garanties données par le fournisseur et les contraintes
qui lui sont imposées. De plus cette partie spécifie une date de validité de l'accord, des
formules permettant de détecter une violation de contrat et les actions à entreprendre en
cas de violation, ce qui correspond au principe de pénalité.
56
Chapitre 5 Formalismes pour les accords de niveau de service
57
Chapitre 5 Formalismes pour les accords de niveau de service
58
Chapitre 5 Formalismes pour les accords de niveau de service
5.3.WS-agreement
WS-agreement se positionne comme un standard émergent succédant à WSLA. La
spécification WS-Agreement définit un protocole pour l’établissement des accords entre
fournisseur et consommateur d’un service Web en utilisant un langage XML extensible, ainsi
que des modèles d’accords (templates) pour faciliter la découverte de parties compatibles.
WS-Agreement offre un langage formel riche pour l’expression des garanties et des besoins des
services Web, ce qui permet de capturer et représenter la nature complexe des accords de niveau
de service du monde réel. Les éléments constitutifs d’un accord sont (figure 6) :
- le nom : représente le nom de l’accord. Il est optionnel.
- le contexte : sert principalement à identifier les parties engagées dans l’accord et à
préciser sa durée de vie. Cette section peut aussi contenir des informations sur le modèle
ayant servi à la création de l’accord.
- les termes : cette section est composée de deux parties :
Les termes de service : décrivent les services concernés par l’accord, donnent
une référence vers ces services, et précisent les propriétés attachées à un service.
Ces propriétés désignent les critères de qualité de service qui seront réutilises
59
Chapitre 5 Formalismes pour les accords de niveau de service
60
Chapitre 5 Formalismes pour les accords de niveau de service
61
Chapitre 6 : Event driven architecture (EDA)
1. Introduction
L'EDA (Event driven architecture) est la suite logique de SOA, poussant le concept plus loin
et corrigeant ses défauts. Elle propose de repenser les interactions entre les différents éléments
qui composent un SOA. En effet, pour un SOA classique, un service bien identifié s'adresse à
un autre service bien identifié pour lui demander une information ou d'effectuer une action. En
réponse, son correspondant lui renvoie l'information. Ainsi, l’objectif de SOA était d'avoir un
couplage faible entre les services. Malheureusement, le fonctionnement par requête-réponse
impose une forte dépendance entre les services en termes de préconception. En effet, il nécessite
pour chaque service de savoir à qui il s'adresse. En plus il impose à chaque service de définir
de manière rigide les requêtes auxquelles il sait répondre et quelles réponses il enverra.
Pour outrepasser ces inconvénients, l’architecture EDA a été proposée. L'EDA est une
architecture logicielle reposant sur le principe d'un découpage de l'application en plusieurs
parties, interagissant entre elles uniquement par la diffusion d'évènements (asynchrones et sans
destinataires) en temps réel. En EDA, les seuls messages envoyés sont des évènements et ils
sont diffusés, c'est à dire qu'ils sont envoyés sans destinataire précis, donc sans qu'il y ait de
nécessité pour la source de savoir à qui ils s'adressent. Cela signifie que les différents
composants ne conserveront plus d'informations sur leur état ni sur celui du système. Toutes les
informations d'état doivent alors être contenues dans les évènements diffusés. Le fait que
l’architecture EDA permette de détecter ces évènements et d'y réagir intelligemment constitue
l'élément clé la caractérisant.
Dans ce chapitre nous présentons l’EDA à savoir : sa définition, ses composants, ses avantages
qui seront illustrés par un exemple.
62
Chapitre 6 Event Driven Architecture (EDA)
2. Définition de l’EDA
Une architecture orientée évènements est une architecture ayant la capacité de détecter ces
derniers et d’y réagir intelligemment. Elle peut être représentée sous forme de réseau ou sous
forme de flux.
- Un réseau décentralisé : On peut voir cette architecture comme un réseau décentralisé
(figure 1). Un ensemble d'agents, connectés à un système de transmission de messages,
reçoivent et diffusent des évènements. Les agents ont tous des rôles différents, certains
pouvant même assumer plusieurs rôles. Au-delà des agents qui sont à la frontière du
système, on trouvera alors l'ensemble des sources d'évènements, physiques ou
virtuelles, internes ou externes.
63
Chapitre 6 Event Driven Architecture (EDA)
Une architecture EDA est composée d’un ensemble d’évènements, un ensemble d’agents, un
diffuseur de messages et un processeur d'évènements (Figure 3).
3.1.Évènement
Un évènement est défini comme un changement d'état, c'est à dire une variation suffisamment
significative des paramètres définissant l'état système. N'importe quelle donnée apportant une
information inédite peut donc être considérée comme un évènement. Cette définition permet
d'inclure n'importe quelle occurrence ou non-occurrence d'une action, n'importe quelle variation
d'une valeur. Cela peut être :
Formellement, un évènement peut être défini à plusieurs niveaux, plus ou moins précis,
apportant chacun une information propre au système :
64
Chapitre 6 Event Driven Architecture (EDA)
3.2.Les agents
Les agents sont les éléments qui vont réellement effectuer le travail dans l'architecture. On
considère trois types d'agents : ceux qui produisent, ceux qui consomment et ceux qui
transforment les évènements. En pratique, un agent sera souvent une combinaison de ces
éléments, tour à tour consommateur et producteur d'évènements. Ils correspondent aux services
d'une architecture SOA. L’utilisation des agents permet, à l’EDA, de remplacer N connexions
directes par une connexion avec intermédiaires. Alors qu’en utilisant la SOA, il faut rendre les
éléments connectés compatibles entre eux de sorte qu’ils puissent parler le même langage et
ainsi communiquer. L’EDA n’impose qu’une chose : chaque élément doit être rendu compatible
avec le diffuseur de messages. Le but reste le même : rendre la communication possible. C’est
là qu’interviennent les agents. Ils vont faire office d’éléments de liaison, de traducteurs entre le
diffuseur et le reste de l’architecture.
La communication inter-éléments de l’EDA est assurée par les agents d’une part, et par le
diffuseur de messages d’autre part. Cet élément crucial et essentiel de l'architecture EDA doit
être conçu avec soin.
65
Chapitre 6 Event Driven Architecture (EDA)
3.4.Processeur d'évènements
Le processeur d'évènements, permet l’application d’une série de règles prédéfinies dans le but
d’apporter à l’EDA une certaine réactivité voire même, une certaine intelligence lors du
traitement des évènements. Une distinction est fréquemment faite entre trois types de
traitements :
On remarque que les deux premiers peuvent être vus comme des cas particuliers du troisième.
La distinction entre ESP et CEP est d'ailleurs remise en cause. De manière générale, les moteurs
de traitement d'évènements que l'on trouvera sur le marché seront qualifiés de moteurs CEP,
dont la définition permet d'inclure les trois types de processeurs. Bien que n'étant pas
exhaustive, la figure suivante permet de se faire une idée de la richesse et de la variété du
domaine des moteurs CEP.
66
Chapitre 6 Event Driven Architecture (EDA)
4. Avantages de l’EDA
- Analyse systémique : La caractéristique des composants d'un système EDA est d'être
sans état, c'est-à-dire dénués d'informations sur l'état global du système. Ceci permet
donc d'adopter une approche systémique : au lieu de devoir définir un ensemble de
processus métiers il est possible de s'intéresser simplement à l'état global tel que défini
à un instant donné par l'ensemble des évènements apparus. Cette approche est
particulièrement utile lorsque le système, trop complexe, ne peut être modélisé
simplement comme un ensemble de processus où chacun de ces processus est constitué
d'une séquence d'actions. L'approche systémique permet de prendre en compte
l'ensemble des variables du système plutôt qu'un sous-ensemble restreint de celles-ci :
en effet, chaque évènement est diffusé sans apriori sur l'usage qui va en être fait.
- Agilité : l'EDA permet un couplage extrêmement faible entre les différents composants.
Ce découplage est rendu obligatoire par la communication par évènement, ce qui incite
à un découpage en de nombreux sous-systèmes plutôt qu'un système monolithique.
Comme le montre la figure 5, il s'agit du niveau de détail le plus bas. À un niveau au-
67
Chapitre 6 Event Driven Architecture (EDA)
dessus, on se rend compte que cette architecture permet de mieux faire évoluer le
système, notamment par une réutilisabilité accrue des composants, et de mieux le
maintenir : on peut toucher à un composant du système sans que cela n'ait d'impact
majeur sur les autres. À un niveau encore au-dessus, on quitte les aspects techniques et
on constate que la facilité d'évolution et de maintenance rend le système agile, c'est à
dire capable d'être adapté rapidement et efficacement aux conditions changeantes du
métier qu'il sert. Ce sont déjà, évidemment, des avantages promus (et promis) par les
partisans de l'approche SOA. Il ne faut pas s'en étonner, puisque l'EDA est
l'aboutissement d'une réflexion sur les améliorations possibles à celle-ci. Dès lors,
l'EDA va plus loin dans la promotion de ces avantages et permet de les exploiter plus
facilement et plus efficacement.
68
Chapitre 6 Event Driven Architecture (EDA)
Pour mieux visualiser les avantages de l’EDA vis-à-vis la SOA nous allons appliquer les deux
architectures sur le même exemple ‘une usine de fabrication de voitures’ qui possède :
1- Un serveur hébergeant une base de données pour recueillir et stocker toutes les
données de leur système informatique
2- Une pointeuse pour le personnel
3- Un ordinateur pour la gestion du personnel
Dans cet exemple, on s’intéresse uniquement aux interconnexions résultants entre les éléments
1, 2 et 3 suite à l’utilisation des services qu’ils proposent entre eux, sans s’intéresser aux détails
des services.
Version SOA :
Selon SOA, pour les trois éléments de l’usine on peut envisager trois interconnexions (figure
6) :
- Serveur pointeuse : oui, car la pointeuse enregistre ses données sur le serveur
- Serveur ordinateur : oui, car l’ordinateur ajoute et puise des informations sur le
serveur
- Pointeuse ordinateur : non
69
Chapitre 6 Event Driven Architecture (EDA)
Version EDA
Maintenant, si nous appliquons les principes de l’EDA à notre exemple, il faut ajouter :
- Un diffuseur de messages
- Un processeur d'évènements
- Un agent par élément (diffuseur exclus)
En les interconnectant de la manière qui convient (chaque élément avec son agent, chaque agent
avec le diffuseur), nous obtenons l’architecture décrite par la figure 8.
En termes de nombre d’interactions, nous constatons que l’EDA a permis de minimiser ces
derniers par rapport à SOA. Dans l’architecture EDA, tous les éléments sont indirectement
interconnectés. En réalité, c’est au niveau software que les liens entre éléments seront gérés.
70
Chapitre 6 Event Driven Architecture (EDA)
Contrairement à l’architecture SOA dans laquelle, il a fallu ajouter trois connexions ; une seule
connexion a été requise pour l’EDA : celle entre l’élément et le diffuseur de messages. En plus,
l’EDA n’a pas nécessité de connaître au préalable, les éléments devant être en liaison avec
l’ordinateur du patron. Ce qui évidemment n’était pas le cas lors de la réalisation de
l’architecture SOA équivalente.
71
Chapitre 7 : Conception des SOA
72
Chapitre 7 Conception des AOS et gouvernance
73
Chapitre 7 Conception des AOS et gouvernance
L’approche SOMA est une approche à la fois descendante et ascendante qui tient compte des
besoins métier. Cependant SOMA ne propose pas de description ouverte de sa méthode ce qui
rend difficile l’analyse de ses capacités réelles.
74
Chapitre 7 Conception des AOS et gouvernance
75
Chapitre 7 Conception des AOS et gouvernance
76
Chapitre 7 Conception des AOS et gouvernance
des services Wrapper exposant la logique qui réside dans les applications de
l’entreprise.
- Le service hybride : ce type de service encapsule à la fois la logique métier et la logique
applicative.
3.2.Les phases de la méthode Erl
Les phases de la méthode Erl sont (figure 4) :
- La 1ère phase : cette phase consiste à décomposer les processus métiers déjà
cartographiés en un ensemble d’étapes (steps).
- La 2ème phase : après avoir identifié les étapes des processus précédemment, il faut
éliminer les étapes inappropriées qui ne peuvent pas être encapsulées par des services
telles que les étapes réalisées manuellement.
- La 3ème phase : cette étape consiste à identifier les services potentiels en regroupant les
étapes qui semblent appartenir à un même contexte. Chaque étape pourra correspondre
à une opération au sein d’un service.
- La 4ème phase : il s’agit d’identifier les logiques métiers issues de l’étude des processus.
L’objectif d’une telle identification est de sélectionner les étapes éligibles au rang
d’opérations de services.
- La 5ème phase : consiste à appliquer la logique de la SOA aux services potentiels
préalablement définis. Il s’agit d’appliquer deux principes de base de la SOA aux
services métier à savoir : la réutilisation et l’autonomie.
- La 6ème phase : cette phase consiste à définir les services composites. Ceci se réalise à
travers la construction des différents processus métiers par composition des services.
Ainsi, il sera plus facile de détecter le besoin de développer un nouveau service ou
encore le besoin d’ajouter une opération à un service.
- la 7ème phase : se charge d’étudier les besoins fonctionnels de chaque opération d’un
service. Ces besoins seront pris en considération dans la phase suivante.
- la 8ème phase : cette phase permet d’identifier les opérations des services applicatifs à
partir des besoins d’implémentation exprimés dans la phase précédente.
- la 9ème phase : les opérations appartenant à un même contexte seront regroupées afin
d’identifier les services applicatifs.
- la 10ème phase : dans cette phase les services applicatifs vont être vérifiés dans la phase
suivante afin de s’assurer qu’ils sont réutilisables et autonomes.
77
Chapitre 7 Conception des AOS et gouvernance
- la 11ème et la 12ème phase : ces deux dernières phases du processus consistent à revoir
les services déjà identifiés ainsi que leurs opérations.
78
Références
3. Bell Marks. (2006). Service-Oriented Architecture : A planning and implementation guide for business
and technology.
4. Erl Thomas. (2008). SOA principles of Service Design, Indiana, Prentice Hall.
5. Erl Thomas. (2006). Service-Oriented Architecture, Concept, Technology, and Design, Indiana, Prentice
Hall.
6. Fournier-Morel, Pascal Grojean Dunod (2017). SOA microservices API management. Le guide de
l'architecte d'un SI agile de Xavier 4ème éd.
7. Jehan Bruggeman. (2010). Prototypage d'une application basée sur les Architectures Orientées
évènements : Application à la gestion d'essais cliniques. Mémoire de fin d’études. Pôle Universitaire
Européen Bruxelles Wallonie.
8. Lionel Touseau. (2005). Accords de niveau de service dans les plateformes dynamiques à services.
Mémoire de master. Université Joseph Fourier (Grenoble 1).
9. Molay El Mehdi, Alaoui Selsouli. (2010). Test Unitaire de Processus BPEL : Génération Orientée
Chemins de cas de Test. Université Du Québec À Montréal.
10. Lionel Touseau. (2010). Politique de Liaison aux Services Intermittents dirigée par les Accords de Niveau
de Service. THESE de doctorat. Universite de Grenoble.
11. Renaud Marteleur. (2011). Implémentation d’une architecture EDA pour le suivi de patients d’unités de
soins intensifs. Mémoire de Fin d’études. Université Libre De Bruxelles.
12. Youness LEMRABET. (2012). Proposition d’une méthode de spécification d’une architecture orientée
services dirigée par le métier dans le cadre d’une collaboration inter-organisationnelle. THESE de
doctorat. L’école centrale de lille.
13. Zerabi Soumaya. (2010). Passage d’une architecture classique vers une architecture orientée services :
Application à l’entreprise ENMTP. Memoire de Magistère. Universite De M’sila, Algeria.
14. Zoran Stojanovic, Ajantha Dahanayake. (2005). Service-Oriented Software System Engineering :
Challenges and Practices. IDEA Group, ISBN 1-59140-426-6.
15. https://www.plb.fr/formation/developpement/formation-soa,13-143.php.
16. https://www.nobleprog.be/formations-soa.
17. https://fr.coursera.org/learn/service-oriented-architecture.
18. https://fr.scribd.com/presentation/163299819/Cours-SOA-Service-Oriented-Architecture.
84