Publication et Traitement avec XSL 1. XPATH 2. XSLT 3. XSLFO 4. Traitement de documents 5. 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 2
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 3
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> Auteur = "Hugo" Les chatiments titre livre chapitre section section chapitre Bonaparte Neige XPath 4
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 5
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 6
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 7
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 8
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 9
Publications avec XSL Plusieurs formats de publication pour un contenu Format ( Postcript) XML Document Browser (XHTML, DHTML, HTML) XSL Processor XSL Stylesheet format XSL permet la présentation sur des terminaux variés (WML) Format (XML) pour Word, Excel Format (XML) application e.commerce XSLT 10
Architectures XML Programme XML Fichier XML S E R V E U R ASP ou JSP HTML Processeur XSL XML Affichage HTML Affichage Base de données Processeur XSL Affichage Traitement XSLT 11
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 12
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 13
Exemple de feuille de style XSL <body><xsl:apply- <?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 14
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 15
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 16
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 17
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 18
Quelques éditeurs version: 1.0 preview release 2 - I B M X S L E d i t o r - 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 L T r a n s f o r m - 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 19
IBM XSL Editor XSLT XML XSLT Rendu 20
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 21
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 22
Principes Peut s'appliquer aux résultats des feuilles XSLT XSL-FO 23
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 24
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 25
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 26
XSL-FO: hello World <?xml version="1.0" encoding="iso-8859-1"?> <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> 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 sequence masters 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 27
XSL-FO et XSLT : Exemple Définition de propriétés pour la racine <fo- <xsl:template match= / > display-sequence font-style= italic start-indent= 4pt end-indent= 4pt font-size= 18pt templates/> display-sequence> </xsl:template <xsl:apply- </fo- La définition d une propriété locale est prioritaire devant l héritage XSL-FO 28
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 29
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 30
4. XML: le traitement par programme XML <ville>paris</ville> <pays>france</pays> <temp echelle="c">18</temp> XML Schema (ou DTD) Parser Bien formé Valide Mal formé/invalide XML <ville>paris</ville> <pays>france</pays> <temp echelle="c">18</temp> XSL Stylesheet DOM SAX Manipulation de l'arbre <ville>paris</ville> événements call back XSLT XSLFO <city>paris</city> <temp degree="f">65</te mp> WML Mapping XML (X)HTML PDF 31 RTF, Word
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 32
Principaux parseurs Document XML Xerces MSXML SDK Oracle JAXP J2EE Apache (Java, C++) Microsoft Oracle Sun,... Parseur DOM Arbre DOM API DOM Application DOM 33
Exemple d'arbre DOM Document Racine du document NodeList Element <Guide> NodeList Element <Restaurant> <Guide> <Restaurant id="r1">le meilleur restaurant</restaurant> </Guide> NamedNodeMap Attr Id="R1" NodeList Text Le meilleur restaurant DOM 34
L'arbre DOM Navigation via un arbre générique de nœuds Node NodeList (Parent/Child) NamedNodeMap Document Node ProcessingInstruction DocumentType Element... <?xml:stylesheet...> <!DOCTYPE...> <Restaurant...> Tout nœud hérite de Node Text Child Le meilleur restaurant DOM 35
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 36
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 37
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); nomfam.appendchild(xmldoc.createtextnode("dupont"); // positionnement d'un attribut nom.setattribute("ville", "Paris"); // sortie System.exit(0); } } Document: <nom ville ="Paris"> <prenom> Jean </prenom> <nomfa> Dupont </nomfa> </nom> DOM 38
Bilan DOM 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 : 39 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
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 XP de James Clark, Aelfred, Saxon MSXML3 de Microsoft Xerces de Apache JAXP de SUN SAX 40
Principe de fonctionnement Evénement startdocument Méthodes utilisateur Document XML Stream XML Parser Evénement startelement. Evénement enddocument Content Handler SAX 41
Les méthodes essentielles XMLReader setcontenthandler seterrrorhandler parse ContentHandler startdocument enddocument startelement endelement characters ErrorHandler fatalerror error warning SAX 42
Exemple SAX et DOM SAX <personne> <nom> Cover </nom> <prenom> Harry </prenom> <adresse> <rue> Stendhal </rue> <ville> Paris </ville> </adresse> </personne> 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 () 43 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 44
Integration : API JAXP Java API for XML Parsing JAXP est une d'api standard J2EE permettant d'effectuer des traitements XML qui englobe : Objectif SAX (SAX 2.0) DOM (DOM Level 2) la manipulation de transformations XSLT 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 45
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? 46
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 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 48
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 49
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 50
2. Architecture Web Services SERVEUR Service Provider SERVEUR Request Service Provider Publish Publish SERVEUR Service Provider Publish Request Service Registry SERVEUR Publish Request Find SERVEUR Service Provider Request WEB-HTTP Service Requester CLIENT Architecture 51
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 52
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 53
Vue d'ensemble Application SOAP Client discovery? UDDI Description of providers and services Category Provider WSDL Service Publication XML Service Call Service Provider SOAP Transport HTTP/S SOAP Transport Service Architecture 54
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 Port (e.g. http://host/svc) Binding (e.g. SOAP) Service porttype operation(s) inmessage Port Binding outmessage Abstract interface Architecture 55
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 56
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 57
Annuaire des services: UDDI Annuaire UDDI Dde de Service Gérant de requêtes Programme Enveloppe + Document Annuaire 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 Architecture 58
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 Architecture Contenu défini par un schéma XML Spécifications pour réplication BusinessEntity BusinessEntity publisherassertion publisherassertion Relations entre deux parties 59 BusinessService BusinessService tmodel tmodel Spécifs de services et taxonomies BindingTemplates 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 60
Client Web de Recherche Architecture 61
3. SOAP Inspiré du RPC DCE adapté à XML Appel de procédure distante sur Internet Appelant Appelant Stub ou Proxy Skeleton ou Listener Appelé Souche Réseau d'interconnexion Souche Appelé SOAP 62
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 63
Un échange type Port de connexion (URL) Procuration d'interface Messages SOAP Pare-feu Pare-feu Appel Translateur SOAP Application Cliente HTTP RPC Réponse local Parser XML Parser XML Serveur d'application CLIENT SERVEUR SOAP 64
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 65
Structure d'un message Protocol Headers Entête de protocoles (HTTP, SMTP, ) SOAP Envelope SOAP Header <Envelope> <Header> <Body> SOAP Body SOAP 66
Exemple www.stockquoteserver.com float GetLastTradePrice (Symbol) Le dialogue : Application Middleware SOAP HTTP www.xquark.org Request Reply Error Application Middleware SOAP HTTP www.stockquoteserver.com SOAP 67
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 68
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 69
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 70
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 71
4. Orchestration de Services Web Objectifs Modéliser des processus métiers (business process) Exemple : réservation Début Composer des services Web distribués Piloter l'exécution Orchestration d'activités Echanges XML Gestion de transactions Business Process Management Transaction Workflow Réserver Hotel OK? oui Réserver Avion OK? oui Louer Voiture OK? oui Succès non non non Echec oui Réserver Train OK? Echec non Echec BPM 72
Exemple : Pilotage Fabrication Echange B2B Partenaire Serveur d'entreprise XML XML Usine XML Interface XML WEB XML XML ERP Fournisseur BPM Mainframe 73 Client
Les briques à standardiser Choreography - CDL4WS Orchestration - BPEL4WS Business Processes Transactions Management WS-Reliability WS-Security UDDI WSDL Coordination Context Quality of Service Discovery Description SOAP XML Message HTTP, IIOP, JMS, SMTP Transport 74
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 75
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 76
Modélisation par Workflow Graphe acyclique d'activités modélisant un processus métier Les liens de contrôle définissent le flux d'exécution [ WS] Les activités représentent les unités de traitement Les activités correspondent à des services Web BPM Les liens de données définissent le flux d'information. 77 Les activités peuvent être d'autres business process
Exemple Modélisation en XML Langage d'orchestration Chorégraphie d'activités commandevacances reservervacances Commande/classe=1 <activity name="demandepaiement"> <join condition= (reservervoiture OR reserveravion) AND reserverhotel when= deferred > </activity> reservervoiture Commande/classe=2 reserveravion reserverhotel <activity name="reserveravion">. demandepaiement BPM 78
Vers un standard? BPML (Intallio et al) BPSS (ebxml) WSCI (Sun et al) WS-Choreography (W3C) 2000/05 2001/03 2001/05 2001/06 2002/03 2002/06 2002/08 2003/01 2003/04 XLang (Microsoft) WSFL (IBM) WSCL (HP) BPEL4WS 1.0 (IBM, Microsoft) BPEL4WS 1.1 (OASIS) BPM 79
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 80