Publication et Traitement avec XSL - Freegeorges.gardarin.free.fr/Cours_XML_ISTY3/2-XML_WS.pdf ·...

Preview:

Citation preview

Publication et Traitement avec XSL

1. XPATH2. XSLT3. XSLFO4. Traitement de documents5. Conclusion

2

1. XPath : l'adressage XML

• XPath• Expressions de chemins dans un arbre XML• Permet de sélectionner des nœuds par navigation

XPath

Document XML

?

3

XPath

• XML Path Language• recommandation W3C pour expressions de chemins• acceptée le 16 novembre 1999• version 2 en cours d'élaboration

• Expressions de chemins communes à :• XSL• Xpointer (liens)• XQuery (queries)

• Xpath permet• de rechercher un élément dans un document• d'adresser toute sous partie d'un document

XPath

4

XPath - Parcours d'arbre

• XPath opère sur l'arbre d'un document

<livre auteur = "Hugo">

<titre>Les chatiments</titre>

<chapitre>

<section>Buonaparte </section>

<section>Neige</section>

</chapitre>

</livre>

racine

section

Auteur = "Hugo"

livre

Bonaparte

chapitre

Neige

chapitre

sectionLes chatiments

titre

XPath

5

XPath - Expression de chemins

• Une expression de chemins spécifie une traversée de l'arbre du document :• depuis un nœud de départ• vers un ensemble de nœuds cibles• les cibles constituent la valeur du cheminement

• Un chemin peut être :• absolu

• commence à la racine• /étape1/…/étapeN

• relatif• commence à un nœud courant• étape1/…/étapeN

XPath

6

Syntaxe et sémantique

• Cheminement élémentaire• direction::sélecteur [predicat]

• Directions • parent, ancestor, ancestor-or-self• child, descendant, descendant-or-self• preceding, preceding-sibling, following, following-sibling• self, attribute, namespace

• Sélecteur• nom de nœud sélectionné (élément ou @attribut)

• Prédicat• [Fonction(nœud) = valeur]

XPath

7

XPath - Exemples

• Sections d'un chapitre• /child::livre/child::chapitre/child::section• /livre/chapitre/section

• Texte du chapitre 1 section 2• /descendant::chapitre[position() = 1]

/child::section[position() = 2]/child::text()• //chapitre[1]/section[2]/text()

XPath

8

XPath - Synthèse

Pattern Exemple Signification

Nom section Sélectionne les éléments de nom donné

Nom[0] section[0] Sélectionne le premier élément ayant le nom donné

Nom[end()] section[end()] Sélectionne le dernier élément ayant un nom donné

| Droite|Gauche Indique une alternative (un nœud OU bien l'autre (ou les deux))

/ / Sélectionne le nœud racine d'une arborescence

/arbre/Nom /livre/chapitre Sélectionne les nœuds descendants par la balise de nom donné de l'arbre

* * Motif "joker" désignant n'importe quel élément

// //personne Indique tous les descendants d'un nœud

. . Caractérise le nœud courant

.. .. Désigne le nœud parent. Permet de remonter d'un niveau dans

l'arborescence

@ @nom Indique un attribut caractéristique (@nom désigne la valeur de l'attribut).

La notation @* désigne tous les attributs d'un élément

text() text() Désigne le contenu d'un élément (le texte contenu entre ses balises)

ID() ID('a2546') Sélectionne l'élément dont l'identifiant (la valeur de l'attribut ID) est celui

spécifié en paramètre

Comment() Comment() Désigne tous les nœuds commentaires

Node() Node() Désigne tous les noeuds

XPath

9

2. XSLT : la présentation

• Permet de transformer un document• régulier ou irrégulier• de XML à XML, XHTML est un cas particulier• De XML à présentation (HTML, texte, rtf, pdf, etc.)

• Un document est un arbre • Le processeur XSL parcourt l'arbre et applique les

règles de transformations vérifiées (à condition vraie) aux nœuds sélectionnés

• Un document est produit en sortie

XSLT

10

Publications avec XSL

• Plusieurs formats de publication pour un contenu

• XSL permet la présentation sur des terminaux variés

XSLProcessor

XML

Document

Format ( Postcript)

Format (XML)application

e.Commerce

format(WML)

Browser

(XHTML, DHTML, HTML)

Format (XML)pour Word,

Excel

XSLStylesheet

XSLT

11

Architectures

Fichier

Base de données

Affichage

•Affichage

•Traitement

S

E

R

V

E

U

R

XML

XML

Programme

XMLASPouJSP

XSLT

Processeur XSL

Affichage

HTML

HTML

XML

Processeur XSL

12

Les feuilles de style

• Une feuille de style XSL• est un document XML de racine <xsl:stylesheet>• contient une liste de règles de transformation

<xsl:template>

• Chaque règle (<xsl:template>) précise:• Une condition spécifiant le sous-arbre du document

d’entrée auquel elle s’applique (match=)• Une production spécifiant le résultat de l’application de la

règle (contenu)

• Il s'agit de règles de production classiques• If <condtition> then <production>• Codées en XML avec espace de nom xsl:

XSLT

13

Exemple de document

<?xml version="1.0" ?> <Guide>

<Restaurant Categorie="**"><Nom>Le Romantique</Nom><Adresse>

<Ville>Cabourg</Ville> <Dept>Calvados</Dept>

</Adresse></Restaurant><Restaurant Categorie="***">

<Nom>Les TroisGros</Nom><Adresse>

<Ville>Roanne</Ville> <Dept>Loire</Dept>

</Adresse></Restaurant>

</Guide>

XSLT

14

Exemple de feuille de style XSL

<?xml version="1.0" ?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/xsl"><xsl:template match="/">

<html><head><B>ESSAI XSL</B></head> <body><xsl:apply-templates/></body></html>

</xsl:template><xsl:template match="Guide">

<H1>BONJOUR LE GROUPE XML</H1> <H2>SUIVEZ LE GUIDE</H2>

<xsl:apply-templates /> </xsl:template><xsl:template match="Restaurant">

<P> <I>Restaurant :</I> <xsl:value-of select="Nom"/></P>

</xsl:template></xsl:stylesheet>

XSLT

15

Les règles de production

• Définition des règles par <xsl:template …>• Attributs

• match: condition de sélection des nœuds sur lesquels la règle s'applique (XPath)

• name: nom de la règle, pour invocation explicite (en conjonction avec <call-template>)

• mode: permet d'appliquer à un même élément des règles différentes en fonction du contexte

• priority: priorité, utilisé en cas de conflit entre deux règles ayant la même condition

• Exemples • <xsl: template match="/">• <xsl: template match="auteur" name="R1" priority="1">

XSLT

16

La génération du résultat

• Le contenu de l'élément <xsl:template> est la production de la règle:• Les éléments du namespace xsl sont des instructions qui copient des

données du document source dans le résultat• Les autres éléments sont inclus tels quels dans le résultat

• Instructions pour:• Parcourir l'arbre du document source• Copier le contenu du document source dans le résultat

• Parcours de l'arbre:• <xsl:apply-templates>, <xsl:for-each>

• Copie du contenu du nœud sélectionné:• <xsl:value-of select= … >

XSLT

17

Résumé des commandes

• <xsl:template>, définir une règle et son contexte

• <xsl:apply-templates />, appliquer les transformations aux enfants du nœud courant

• <xsl:value-of select … />, extrait la valeur d'un élément sélectionné à partir du nœud courant

• <xsl:for-each>, définir un traitement itératif

• <xsl:pi>, générer une processing instruction

• <xsl:element>, générer un élément

• <xsl:attribute>, générer un attribut

• <xsl:if>, définir un traitement conditionnel

XSLT

18

Processeurs XSLT

• Processeurs XSLT conformes à la spécification:• Apache Group (www.apache.org): Xalan• Oracle XDK (www.oracle.com): XML Parser/ XSL Proc.• MSXML .NET• James Clark (www.jclark.com): XT • Saxon• libXML, libXSLT (Unix C)

• Browser• Microsoft MSXML et IE 5 ou plus • Netscape supporte XSLT depuis la V6• Firefox Mozilla

• Editeur et debugger• Style Vision de Altova• Oxygen de Synchro• Stylus Studio de Data Direct• CookTop et Tidy (gratuit)

XSLT

19

Quelques éditeurs

- I BM XSL E d i t o r -

version: 1.0 preview release 2

platforms: Java

license: Free

developer: Alphaworks, IBM

revised: 21 jan 2000

Editeur multi-frame et outils de mise au point – Alphawork d'IBM

- S t y l u s S t u d i o -

version: 4.6

platforms: Windows NT/2000

license: Commercial; 30 day evaluation available.

developer: Excelon Corporation

revised: 06 mar 2003

Editeur de Excelon (Progress); creation XSL et mise au point

- X M LT r an s fo rm -

version: 1.1.0

platforms: Java

license: Commercial; free evaluation version available

developer: TIBCO Software Inc.

revised: 22 feb 2002

Editeur de Tibco pour les transformations XSL à XSL

XSLT

20

IBM XSL Editor

XML XSLT Rendu

XSLT

21

Bilan XSLT

• XSLT est un langage très puissant de transformation d'un arbre XML en un autre

• XSLT permet en particulier de publier des données XML sur le Web par transformation en un document HTML standard

• XSLT est très utilisé :• Pour publier des contenus XML• Pour transformer des formats (EAI, B2B)

XSLT

22

3. XSL-FO : le formatage

• Permet les mises en pages sophistiquées

• Objets de mise en forme applicables aux résultats avec XSLT

• Distinction• Formatage des pages• Formatage des objets à

l'intérieur des pages• Statiques• Dynamiques

XSL-FO

23

Principes

• Peut s'appliquer aux résultats des feuilles XSLT

XSL-FO

24

Organisation du document

• Un document FO est formé d'un élément fo:root qui comprend deux parties distinctes• une description des modèles de pages

• fo:layout-master-set• une description du contenu

• fo:page-sequence

• Le contenu comporte :• Des flux contenant les données mêmes du document • Des éléments statiques dont le contenu se répète sur les

pages (en-têtes courants, no de page, etc.)

XSL-FO

25

Objets de formatage

• Les objets de formatage sont multiples :• <fo:block>

• utilisé pour les blocs de textes, paragraphes, titres…• <fo:display-rule>

• ligne de séparation• <fo:external-graphic>

• zone rectangulaire contenant un graphisme (SVG)

• Ils possèdent de nombreuses propriétés • Pour un block on peut définir

• la marge gauche et droite • l’espace avant et après le paragraphe • la couleur du texte ………...

XSL-FO

26

Fonctionnalités

• Pages portrait ou paysage• Pages recto-verso • Page de tailles variées• Marges multiples• Colonnes multiples• Entête et pieds de page• Caractères unicode• Formatage multi-langages• Tables des matières

générées

• Multiple directions d'écritures

• Numérotation des pages• Graphiques et SVG• Tables, avec entêtes,

lignes et colonnes fusionnables

• Listes• Zones flottantes• Tris à l'édition• Notes de bas de pages

XSL-FO

27

XSL-FO: hello World

<?xml version="1.0" encoding="iso-8859-1"?>

<fo:rootxmlns:fo="http://www.w3.org/1999/XSL/Format">

<fo:layout-master-set><fo:simple-page-master master-name="my-page">

<fo:region-body margin="2 cm"/></fo:simple-page-master>

</fo:layout-master-set><fo:page-sequence master-reference="my-

page"><fo:flow flow-name="xsl-region-body"><fo:block>Hello, world!</fo:block>

</fo:flow></fo:page-sequence>

</fo:root>

• Element Root• Permet de définir le namespace XSL-FO

• Layout master set• Permet de déclarer une ou plusieurs page

masters (masque) et page sequencemasters pour définir la structure des pages (ici une de 2 cm de marges)

• Page sequence• Les pages sont groupées en séquences et

structurées selon la référence au masque.• Flow

• C'est le container du texte utilisateur dans le document. Le nom du flot lit le texte àune zone de la page définie dans le masque.

• Block• C'est le bloc de formatage qui inclut un

paragraphe de texte pouvant être produit pas XSLT.

XSL-FO

28

XSL-FO et XSLT : Exemple

• Définition de propriétés pour la racine• <xsl:template match=‘/’> <fo-

display-sequencefont-style=‘italic’start-indent=‘4pt’end-indent=‘4pt’font-size=‘18pt’ <xsl:apply-

templates/> </fo-display-sequence></xsl:template

• La définition d’une propriété locale est prioritaire devant l’héritage

XSL-FO

29

Les processeurs XSL-FO

• Apache Group : FOP • Formating Object Processor • Génère du PDF http://www.apache.org

• JFOR (Open Source) • Génère du RTF http://www.jfor.org

• Antenna House• XSL Formatter http://www.antennahouse.com

• RenderX• Génère du PDF http://www.renderx.com

• Altova• StyleVision http://www.altova.com/products_xsl.html

• XML Mind FO Converter• Génère du RTF http://www.xmlmind.com/foconverter

• Autres• Arbortext, Adobe, Scriptura, XMLPDF, APOC, XSL-FO to TeX

XSL-FO

30

Bilan XSL

• XML = format pour la production de publications échangeables sur le web :

• production d’une source unique en XML ;

• XSLT = génération automatique de présentations multiples ;

• XSL-FO = génération de présentations soignées avec pages maîtres et blocs formatés.

• XSL peut être vu comme le langage de programmation de XML …

• Questions ?

XSL

31

4. XML: le traitement par programme

DOM

Manipulationde l'arbreManipulationde l'arbre

Mal formé/Invalide SAX

événements – call back événements – call back

<ville>Paris</ville>

XMLXML

<ville>Paris</ville>

<pays>France</pays>

<temp

echelle="C">18</temp> Parser

Bien formé

Valide

XSLT

PDFPDF RTF, WordRTF, Word(X)HTML(X)HTML

<city>Paris</city>

<temp

degree="F">65</te

mp>

WMLWML XMLXML

<ville>Paris</ville>

<pays>France</pays>

<temp

echelle="C">18</temp>

XMLXML

XML

Schema

(ou DTD)

Mapping

XSLFO

XSL

Stylesheet

32

L'interface DOM

• Standard W3C fait pour HTML et XML• Structure d'objets pour représenter un document

• Résultat d'un "parser"• Arbre d'objets reliés entre eux

• Interface objet pour naviguer dans un document• Orientée objet• Peut être utilisée en:

• Java, C++• C#, VB • Python, PHP

DOM

33

Principaux parseurs

Document

XML

Parseur DOM

Arbre DOM

Application

API DOM

Sun, ...JAXP J2EE

OracleSDK Oracle

MicrosoftMSXML

Apache (Java, C++)Xerces

DOM

34

Exemple d'arbre DOM

<Guide><Restaurant id="R1">Le

meilleur restaurant</Restaurant>

</Guide>

Document

NodeList

NodeList

NamedNodeMap

Attr

Element

NodeList

Element

Text

Racine du document

<Guide>

<Restaurant>

Id="R1"

Le meilleur restaurant

DOM

35

L'arbre DOM

• Navigation via un arbre générique de nœuds• Node• NodeList (Parent/Child)• NamedNodeMap

• Tout nœud hérite de Node

ProcessingInstruction

<?xml:stylesheet ...>

DocumentType

<!DOCTYPE ...>

Element

<Restaurant ....>

....

Document

Child

DOM

Text

Le meilleur restaurant

Node

36

Quelques interfaces de base

• Document• createElement (Nom_Element):

• créer un élément avec le nom spécifié en paramètre.

• createComment (commentaire):• créer une ligne de commentaires

dans le document.• createAttribute (Nom_Attribut):

• créer un attribut avec le nom pris en paramètre.

• getElementsByTagName (nom_Tag):• retourne tous les descendants

des éléments correspondants au Nom_Tag.

• Nœud• insertBefore (Nouveau_Noeud,

Noeud_Reference): • insère un nouveau nœud fils avant le "

nœud référence" déjà existant.• replaceChild (Nouveau_Noeud,

Ancien_Noeud): • remplace le nœud "Ancien_Noeud" par

le nœud "Nouveau_Noeud".• removeChild (Nœud):

• supprime le nœud entré en paramètre de la liste des nœuds.

• appendChild (Nouveau_Noeud):• Ajoute un nouveau nœud a la fin de la

liste des nœuds.• hasChildNodes():

• Retourne vrai si le nœud possède un enfant

DOM

37

Autres interfaces

• Interfaces fondamentales• DOMImplementation• Document• Comment• DocumentFragment• Element• Attr(ibute)• NamedNodeMap• CharacterData

• Comment• Text

• Interfaces étendues XML• ProcessingInstruction• DocumentType• CDATASection• Notation• Entity• EntityReference

DOM

38

Exemple d'utilisation

Public class ExempleDOMpublic static main (String argc[]) throws IOException, DOMExcetion{XMLDocument xmlDoc = new XmlDocument();// creation des nœudsElementNode nom = (ElementNode) xmlDoc.createElement("nom");ElementNode prenom = (ElementNode) xmlDoc.createElement("prenom");ElementNode nomfam = (ElementNode) xmlDoc.createElement("nomfam");// creation de l'arbrexmlDoc.appendChild(nom);nom.appenChild(prenom);prenom.appendChild(xmlDoc.createTextNode("Jean");nom.appenChild(nomfam);nomfam.appendChild(xmlDoc.createTextNode("Dupont");// positionnement d'un attributnom.setAttribute("ville", "Paris");// sortieSystem.exit(0); } }

Document:

<nom ville ="Paris">

<prenom> Jean </prenom>

<nomfa> Dupont </nomfa>

</nom>

DOM

39

Bilan DOM

• Une interface objet standard• Navigation dans l'arbre XML• Traitements spécifiques

• Performance limitée• Place mémoire importante• Traitement à la fin de l'analyse

• DOM 2.0 • Accède dynamiquement au

contenu et à la structure du document

• Extensions en cours :• DOM Level 3 : XPath

• Support direct de XPath• Définition d'un XPath

Evaluator• Devrait être intégré aux

parsers• DOM Level 3 : Events

• Modèle d'événements• Associés à un nœud• Propagés dans l'arbre DOM

• DOM Level 3 : Style• Accès aux styles• Mapping complet

DOM

40

L'interface SAX

SAX

• SAX (Simple API for XML) • modèle simplifié d'événements• développé par un groupe indépendant.

• Types d'événement :• début et fin de document ;• début et fin d'éléments ;• attributs, texte, … .

• Nombreux parseurs publics• XP de James Clark, Aelfred, Saxon• MSXML3 de Microsoft• Xerces de Apache• JAXP de SUN

41

Principe de fonctionnement

Document

XMLParser

Evénement

startDocument

Evénement

startElement

Evénement

endDocument

….

Stream

XML

Méthodes

utilisateur

Content Handler

SAX

42

Les méthodes essentielles

• XMLReader• setContentHandler• setErrrorHandler• parse

• ContentHandler• startDocument• endDocument• startElement• endElement• characters

• ErrorHandler• fatalError• error• warning

SAX

43

Exemple SAX et DOM

personne

nom

prenom

adresse

rue

ville

#text: Cover

#text: Paris

#text: Stendhal

#text: Harry

startDocument ()

startElement (personne)

startElement (nom)

characters (Cover)

endElement (nom)

startElement (prenom)

characters (Harry)

endElement (prenom)

startElement (adresse)

startElement (rue)

characters (Stendhal)

endElement (rue)

startElement (ville)

characters (Paris)

endElement (ville)

endElement (adresse)

endElement (personne)

endDocument ()

<personne>

<nom>

Cover

</nom>

<prenom>

Harry

</prenom>

<adresse>

<rue>

Stendhal

</rue>

<ville>

Paris

</ville>

</adresse>

</personne>

SAX

44

DOM versus SAX

• DOM utilise SAX pour la construction de l’arbre d’un document XML

• SAX est plus léger que DOM

• Au-dessus de DOM, il est possible d ’implémenter un « method caller » ...

SAX

45

Integration : API JAXP

• Java API for XML Parsing• JAXP est une d'API standard J2EE permettant d'effectuer

des traitements XML qui englobe :• SAX (SAX 2.0)• DOM (DOM Level 2) • la manipulation de transformations XSLT

• Objectif• Fournir une couche d’abstraction permettant d’utiliser

n’importe quel analyseur SAX/DOM ou processeur XSL

• JAXP 1.3 est inclus dans Java WSDP 2.0, Java SE 5.0, et disponible sur Java.Net

46

5. Conclusion

• Un ensemble d’outils pour traiter du XML:• Analyseurs validants• Processeurs XSLT/XSLFO

• Intégrés aux serveurs d’applications• J2EE = JAXP• .NET = MSXML

• En évolution permanente

• Questions ?

Web Services

ObjectifsArchitectureProtocole web (SOAP)Composition de services web Position du marchéConclusion

48

1. Besoins des Applications Web

• Le Web classique• Conçu pour les applications à interactions humaines• Partage d'information• E-commerce de type B2C

• Extensions nécessaires• Accès à l'information depuis des programmes• Processus de e-commerce B2B automatisés• Interopérabilité entre applications• Plate-forme pour le calcul distribué

Introduction

49

Principes des services Web

• Proposer une plate-forme de traitement distribuée autour d'Internet/Intranet

• Permettre l'interopérabilité totale entre composants• Offrir un modèle de composants simple

• Modules avec interfaces de fonctions• Paramètres structurés et diversifiés en place des URL

longues contraignantes (ASCII, plats, ≤ 255)

• Permettre de découvrir dynamiquement les services• Annuaire de services et service de recherche

• Offrir des outils d'intégration de composants • A l'échelle de l'Internet ou de l'Intranet

Introduction

50

Exemple d'applications

• Diffusion d'information• horaires, incidents, états de stocks• cours de bourse, entrées d'annuaires, etc.

• Contrôle d'information• Autorisation de cartes de crédits• Authentification d'un client

• Documentation automatique• présentation, marketing, veille technologique• librairie électronique, manuels, maintenance, etc.• communication et "knowledge management"

• Commerce électronique• présentation, sélection, transaction, médiation, etc.

Introduction

51

2. Architecture Web Services

Architecture

Service

Requester

Service

Provider

Service

Provider

Service

Provider

Service

Provider

WEB-HTTP

CLIENT

Service

Registry

Request

Request

Request

Request

Publish

Publish

Publish

Publish

Find

SERVEUR

SERVEUR

SERVEUR

SERVEUR

SERVEUR

52

Qu'est ce qu'un Web Service ?

• Définition [W3C]• Un Web service est un composant logiciel identifié par une URI, dont

les interfaces publiques sont définies et appelées en XML.• Sa définition peut être découverte par d'autres systèmes logiciels. • Les services Web peuvent interagir entre eux d'une manière prescrite

par leurs définitions, en utilisant des messages XML portés par les protocoles Internet.

• Exposition• Langage WSDL utilisé pour décrire le service• Similaire à IDL mais basé sur XML

• Activation• Protocole Web au-dessus de HTTP (RPC XML, SOAP)• Autres protocoles possibles …

Architecture

53

Les Composants

• Service Provider (Fournisseur de service)• Application s'exécutant sur un serveur et comportant un

module logiciel accessible par IxxNet en XML

• Service Registry (Annuaires de service)• Annuaire des services publiés par les providers (UDDI)• Géré sur un serveur niveau application, entreprise ou

mondial

• Service Requester (Demandeur de service)• Application cliente se liant à un service et invoquant ses

fonctions par des messages XML (SOAP)

Architecture

54

Vue d'ensemble

HTTP/S

Description

of providers

and services

UDDI CategoryProvider

WSDLService

Publication

SOAP

Transport

SOAP Client

XMLService

Call

SOAP

TransportService

Service

Provider

Applicationdiscovery?

Architecture

55

Description des services: WSDL

• Elément Type• Types des paramètres (schéma XML)

• Elément Message• Appel et retour d'opération

• Elément Port type• Groupe d'opération

• Elément Binding• URL de l'opération• Type de protocole

Architecture

Service

Port(e.g. http://host/svc)

Binding(e.g. SOAP)

Abstract interface

portType

operation(s)

inMessage outMessage

Port

Binding

56

Description en WSDL

<definitions name = "..." xmlns: …><types>

<!--Définition des types de données; basés sur ceux des schémas --> … </types><message>

<!--Déclaration des messages (entrées et sorties)--> … </message><portType>

<!--Déclaration des opérations (par association des messages)--> … </portType><binding>

<!--Définition de la liaison WSDL – SOAP (noms d'actions et codages)--></binding>

<service name= " … " ><!--Déclaration des ports (groupes d'opérations et protocoles d'accès)-->…

</service></definitions>

Architecture

57

Exemple: GetLastTradePrice

• <?xml version="1.0"?> <definitions name="StockQuote">• <types> <schema> <element name="TradePriceRequest"> <complexType> <all> <element

name="tickerSymbol" type="string"/> </all> </complexType> </element> <element name="TradePrice"> <complexType> <all> <element name="price" type="float"/> </all> </complexType> </element> </schema> </types>

• <message name="GetLastTradePriceInput"> <part name="body" element="xsd1:TradePriceRequest"/> </message>

• <message name="GetLastTradePriceOutput"> <part name="body" element="xsd1:TradePrice"/> </message>

• <portType name="StockQuotePortType"> <operation name="GetLastTradePrice"> <input message="tns:GetLastTradePriceInput"/> <output message="tns:GetLastTradePriceOutput"/> </operation> </portType>

• <binding name="StockQuoteSoapBinding" type="tns:StockQuotePortType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="GetLastTradePrice"> <soap:operation soapAction="http://example.com/GetLastTradePrice"/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding>

• <service name="StockQuoteService"> <documentation>My first service</documentation> <port name="StockQuotePort" binding="tns:StockQuoteBinding"> <soap:address location="http://example.com/stockquote"/> </port> </service>

• </definitions>

Architecture

58

Annuaire des services: UDDI

• Universal Description, Discovery and Integration

• Annuaire des services• décrit par un document• WSDL, spec. EJB, autre …

• Accessible en SOAP• Fonctions

• Enregistrer votre société• Enregistrer des services• Enregistrer des opérations• Découvrir des services• …

Annuaire

UDDI

Gérant de

requêtes

Enveloppe

+

Document

Programme

Dde de

Service

Annuaire

UDDI

Architecture

59

Contenu de l’annuaire

• Pages blanches (businessEntity)• BusinessKey• Name• Description• CategoryBag• BusinessServices

• Pages jaunes (businessService)• ServiceKey• BusinessKey• Name• Description• CategoryBag• BindingTemplates

• Pages vertes (bindingTemplates)• BindinKey• ServiceKey• Description• AccessPoint

• Contenu défini par un schéma XML• Spécifications pour réplication

BusinessEntityBusinessEntity

BusinessServiceBusinessService

BindingTemplatesBindingTemplates

tModeltModel

publisherAssertionpublisherAssertion

Spécifs de services

et taxonomies

Relations entre

deux partiesInfos techniques

Architecture

60

Principaux fournisseurs

• IBM UDDI Registry• Un registre UDDI avec des fonctionnalités de recherche• www-3.ibm.com/services/uddi/

• Microsoft UDDI Business Registry (UBR)• uddi.microsoft.com/default.aspx

• SAP UDDI Business Registry• Public pour l'instant

• Systinet Registry• Support complet de UDDI V3• www.systinet.com/products/sr/overview

• Oracle Application Server UDDI Registry• otn.oracle.com/tech/webservices/htdocs/uddi/

Architecture

61

Client Web de Recherche

Architecture

62

3. SOAP

• Inspiré du RPC DCE adapté à XML• Appel de procédure distante sur Internet

Appelant

Appelé

Appelant

Appelé

Souche Réseau d'interconnexion

Souche

Stub ouProxy

Skeleton ouListener

SOAP

63

Qu'est-ce-que SOAP ?

• Simple Object Access Protocol • Ni simple, ni objet …

• Invocations de fonctions en XML au-dessus de HTTP :• Pour accéder services, objets et serveurs• Indépendant de toute plate-forme

• Codage universel XML par opposition aux spécifiques :• DCOM - DCE/NDR• CORBA - IIOP/CDR• JAVA - RMI/JRMP• RDA - XDR

• Résolution des problèmes de session, sécurité, transaction …• Associé à WSDL pour publication d'interfaces

SOAP

64

Un échange type

Application Cliente

Parser XML

Procuration

d'interface

Translateur

SOAP

Parser XML

Serveur

d'application

Messages

SOAPAppel

Réponse

HTTP

RPC

local

Port de connexion (URL)

Pare-feu Pare-feu

SOAP

CLIENT SERVEUR

65

Eléments d'un message

• Envelope• Élément pouvant contenir des déclarations d'espaces de

noms ou des sous-éléments

• Header• Élément optionnel fils de Envelope• Permet des extensions telles que authentification, session,

etc.

• Body • Élément obligatoire fils de Envelope• Définit la méthode appelée, contient les paramètres• Peut contenir un élément Fault en cas d'erreur

SOAP

66

Structure d'un message

Protocol Headers

SOAP Envelope

SOAP Header

SOAP Body

Entête de protocoles (HTTP, SMTP, …)

<Envelope>

<Header>

<Body>

SOAP

67

Exemple

• www.stockquoteserver.com• float GetLastTradePrice (Symbol)

• Le dialogue :

Application

Middleware

SOAP

HTTP

Application

Middleware

SOAP

HTTP

www.stockquoteserver.com

Request

Reply

Error

www.xquark.org

SOAP

68

La requête

• POST /StockQuote HTTP/1.1Host: www.stockquoteserver.comContent-Type: text/xml; charset="utf-8"Content-Length: nnnn

SOAPAction: "Some-URI#GetLastTradePrice"

<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap"><SOAP:Body>

<m:GetLastTradePrice xmlns:m="Some-URI"><symbol>DIS</symbol>

</m:GetLastTradePrice></SOAP:Body>

</SOAP:Envelope>

Standard HTTP

SOAP

69

La réponse

• HTTP/1.1 200 OKContent-Type: text/xml; charset="utf-8"Content-Length: nnnn

<SOAP:Envelopexmlns:SOAP="http://schemas.xmlsoap.org/soap"/>

<SOAP:Body><m:GetLastTradePriceResponse xmlns:m="Some-URI">

<Price>34.5</Price></m:GetLastTradePriceResponse>

</SOAP:Body></SOAP:Envelope>

Standard HTTP

SOAP

70

Exemple: Google

• Search requests• Soumet une requête avec un ensemble de paramètres à

Google Web APIs service et reçoit en réponse un ensemble de résultats de recherche.

• Cache requests• Soumet une URL à Google Web APIs service et reçoit en

réponse le contenu de l'URL lors de la dernière visite du crawler Google.

• Spelling requests• Soumet une requête à Google Web APIs service et reçoit

en réponse une suggestion de correction orthographique pour la requête.

SOAP

71

Bilan SOAP

• Protocole d’invocation de services Web • Lisible et extensible• Au-dessus de HTTP• Passant les firewalls• Description en WSDL• Pousser par Microsoft, IBM,

BEA, …

• CORBA ou DCOM « killer »?• Associé à nomination des

objets• Véritable échange de

messages entre objets• Performance ?

• Questions ?

SOAP

72

4. Orchestration de Services Web

• Objectifs• Modéliser des processus

métiers (business process)

• Composer des services Web distribués

• Piloter l'exécution• Orchestration d'activités• Echanges XML• Gestion de transactions

• Business Process Management• Transaction• Workflow

• Exemple : réservation

BPM

Début

RéserverAvion

LouerVoiture

RéserverTrain

RéserverHotel

OK ?

OK ?

OK ?

OK ?

Echec

Echec

Echec

Succès

oui

oui

oui

oui

non

non

non

non

73

Exemple : Pilotage Fabrication

Fournisseur

ERP

Usine

Partenaire

Echange B2B

Mainframe

Serveur d'entreprise

Interface

XML

XML

XML

XML

XML

XML

Client

WEB

BPM

74

Les briques à standardiser

Description

HTTP, IIOP, JMS, SMTP Transport

XMLMessage

SOAP

WSDL

UDDI Discovery

Transactions

CoordinationWS-SecurityWS-ReliabilityQuality ofService

Orchestration - BPEL4WS

BusinessProcesses

Context

Description

Managem

ent

Choreography - CDL4WS

75

Composition de services

• Objectifs:• Alliances entre business pour offrir des services intégrés à

valeur ajoutée en combinant des services existants • Réutilisation et extension de services existants • Support pour la planification, la définition et

l'implémentation de services composés• Développement d'applications distribuées composées de

services web

BPM

76

Quelques définitions

• Processus métier (Business Process)• Module fonctionnel réalisé par enchaînement d'activités

business exécutées par des acteurs échangeant des messages et implémentant les objets et règles spécifiques à une entreprise.

• Orchestration d'activité (Activity Orchestration)• Mécanisme d'invocation, de contrôle et de coordination des

activités participant à la réalisation de processus d'affaire.

• Composition de services (Services Composition)• Techniques permettant d'assembler des services Web pour

réaliser des processus métiers par des primitives de contrôles (boucles, tests, traitement d'exception, etc.) et d'échanges (envoi et réception de messages).

BPM

77

Modélisation par Workflow

• Graphe acyclique d'activités modélisant un processus métier

BPM

Les activités représentent les unités de traitement

Les liens de données définissent le flux d'information.

[ WS]

Les activités peuvent être d'autres business process

Les liens de contrôle définissent le flux d'exécution

Les activités correspondent à des services Web

78

Exemple

• Modélisation en XML• Langage d'orchestration • Chorégraphie d'activités

<activity name="demandePaiement">

<join condition=”(reserverVoiture OR reserverAvion) AND reserverHotel” when=”deferred”>

</activity>

<activity name="reserverAvion">….

commandeVacances

reserverHotelreserverVoiture reserverAvion

demandePaiement

BPM

Com

mande/classe=1

Commande/classe=2

reserverVacances

79

Vers un standard ?

BPM

2000/05

XLang(Microsoft)

2001/03

BPML(Intallio et al)

2001/05

WSFL(IBM)

2001/06

BPSS(ebXML)

2002/03

BPEL4WS 1.0

(IBM, Microsoft)

BPEL4WS 1.1(OASIS)

2002/06 2003/01

WS-Choreography(W3C)

2003/04

WSCI(Sun et al)

WSCL(HP)

2002/08

80

BPEL: Processus composé d'activités

• Compositions des web services synchrones et asynchrones • Véritable langage de programmation parallèle codé en XML• Assignation de variables locales et globales

BPM

81

Exemple BPEL

<sequence>

<receive partnerLink=“customer” portType=“lns:purchaseOrderPT"

operation=“sendPurchaseOrder” variable=“PO”

createInstance="yes" />

<flow>

<invoke partnerLink=“inventoryChecker” portType=“lns:inventoryPT”

operation="checkINV" inputVariable="inventoryRequest"

outputVariable="inventoryResponse" />

<invoke partnerLink="creditChecker" portType=“lns:creditPT"

operation="checkCRED" inputVariable="creditRequest"

outputVariable="creditResponse" />

</flow>

...

<reply partnerLink=“customer” portType=“lns:purchaseOrderPT”

operation=“sendPurchaseOrder” variable=“invoice"/>

</sequence>

BPM

82

Qualité de services

• Nécessité de fiabiliser• Les messages (WS-Reliability)• Les activités (WS-Transactions)

• Courtes (Atomic Transactions)• Longues (Business Activity)

• Nécessité de sécuriser• Les échanges confidentiels (WS-Security)

BPM

83

Bilan Processus Métiers

• De multiples propositions• un domaine chaud (voir SOA)

• BPEL s'impose comme un standard de fait

• Vers trois standards pour la qualité de services• WS-Reliable Messaging• WS-Transactions• WS-Security

• Questions ?

BPM

84

5. Stratégie des constructeurs

• Outil de développement .NET• .net Framework SDK (//msdn.microsoft.com/webservices)• Support depuis Visual Studio .Net• Développement en tout langage (VB, C++, C#)• Deux composants essentiels

• Common Language Infrastructue (CLI)• .net Class Libraries (GUI, DB, ASP, …)

• Au cœur des systèmes MS• Evolution de DNA vers .net, Visual Studio.net, …• Compilation des langages MS en CIL (ex MSIL)• Machine virtuelle pour l'exécution CLI• Semblable à Java mais MS (et Novell: Mono)

Stratégie

85

Architecture .NET

VB C++ JScript …C#

ASP.NET ADO.NETBCL.NET

Common Language Runtime (CLR)

Windows et COM+ Services

SOAP&

XML

Toolkits

VisualStudio.NET

Stratégie

86

Infrastructure Système

Gestion des Données

Infrastructure Applicative

Infrastructure Infrastructure ““Information WorkerInformation Worker””

Outils de d

Outils de dééveloppement

veloppement

Administration et S

Administration et S éécurit

curit éé

Pattern & Design

, , , , ASP.NET W

eb Matrix,

ASP.NET starter kit, Communautés

Applications Applications

PartenairesPartenaires

Exemple: plate-forme d’Entreprise MS

UnixUnix

LinuxLinux OS390OS390

AS400AS400

Web ServicesWeb Services

87

Statégie J2EE de SUN, IBM, …

• Offrent un ensemble d'API pour Java2 et XML (JAX)• Java API for XML Processing (JAXP)

• Parsers, Processeur de feuilles de style • Java Architecture for XML Binding (JAXB)

• Mapping de XML sur des objets Java• Java API for XML Messaging (JAXM)

• Echange de messages SOAP• Java API for XML-based RPC (JAX-RPC)

• Génération de WSDL• Java API for XML Registries (JAXR)

• Accès à l'annuaire UDDI

Stratégie

88

Le mapping objet (Data Binding)

• Définition• Mapping entre un document XML et un graphe d’objets

métier C++ ou Java

Objets C++

XML

Parsing Xerces C++

Objets Java

Parsing XDK Java

Objets Java

Binding Java

Interface générée à l’aide d’outils de Data Binding

Développements manuels

XML XML

Mapping

89

Avantages

• L’activité de développement "parsing" est réduite• Gain en coût de développement des interfaces• Les applications peuvent se concentrer sur le fonctionnel• Les développeurs n'ont pas à se soucier du mapping XML

• Les Systèmes Techniques sont simplifiés• Capitalisation sur l’interface (utilisation, évolution, …)• Gain en terme de fiabilité (fin de l’utilisation de parseurs

variés, parfois écrits à la main)• Les performances de l’interface sont optimisées

• Les outils de mapping sont intégrés aux serveurs• J2EE = JAXB• .NET = mapper

Mapping

90

Produits J2EE

• Apache AXIS (Open Source)• Servlet permet de déployer les services• Appel servlet depuis SOAP

• Intégrés aux serveurs d'applications• API JAX chez IBM, BEA, Oracle, SUN, …• Equivalent de .NET dans le monde Java (JSP ~ ASP) • Nombreux assistants et outils• Large support expérimental de BPEL

Stratégie

91

Java WS Developer Pack (Sun)

• Boite à outils logiciel gratuite pour construire, tester et déployer les applications Java/XML

• Supporte les dernières versions des technologies et standards Web Services

• Avec la dernière version Java WSDP 2.0, les développeurs :• Develop and deploy using the latest XML and Web services

technologies slated for inclusion into Sun's deployment platforms. • Enhance Web services performance without revising WSDL files or

application code with the refreshed Fast Infoset features from Java WSDP 1.6.

• Create XML and Web service-enabled applications that exploit the enhanced security features with enhanced XWSS features.

• Continue to enjoy Java interoperability and portability across different platforms and devices.

• Simplify and lower the cost of legacy application integration, data interchange, and publishing in a Web environment.

92

Architectures inter-opérables

Serveur de

présentation

XML

XML

HTML

Stratégie

Java, C++, C#,

Word, Excel, …

WEB SERVICES

J2EE

XMLVisual studio

WEB SERVICES

.NET

93

Position des constructeurs

• Composants métiers appelables par message XML

• Encapsulent les applications existantes

• Début du développement des architectures SOA

• Agilité du système d'information

• Développement des workflows de coopération

Completeness of VisionCompleteness of Vision

Challengers Leaders

Niche Players Visionaries

Ability to Execute

Ability to Execute

OracleOracle

IBMIBM

HPHP

BEA

MicrosoftMicrosoft

CACA

SiebelSiebel

PeoplesoftPeoplesoft

NovellNovell

SAPSAP

FujitsuFujitsuSunSun

Conclusion

94

Exemple d'application: Dollar Rent a Car

• 6e société US de location• 400 sites dans 26 pays, 260

sites US; +75.000 véhicules• $750MM de revenu en 2001• Réservation à travers GDS

• Une alternative à GDS:les services Web XML

• Lien direct avec les partenaires… 25 en 2 mois.

Dollar Dollar RentRent a Cara Car

VaxVMSVaxVMS

Frontal WSFrontal WS

ACMSACMSXML / SOAPXML / SOAP

SouthWestSouthWest

GGloballobal

DDistributionistribution

SSystemsystems

SabreSabre WorldspanWorldspanAmadeusAmadeus GalileoGalileo

XML / SOAPXML / SOAP

NorthWestNorthWest$4

Conclusion

95

Ligue de Football Professionnel

• Ligue de Football Professionnel (CA 990M Euros) rebâtit son système de billetterie en .NET: • Système dimensionné et validé pour 8000 ventes/minutes

• Un nouveau système qui simplifie le développement de nouveaux canaux/ partenariat :• Interopérabilité via Services Web avec les réseaux

TicketNet et France Billet

Conclusion

96

SNCF: Fidélisation clients (CRM)

• Aujourd'hui, la filiale Chargée de la gestion des programme de fidélité (cartesseniors, 12/25 ans ou grand voyageur) s'appuie sur plus de 30 modules Siebel dont les principaux sont Loyalty, pour la gestion de la fidélité pure, Call Center, Analytics (reporting et tableaux de bords) et Gestion des campagnes marketing. Il dispose d'une douzaine de sites de production dont l'outil interne de fidélisation de la SNCF, auquel il se connecte régulièrement pour mettre à jour ses données. Enfin, deux centres d'appels relaient les besoins clients liés à l'aspect fidélisation.

"Après 3 mois de mise en production, nous disposons d'un système qui fonctionnebien. Nous distribuons plus de 30 000 primes par mois, dont 30% par nos services Internet. Nous envoyons nos premiers mailings depuis trois semaines", ajoute Cyril Garnier.

A terme, de nouvelles fonctions viendront encore enrichir l'offre de services Web tels le relevé de points à distance, l'achat de cartes, la modification de coordonnées clients ou la transformation des points en réservations.

• Extrait du JDNET du 07/11/2005

97

7. En résumé ...

• Invocation dynamique de services WEB décrits en WSDL

• SOAP est le protocole d'invocation (WP) sur HTTP

• Intégrité et typage des données (schémas XML)

• Possibilité de découvrir dynamiquement les services (UDDI)

• Lisibilité et sécurité renforcée (standard de cryptage)

• Indépendance des constructeurs (W3C)

• Intégration des workflows (BPEL)• Ajout de contrôle qualité

(transaction, sécurité)

• Questions ?

Conclusion

Recommended