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 ? ‹#›