XML - Georges Gardarin

publicité
Publication et Traitement
avec XSL
1.
2.
3.
4.
5.
XPATH
XSLT
XSLFO
Traitement de documents
Conclusion
1. XPath : l'adressage XML
• XPath
• Expressions de chemins dans un arbre XML
• Permet de sélectionner des nœuds par navigation
Document XML
?
XPath
‹#›
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
‹#›
XPath - Parcours d'arbre
• XPath opère sur l'arbre d'un document
racine
<livre auteur = "Hugo">
<titre>Les chatiments</titre>
<chapitre>
<section>Buonaparte </section>
<section>Neige</section>
</chapitre>
…
</livre>
livre
Auteur = "Hugo"
chapitre
titre
section
chapitre
section
Les chatiments
Bonaparte
XPath
‹#›
Neige
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
‹#›
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
‹#›
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
‹#›
XPath - Synthèse
Pattern
Exemple
Signification
Nom
Sélectionne les éléments de nom donné
section
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
Indique un attribut caractéristique (@nom désigne la valeur de l'attribut).
@
@nom
La notation @* désigne tous les attributs d'un élément
text()
Désigne le contenu d'un élément (le texte contenu entre ses balises)
text()
Sélectionne l'élément dont l'identifiant (la valeur de l'attribut ID) est celui
ID()
ID('a2546')
spécifié en paramètre
Comment() Comment() Désigne tous les nœuds commentaires
Node()
Désigne tous les noeuds
Node()
XPath
‹#›
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
‹#›
Publications avec XSL
• Plusieurs formats de publication pour un contenu
Format ( Postcript)
XML
Browser
Document
(XHTML, DHTML, HTML)
XSL
Processor
Format (XML)
pour Word,
Excel
XSL
Stylesheet
Format (XML)
application
e.Commerce
• XSL permet la présentation sur des terminaux variés
format
(WML)
XSLT
‹#›
Architectures
HTML
XML
Programme
XML
Fichier
XML
S
E
R
V
E
U
R
Affichage
ASP
ou
JSP
Processeur
XSL
HTML
Affichage
XML
Processeur
XSL
•Affichage
Base de données
•Traitement
XSLT
‹#›
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
‹#›
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
‹#›
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>
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
‹#›
<body><xsl:apply-
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
‹#›
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
‹#›
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
‹#›
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
•
•
•
•
XSLT
Style Vision de Altova
Oxygen de Synchro
Stylus Studio de Data Direct
CookTop et Tidy (gratuit)
‹#›
Quelques éditeurs
- IBM XSL Editor version: 1.0
preview release 2
platforms: Java
license: Free
developer: Alphaworks,
revised: 21
IBM
jan 2000
Editeur multi-frame et outils de mise au point – Alphawork d'IBM
- Stylus Studio 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
- XMLTransform 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
‹#›
IBM XSL Editor
XML
XSLT
Rendu
XSLT
‹#›
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
‹#›
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
‹#›
Principes
• Peut s'appliquer aux résultats des feuilles XSLT
XSL-FO
‹#›
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
‹#›
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
‹#›
Fonctionnalités
•
•
•
•
•
•
•
•
•
XSL-FO
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: hello World
<?xml version="1.0" encoding="iso-88591"?>
<fo:root
xmlns:fo="http://www.w3.org/1999/XSL/F
ormat">
<fo:layout-master-set>
<fo:simple-page-master mastername="my-page">
<fo:region-body margin="2 cm"/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="mypage">
<fo:flow flow-name="xsl-region-body">
<fo:block>Hello, world!</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
XSL-FO
•
Element Root
•
•
Layout master set
•
•
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
•
‹#›
Les pages sont groupées en séquences et
structurées selon la référence au masque.
Flow
•
•
Permet de déclarer une ou plusieurs page
masters (masque) et page sequence
masters pour définir la structure des pages
(ici une de 2 cm de marges)
Page sequence
•
•
Permet de définir le namespace XSL-FO
C'est le bloc de formatage qui inclut un
paragraphe de texte pouvant être produit
pas XSLT.
XSL-FO et XSLT : Exemple
• Définition de propriétés pour la racine
• <xsl:template match=‘/’>
display-sequence
font-style=‘italic’
start-indent=‘4pt’
end-indent=‘4pt’
font-size=‘18pt’
templates/>
display-sequence>
</xsl:template
<fo-
<xsl:apply</fo-
• La définition d’une propriété locale est prioritaire
devant l’héritage
XSL-FO
‹#›
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
‹#›
Bilan XSL
• XML = format pour la
production de publications
échangeables sur le web :
• Questions ?
• 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 …
XSL
‹#›
4. XML: le traitement par programme
Parser
XML
<ville>Paris</ville>
<pays>France</pays>
<temp
echelle="C">18</temp>
<ville>Paris</ville>
Bien formé <pays>France</pays>
<temp
Valide
echelle="C">18</temp>
Mal formé/Invalide
XSL
Stylesheet
Manipulation
de l'arbre
SAX
XML
DOM
XML
Schema
(ou DTD)
XSLFO
XSLT
<city>Paris</city>
<temp
degree="F">65</te
mp>
WML
Mapping
XML
(X)HTML
PDF
‹#›
RTF, Word
<ville>Paris</ville>
événements – call back
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
‹#›
Principaux parseurs
Document
XML
Xerces
Apache (Java, C++)
MSXML
Microsoft
SDK Oracle
Oracle
JAXP J2EE
Sun, ...
Parseur DOM
Arbre DOM
API DOM
Application
DOM
‹#›
Exemple d'arbre DOM
Document
Racine du document
NodeList
Element
<Guide>
NodeList
Element
<Guide>
<Restaurant id="R1">Le
meilleur
restaurant</Restaurant>
NamedNodeMap
Attr
Id="R1"
NodeList
</Guide>
DOM
<Restaurant>
Text
‹#›
Le meilleur restaurant
L'arbre DOM
• Navigation via un arbre
générique de nœuds
Node
• Node
• NodeList (Parent/Child)
• NamedNodeMap
Document
ProcessingInstruction
DocumentType
<?xml:stylesheet ...>
<!DOCTYPE ...>
Element
<Restaurant ....>
• Tout nœud hérite de Node
Child
Text
Le meilleur restaurant
DOM
‹#›
....
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.
DOM
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
Autres interfaces
• Interfaces fondamentales
•
•
•
•
•
•
•
•
DOM
• Interfaces étendues XML
DOMImplementation
Document
Comment
DocumentFragment
Element
Attr(ibute)
NamedNodeMap
CharacterData
• Comment
• Text
•
•
•
•
•
•
‹#›
ProcessingInstruction
DocumentType
CDATASection
Notation
Entity
EntityReference
Exemple d'utilisation
Public class ExempleDOM
public static main (String argc[]) throws IOException, DOMExcetion
{XMLDocument xmlDoc = new XmlDocument();
// creation des nœuds
ElementNode nom = (ElementNode) xmlDoc.createElement("nom");
ElementNode prenom = (ElementNode) xmlDoc.createElement("prenom");
ElementNode nomfam = (ElementNode) xmlDoc.createElement("nomfam");
// creation de l'arbre
xmlDoc.appendChild(nom);
nom.appenChild(prenom);
prenom.appendChild(xmlDoc.createTextNode("Jean");
nom.appenChild(nomfam);
Document:
nomfam.appendChild(xmlDoc.createTextNode("Dupont");
<nom ville ="Paris">
// positionnement d'un attribut
nom.setAttribute("ville", "Paris");
<prenom> Jean </prenom>
// sortie
<nomfa> Dupont </nomfa>
System.exit(0); } }
</nom>
DOM
‹#›
Bilan DOM
• Une interface objet standard
• Extensions en cours :
• Navigation dans l'arbre XML
• Traitements spécifiques
• 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
• 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
DOM
‹#›
L'interface 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
•
•
•
•
SAX
XP de James Clark, Aelfred, Saxon
MSXML3 de Microsoft
Xerces de Apache
JAXP de SUN
‹#›
Principe de fonctionnement
Méthodes
utilisateur
Evénement
startDocument
Document
XML
Stream
XML
Parser
Evénement
startElement
….
Evénement
endDocument
Content Handler
SAX
‹#›
Les méthodes essentielles
• XMLReader
• ErrorHandler
• setContentHandler
• setErrrorHandler
• parse
• fatalError
• error
• warning
• ContentHandler
•
•
•
•
•
SAX
startDocument
endDocument
startElement
endElement
characters
‹#›
Exemple SAX et DOM
<personne>
<nom>
Cover
</nom>
<prenom>
Harry
</prenom>
<adresse>
<rue>
Stendhal
</rue>
<ville>
Paris
</ville>
</adresse>
</personne>
SAX
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
#text: Cover
prenom
#text: Harry
adresse
rue
#text: Stendhal
ville
#text: Paris
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
‹#›
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
‹#›
5. Conclusion
• Un ensemble d’outils pour
traiter du XML:
• Questions ?
• Analyseurs validants
• Processeurs XSLT/XSLFO
• Intégrés aux serveurs
d’applications
• J2EE = JAXP
• .NET = MSXML
• En évolution permanente
‹#›
Web Services
Objectifs
Architecture
Protocole web (SOAP)
Composition de services web
Position du marché
Conclusion
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
•
•
•
•
Introduction
Accès à l'information depuis des programmes
Processus de e-commerce B2B automatisés
Interopérabilité entre applications
Plate-forme pour le calcul distribué
‹#›
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
‹#›
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
‹#›
2. Architecture Web Services
SERVEUR
Service
Provider
SERVEUR
Service
Provider
Request
Publish
Publish
SERVEUR
Service
Provider
Service
Registry
Request
Publish
Publish
Request
Find
SERVEUR
Service
Provider
WEB-HTTP
Request
Service
Requester
CLIENT
Architecture
‹#›
SERVEUR
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
‹#›
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
‹#›
Vue d'ensemble
Application
?
UDDI
discovery
Description
of providers
and services
SOAP Client
XML
WSDL
Service
Publication
Service
Provider
Service
Call
SOAP
Transport
SOAP
Transport
HTTP/S
Architecture
Category
Provider
‹#›
Service
Description des services: WSDL
• Elément Type
• Types des paramètres (schéma XML)
Service
• Elément Message
• Appel et retour d'opération
Port
Port
Binding
Binding
(e.g. http://host/svc)
• Elément Port type
(e.g. SOAP)
• Groupe d'opération
• Elément Binding
portType
• URL de l'opération
• Type de protocole
operation(s)
inMessage
outMessage
Abstract interface
Architecture
‹#›
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
‹#›
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
‹#›
Annuaire des services: UDDI
Annuaire
UDDI
Annuaire
UDDI
• Universal Description,
Discovery and Integration
• Annuaire des services
• décrit par un document
• WSDL, spec. EJB, autre …
• Accessible en SOAP
• Fonctions
Gérant de
requêtes
Dde de
Service
•
•
•
•
•
Enveloppe
+
Document
Programm
e
Architecture
‹#›
Enregistrer votre société
Enregistrer des services
Enregistrer des opérations
Découvrir des services
…
Contenu de l’annuaire
•
Pages blanches (businessEntity)
•
•
•
•
•
•
Contenu défini par un schéma XML
Spécifications pour réplication
BusinessEntity
Pages jaunes (businessService)
•
•
•
•
•
•
•
BusinessKey
Name
Description
CategoryBag
BusinessServices
•
•
ServiceKey
BusinessKey
Name
Description
CategoryBag
BindingTemplates
tModel
Spécifs de services
et taxonomies
BusinessService
Pages vertes (bindingTemplates)
•
•
•
•
Architecture
BindinKey
ServiceKey
Description
AccessPoint
publisherAssertion
Relations entre
deux parties
‹#›
BindingTemplates
Infos techniques
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
‹#›
Client Web de Recherche
Architecture
‹#›
3. SOAP
• Inspiré du RPC DCE adapté à XML
• Appel de procédure distante sur Internet
Appelant
Stub ou
Proxy
Appelant
Skeleton ou
Listener
Appelé
Souche
Réseau d'interconnexion
Souche
Appelé
SOAP
‹#›
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
‹#›
Un échange type
Port de connexion (URL)
Pare-feu
Pare-feu
Messages
Procuration
d'interface
Application
Cliente
Appel
SOAP
Translateur
SOAP
HTTP
RPC
local
Réponse
Parser
XML
Parser
XML
CLIENT
SOAP
SERVEUR
‹#›
Serveur
d'application
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
‹#›
Structure d'un message
Protocol Headers
Entête de protocoles (HTTP, SMTP, …)
<Envelope>
SOAP Envelope
<Header>
SOAP Header
<Body>
SOAP Body
SOAP
‹#›
Exemple
• www.stockquoteserver.com
• float GetLastTradePrice (Symbol)
• Le dialogue :
Application
Middleware
SOAP
HTTP
Application
Middleware
SOAP
HTTP
Request
Reply
Error
www.xquark.org
SOAP
www.stockquoteserver.com
‹#›
La requête
• POST /StockQuote HTTP/1.1
Host: www.stockquoteserver.com
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
Standard HTTP
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>
SOAP
‹#›
La réponse
• HTTP/1.1 200 OK
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
Standard HTTP
<SOAP:Envelope
xmlns:SOAP="http://schemas.xmlsoap.org/soap"/>
<SOAP:Body>
<m:GetLastTradePriceResponse xmlns:m="Some-URI">
<Price>34.5</Price>
</m:GetLastTradePriceResponse>
</SOAP:Body>
</SOAP:Envelope>
SOAP
‹#›
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
‹#›
Bilan SOAP
• Protocole d’invocation de
services Web
•
•
•
•
•
• Questions ?
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 ?
SOAP
‹#›
4. Orchestration de Services Web
• Objectifs
• Modéliser des processus
métiers (business process)
• Exemple : réservation
Début
Réserver
Hotel
• Composer des services Web
distribués
OK ?
oui
• Piloter l'exécution
• Orchestration d'activités
• Echanges XML
• Gestion de transactions
Echec
Réserver
Avion
OK ?
oui
non
Louer
Voiture
• Business Process Management
• Transaction
• Workflow
BPM
non
OK ?
oui
Succès
‹#›
Réserver
Train
oui
non
OK ?
Echec
non
Echec
Exemple : Pilotage Fabrication
Echange B2B
Partenaire
Serveur d'entreprise
Usine
XML
XML
XML
WEB
XML
Interface
XML
ERP
XML
Client
Mainframe
BPM
‹#›
Fournisseur
Les briques à standardiser
Choreography - CDL4WS
Orchestration - BPEL4WS
Business
Processes
Management
Transactions
WS-Reliability
WS-Security
Coordination
Quality of
Service
Context
UDDI
Discovery
WSDL
Description
Description
SOAP
Message
XML
HTTP, IIOP, JMS, SMTP
‹#›
Transport
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
‹#›
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
‹#›
Modélisation par Workflow
• Graphe acyclique d'activités modélisant un processus
métier
Les activités
représentent les
unités de traitement
Les liens de contrôle
définissent le flux
d'exécution
[ WS]
Les liens de
données
définissent le flux
d'information.
BPM
Les activités
correspondent à des
services Web
Les activités
peuvent être
d'autres business
process
‹#›
Exemple
• Modélisation en XML
commandeVacances
• Langage d'orchestration
• Chorégraphie d'activités
reserverVacances
<activity
name="demandePaiement">
<join condition=”(reserverVoiture OR
reserverVoiture
reserverAvion) AND
reserverHotel” when=”deferred”>
</activity>
Commande/classe=2
reserverAvion
<activity name="reserverAvion">
….
demandePaiement
BPM
‹#›
reserverHotel
Vers un standard ?
BPML
BPSS
WSCI
WS-Choreography
(Intallio et al)
(ebXML)
(Sun et al)
(W3C)
2000/05 2001/03 2001/05 2001/06 2002/03 2002/06 2002/08 2003/01 2003/04
XLang
WSFL
WSCL
BPEL4WS 1.0
BPEL4WS 1.1
(Microsoft)
(IBM)
(HP)
(IBM, Microsoft)
(OASIS)
BPM
‹#›
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
‹#›
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
‹#›
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
‹#›
Bilan Processus Métiers
• De multiples propositions
• Questions ?
• 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
BPM
‹#›
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
•
•
•
•
Stratégie
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)
‹#›
Architecture .NET
VB
SOAP
&
XML
C++
ASP.NET
C#
JScript
BCL.NET
ADO.NET
Toolkits
Common Language Runtime (CLR)
Windows et COM+ Services
Stratégie
‹#›
…
Visual
Studio
.NET
Exemple: plate-forme d’Entreprise MS
Applications
Partenaires
Gestion des Données
Unix
AS400
Infrastructure Système
Linux
OS390
‹#›
Pattern & Design, ASP.NET Web Matrix,
ASP.NET starter kit, Communautés
Infrastructure
Applicative
Web Services
Outils de développement
Administration et Sécurité
Infrastructure “Information Worker”
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
‹#›
Le mapping objet (Data Binding)
• Définition
• Mapping entre un document XML et un graphe d’objets
métier C++ ou Java
Développements
manuels
Objets C++
Parsing Xerces C++
XML
Mapping
Interface générée à l’aide
d’outils de Data Binding
Objets Java
Parsing XDK Java
XML
‹#›
Objets Java
Binding Java
XML
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
‹#›
Produits J2EE
• Apache AXIS (Open Source)
• Servlet permet de déployer les services
• Appel servlet depuis SOAP
• Intégrés aux serveurs d'applications
•
•
•
•
Stratégie
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
‹#›
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.
‹#›
Architectures inter-opérables
HTML
Serveur de
présentation
Visual studio
XML
XML
WEB SERVICES
.NET
XML
Java, C++, C#,
Word, Excel, …
…
WEB SERVICES
J2EE
Stratégie
‹#›
Position des constructeurs
Challengers
Leaders
IBM
Microsoft
BEA
Oracle
Fujitsu
HP
CA
SAP
• Encapsulent les applications
existantes
• Début du développement des
architectures SOA
Sun
Novell
Siebel
Peoplesoft
Niche Players
• Composants métiers appelables
par message XML
Visionaries
• Agilité du système d'information
• Développement des workflows de
coopération
Completeness of Vision
Conclusion
‹#›
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.
Global
Distribution
Systems
XML / SOAP
Sabre Worldspan
$4
Amadeus Galileo
NorthWest
XML / SOAP
ACMS
VaxVMS
Frontal WS
Conclusion
SouthWest
‹#›
Dollar Rent a Car
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
‹#›
SNCF: Fidélisation clients (CRM)
•
Aujourd'hui, la filiale Chargée de la gestion des programme de fidélité (cartes
seniors, 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 fonctionne
bien. 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
‹#›
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é)
Conclusion
• Questions ?
‹#›
Téléchargement