La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

1  STIME/DT - Alain Paoli - 2000 Le Portails d’Entreprise.

Présentations similaires


Présentation au sujet: "1  STIME/DT - Alain Paoli - 2000 Le Portails d’Entreprise."— Transcription de la présentation:

1 1  STIME/DT - Alain Paoli - 2000 Le Portails d’Entreprise

2 2  STIME/DT - Alain Paoli - 2000 Plan Les Portails d’Entreprise –Définition –Les problèmes à résoudre Les technologies, leur apports, leurs limitations –Servlet, –JSP –XML, DOM, DTD et Schema, XSLT, XForms –Cocoon Récapitulatif –Apports / Limitations des technologies présentées –Problèmes / Solutions Proposition

3 3  STIME/DT - Alain Paoli - 2000 Portails d’Entreprise (EIP) Objectif: Intégrer l’information pour améliorer la productivité et la réactivité de l’entreprise –Premières applications: rapports financiers, statistiques ventes / achats Définition: Un point d’accès unique et personnalisé à des sources d’informations variées Forte croissante: –80% des 500 premières entreprises mondiales sont en train de déployer un portail (estimation Gartner Group)

4 4  STIME/DT - Alain Paoli - 2000

5 5 Degrés de variabilités Deux niveaux de personnalisation –Page Style Choix des portlets et leur mise en page (lignes, colonnes) –Portlet Contenu du Portlet (peut être dynamique) Deux types de contenus pour un Portlet –résumé –complet Deux types de pages –Bureau : montre plusieurs portlets –Zoom: montre un seul portlet + Bannière et barre de navigation

6 6  STIME/DT - Alain Paoli - 2000 Portails d’Entreprise Fonctionnalités –Bureau personnalisé –Pages composées de modules indépendants (Portlets) –Agrégation d’informations en provenance de sources très variées Bases de données, Bases documentaires, Messagerie, Sites Web – Applications simples Formulaires de saisie Requêtes (dans annuaire LDAP, base documentaire, …) –Accessible via divers types de terminaux (Navigateur sur PC, Organiseur, Téléphone WAP, ….)

7 7  STIME/DT - Alain Paoli - 2000 Les Problèmes à résoudre Maintenir une session Maintenir un profil utilisateur –Préférences du bureau personnalisé (liste des portlets composant la page bureau) –Droits aux diverses sources d’informations et applications (portlets) –La structure du profil doit pouvoir évoluer Agréger des sources d’informations très diverses –La composition d’une page nécessite de multiples requêtes Gérer des formulaires Composer dynamiquement les pages par un assemblage de portlets –En fonction du profil utilisateur –En fonction du type de terminal

8 8  STIME/DT - Alain Paoli - 2000 Les technologies classiques Servlet, JSP

9 9  STIME/DT - Alain Paoli - 2000 Servlet

10 10  STIME/DT - Alain Paoli - 2000 Servlet - Principe Une instance d’une classe qui implémente l’interface javax.servlet.http.HttpServer reçoit les requêtes HTTP. Les requêtes HTTP transmises spécifient le nom (ou classe du Servlet) appelé. Quand l’objet javax.servlet.http.HttpServer reçoit une requête HTTP: –S'il n'existe pas encore d'instance du Servlet correspondant à la requête HTTP, il en crée une. –Il appelle une méthode de cette instance, pour traiter la requête, à l'intérieur d'un nouveau processus léger (ou "thread") qui est créé pour l'occasion: doGet (pour les requêtes HTTP GET) doPost (pour les requêtes HTTP POST)

11 11  STIME/DT - Alain Paoli - 2000 Servlet - Idiome import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class MonServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Utiliser l’objet "request" pour lire les headers HTTP (e.x. cookies) // et les paramètres transmis par un formulaire HTML // Utiliser l’objet "response" pour écrire la ligne HTTP réponse avec ses headers // (e.x. spécifier le MIME type, passer des cookies). PrintWriter out = response.getWriter(); // Utiliser l’objet "out" pour écrire la page réponse envoyée au navigateur out.println(" \n" + " Hello WWW \n" + " \n" + " Hello WWW \n" + " "); }

12 12  STIME/DT - Alain Paoli - 2000 Session Session: maintenue par cookie temporaire ou insertion d ’un paramètre dans la requête. –Un contexte est maintenu pour un utilisateur HttpSession session = request.getSession(true); // récupère la session courante. En crée une si besoin est session.setAttribute("o1", objet1); // stocke un objet MaClasse o = session.getAttribute ("o1"); // retrouve l’objet Enumeration enumAttNames = session. getAttributeNames(); –Méthodes: getCreationTime(): long  Date de création de la session getId(): String  Identifiant de la session getLastAccessedTime() : long  Date dernière requête get/setMaxInactiveInterval(int): nb de millisecondes d’inactivité isNew(): boolean  vrai si la session vient d’être crée

13 13  STIME/DT - Alain Paoli - 2000 JSP But: –Séparer les parties statiques des parties dynamiques d’une page Pouvoir utiliser les outils classiques pour la partie statiques des pages HTML –Inclusion de code Java dans les pages HTML Le code Java est inclus entre des tags ‘ ’ L’extension de la page doit être ‘.jsp’ Le code HTML et le code Java sont compilés dans un servlet dont le source est généré automatiquement lors de la première requête sur la page

14 14  STIME/DT - Alain Paoli - 2000 Expression JSP Sert à inclure une valeur dans le flot de sortie (page réponse) Syntaxe: – Exemple: – Aujourd’hui: L’expression Java est évaluée, convertie en une string, et insérée dans la page. Cette évaluation est faite lors du traitement de la requête HTTP.

15 15  STIME/DT - Alain Paoli - 2000 Scriptlet JSP Permet d’insérer n’importe quel code Java –Syntaxe: Vous avez gagné ! Vous avez perdu ! Sera compilé en quelque chose comme: if (Math.random() < 0.5) { out.println(”Vous avez gagné !"); } else { out.println(" Vous avez perdu !"); }

16 16  STIME/DT - Alain Paoli - 2000 Actions jsp:useBean: – –Cette action associe un Bean, instance de la classe spécifiée par ‘class’, avec une portée spécifiée par ‘scope’, avec la référence spécifiée par ‘id’. –Si une instance associée avec la même référence n’est pas trouvée dans la portée, une nouvelle instance est crée. –Portée: quatre valeurs possibles application: bean visible de toutes les pages, pour toutes les sessions session: bean visible de toutes les pages pour une session considérée requête: bean visible de toutes les pages participant à une requête page: bean visible dans la page considérée jsp:setProperty – –Positionne toutes les propriétés du Bean avec les valeurs passées en paramètres dans la requête, de telle façon qu’un paramètre de nom ‘prop’ positionnera la valeur d’une propriété de nom ‘property’ (i.e. ce Bean est muni d’un ‘setter’ setProp()), en faisant au préalable des conversions implicites.

17 17  STIME/DT - Alain Paoli - 2000 Exemple Gérer un formulaire d’identification –L’utilisateur doit saisir son logon et son mot de passe, puis cliquer sur ’OK’ Si pas de logon ou de mot de passe saisi: message d’erreur affiché dans la page réponse. Si utilisateur inconnu (logon ou mot de passe non enregistré): message d’erreur affiché dans la page réponse. Si erreur, on affiche à nouveau le formulaire avec valeurs saisies et message d’erreur Sinon, on affiche la page d’accueil. –Architecture Une page JSP affichant le formulaire + message d’erreur Un Bean User + un Bean Contrôleur du dialogue

18 18  STIME/DT - Alain Paoli - 2000 Page JSP Votre email "> Mot de passe ">

19 19  STIME/DT - Alain Paoli - 2000 Bean User public class User { private String logon = ""; private String pass = ""; public User() { // constructeur } public String getLogon() { return logon; } public String getPass() { return pass; } public void setLogon(String logon) { this.logon = logon; } public void setPass(String pass) { this.pass = pass; } }

20 20  STIME/DT - Alain Paoli - 2000 import javax.servlet.http.*; public class IdentificationControler { private String errorMessage = ""; public void process(HttpServletRequest request, HttpServletResponse response) { try { if (request.getParameter("state") == null) { // état: initialisation return; String logon = request.getParameter("logon"); String pass = request.getParameter("pass"); if (logon.equals("") || pass.equals("")) { errorMessage = " Erreur: vous n'avez pas saisi votre identifiant ou votre mot de passe "; return; } User user = (User) request.getSession().getAttribute("user"); if (!isRegistred(user)) { errorMessage = " Erreur: vous n'êtes pas enregistré comme utilisateur "; return; } response.sendRedirect("accueil.jsp"); //sendRedirect() doit être fait avant écriture du tag } // end try catch(IOException e) { errorMessage = " Erreur: Fichier " + nextJSP + " introuvable. "; } } public boolean isRegistred(User user) { // retourne true si l’utilisateur est connu, et false sinon }

21 21  STIME/DT - Alain Paoli - 2000 Exécution (1) Affichage du formulaire pour la première fois / session: –requête HTTP GET: http://localhost:8080/MyPortal/Identification.jsp –Création du bean User (logon et pass initialisé à "") –Création d’une instance du contrôleur (sa portée est "page") attribut errorMessage initialisé à "" sa méthode process ne fait rien (pas de paramètre "state" dans la requête). (2) Saisie du logon et du pass et envoi –Récupération du bean User (logon et pass contiennent les valeurs saisies) –Création d’une instance du contrôleur (sa portée est "page") attribut errorMessage initialisé à "" il y a un paramètre "state" avec la valeur "control" : la méthode process vérifie les valeurs saisie et vérifie que l ’utilisateur est enregistré –Si OK: redirige la requête vers "accueil.jsp" –Sinon positionne un message d’erreur dans errorMessage. Le message sera affiché par l’exécution du l’expression :

22 22  STIME/DT - Alain Paoli - 2000 JSP: Limitations Insertion de code Java dans du code HTML –Pas de séparation entre contenu et présentation –Le flot de contrôle du code Java doit suivre l’ordre d’écriture dans le flot de sortie –Comment gérer plusieurs types de terminaux ? Portlet 1 Code HTML de Mise en Page Portlet 2Portlet 3Portlet 4 … Portlet 1 … Portlet 2 … Portlet 3 … Portlet 4 Page Flot de contrôle Flot de sortie

23 23  STIME/DT - Alain Paoli - 2000 Solution Deux étapes: –(1) Générer le contenu sous la forme d’une arborescence Page / Portlets, chaque Portlet ayant sa structure propre. Pouvoir construire le contenu des portlet dans n’importe quel ordre. –(2) Générer la présentation pour l’ensemble en fonction du type de terminal Page Portlet 1 Portlet 2Portlet 3Portlet 4

24 24  STIME/DT - Alain Paoli - 2000 XML

25 25  STIME/DT - Alain Paoli - 2000 Définition XML est une norme (recommandation) du W3C (World Wide Web Consortium): http://www.w3.org –En charge de la définition de standards du Web (HTML) –Rassemble des entreprises et des chercheurs Labos: Massachusetts Institute of Technology (MIT), Institut National de Recherche en Informatique et Automatique (INRIA), Keio University of Japan. Nombreux standards connexes à XML: –Définis par le W3C (XSL, DOM, Schema, RDF) –Définis par des entreprises ou consortiums indépendants du W3C : OASIS, Biztalk, WAP Forum –Des standards de fait : SAX

26 26  STIME/DT - Alain Paoli - 2000 Définition XML: eXtensible Markup Language –Méta-langage permettant de définir des documents ou messages (flots) structurés. –Documents édités (sérialisés) sous forme de données encadrées par des balises (Tags). Les balises sont exprimées comme en HTML Hello World ! XML permet de définir des informations: –semi-structurées –extensibles: on peut définir ses propres balises –auto-documentées (par les balises)

27 27  STIME/DT - Alain Paoli - 2000 Définition XML définit les règles syntaxiques que doivent respecter les documents XML bien formés. –Le document a une structure d ’arbre une seule balise (racine) au sommet à chaque balise ouvrante correspond une balise fermante tout élément fils est entièrement contenu dans son père Document bien forméDocument mal formé Data on the Web Serge Abiteboul Des relations aux données semi-structurées et XML Data on the Web Serge Abiteboul Des relations aux données semi-structurées et XML … attribut

28 28  STIME/DT - Alain Paoli - 2000 Compréhension des informations Menu Saumon Fumé  Canard Rôti Pommes de Terres  Profiteroles Seule la présentation et le sens permettent d ’identifier la structure Saumon fumé Canard Rôti Pommes de Terre Profiteroles Des marqueurs (balises) explicitent la structure Seul le contenu est décrit (pas de présentation) Menu;Saumon Fumé;Canard Rôti... Informations non explicites

29 29  STIME/DT - Alain Paoli - 2000 Document Object Model Le DOM est une recommandation du W3C fixant les types d’objets utilisés pour représenter en mémoire les nœuds d’une arborescence XML Dupont Alfred Document Element Attribute Text annuaire Element carte Comment carte de visite 56321 nomprenom DupontAlfred Element Text

30 30  STIME/DT - Alain Paoli - 2000 Document Object Model Dans le modèle DOM, tout objet est un nœud de type Node. Le nœud racine du document est un objet Document. –L’objet Element représente les balises contenues dans le document XML. Le nœud Document ne peut posséder qu’un seul fils de type Element. –Le nœud Text traduit le contenu textuel d’un Element ou d’un Attribute (autre sous-classe de Node). Ces types sont définis en IDL et sous formes d’interfaces Java –Nombreuses méthodes réparties sur les différents types pour: Créer les différents types de nœuds Ajouter / Supprimer / Remplacer un fils ; obtenir la liste des fils Accéder / Positionner le père Accéder / Positionner un attribut ; obtenir la liste des attributs Cloner un nœud.

31 31  STIME/DT - Alain Paoli - 2000 Utilisation d’un DOM Dupont Alfred Parser XML DOM Sérialiseur XMLApplication Java Le Parser fournit une implémentation du DOM Le Sérialiseur utilise une implémentation du DOM L’application Java lit, modifie, ajoute, supprime des nœuds ou crée un DOM de toute pièce

32 32  STIME/DT - Alain Paoli - 2000 import java.io.*; import org.w3c.dom.*; import org.apache.xerces.parsers.*; import org.apache.xml.serialize.*; import org.xml.sax.*; public class UseDom { public static void main(String[] args) { try { DOMParser parser = new DOMParser(); // crée le parser parser.parse("annuaire.xml"); // parse Document doc = parser.getDocument(); // récupère le DOM Element annuaire = doc.getDocumentElement(); // récupère la racine annuaire Element carte = doc.createElement("carte"); // crée un élément carte.setAttribute("id", "12345"); // ajoute un attribut à annuaire.appendChild(carte); // ajoute le fils à Element nom = doc.createElement("nom"); // crée l’élément nom.appendChild(doc.createTextNode("Durand")); // positionne valeur de carte.appendChild(nom); // ajoute le fils à XMLSerializer serializer = new XMLSerializer(); // crée le sérialiseur FileWriter fw = new FileWriter("annuaire2.xml"); // crée le flot de sortie serializer.setOutputCharStream(fw); // positionne le flot dans le sérialiseur OutputFormat of = new OutputFormat(); // définit un format de sortie serializer.setOutputFormat(of); // positionne format de sortie dans le sérialiseur serializer.serialize(doc); // sérialise fw.close(); // clos le flot de sortie } catch(IOException e) { } catch(SAXException e) { } } }

33 33  STIME/DT - Alain Paoli - 2000 Utilisation d’un DOM Le programme précédent produit le document XML suivant: Dupont Alfred Durand

34 34  STIME/DT - Alain Paoli - 2000 Validation d’un Document XML Via un DTD: –Déclarer les éléments fils d’un élément, et leur cardinalité –Déclarer les noms d’attributs d ’un élément, et leur caractère obligatoire ou facultatif ou valeur par défaut Définir un attribut de type clé unique (ID) Définir un attribut de type référence à une clé (IDREF) Via un Schema: –Déclarer des types élémentaires et complexe en utilisant des constructeur de types (union, liste, séquence, agrégation) –Définir des clés et leur référence –Définir des types dérivés par extension: ajout d’éléments ou d’attributs à la structure par restriction: en rajoutant des contraintes sur un type –Utilisation des espaces de noms (namespaces)

35 35  STIME/DT - Alain Paoli - 2000 Données semi-structurées XML Relationnel –Structure de table Le sens d’une cellule se définit par rapport au tuple auquel elle appartient et au schéma. –Algèbre fondée sur relation universelle + {dépendances} –Contraintes: Toutes les lignes d’une table possèdent la même structure Toute cellule est d’un type pré- défini atomique XML –Structure d’arbre quelconque Le sens d’un nœud se définit par rapport à ses ancêtres (contextuellement auto-descriptif) –Propositions d’algèbres (Datalog) –Contraintes: Un nœud a un nombre quelconque de fils Types pré-définis de nœuds (Document, Element, Text, …) TableDocument Ligne 2 C3 C4 C5 Ligne 1 C1 C2 C3

36 36  STIME/DT - Alain Paoli - 2000 XSLT

37 37  STIME/DT - Alain Paoli - 2000 Définition XSLT (XML Stylesheet Language Transformation) est un standard XML qui permet de générer un document cible à partir d’un document source –par des opérations de filtrage –par des transformations –par des calculs simples –par des appels à des objets Java Il fait partie de XSL (XML Stylesheet Language) qui se décompose en: –XSLT pour la transformation des documents XML (recommandation du W3C) –XSL-Formating Object pour la description des informations de mise en page (Working Draft)

38 38  STIME/DT - Alain Paoli - 2000 Principe de Fonctionnement La feuille de style décrit comment le processeur XSLT doit transformer le document XML source. –Elle contient des règles décrivant les transformations à appliquer sur un nœud (sous- arbre). Le résultat de la transformation peut: –être un document XML –être un document HTML –être un document texte –respecter un format propriétaire Processeur XSLT Document XML Source Feuille de style XSLT Document Cible

39 39  STIME/DT - Alain Paoli - 2000 Mécanisme de transformation L’application d’une règle de transformation à un nœud génère une partie du document cible Pour transformer un nœud, le processeur –Trouve la règle la plus prioritaire s’appliquant à ce nœud –applique la règle de transformation –lorsqu’une règle s’applique à un nœud, ce nœud est le contexte de référence pour les instructions XSL contenues dans le corps de la règle instructions XSLT ou texte littéral à produire ou éléments XML bien formés à insérer Partie condition Partie production

40 40  STIME/DT - Alain Paoli - 2000 XPath Normalise la façon de localiser des parties d’un document XML Expressions XPath: 43 64 44 16 –"/" sélectionne la racine – "item" sélectionne tous les nœuds –"item/@title" sélectionne l’attribut "title" pour tous les nœuds –"item[@title=‘Stats’]" sélectionne tous les nœuds possédant un attribut "title" avec la valeur ‘Stats’ –"item/value" sélectionne les fils pour tous les nœuds –"." identifie le nœud contexte courant –".." identifie le père du nœud contexte courant

41 41  STIME/DT - Alain Paoli - 2000 Instructions XSLT –Cette instruction sélectionne les fils du nœud courant (contexte courant) et provoque le traitement sur chacun de ces nœuds. –Elle peut comporter un attribut select contenant une expression XPath pour ne sélectionner que certains nœuds fils. –Traduit le résultat de la requête XPath (un nœud ou un attribut), appliqué au contexte courant en une chaîne de caractères qui est insérée en lieu et place de cette balise. Insère le contenu du nœud ou la valeur de l’attribut sélectionné {requête XPath} –Idem, mais doit être utilisé lorsque la chaîne de caractères résultat doit être insérée en tant que valeur d’attribut d’un élément XML.

42 42  STIME/DT - Alain Paoli - 2000 <?xml-stylesheet href="p5.xsl" type="text/xsl"?> 43 64 44 16 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> % S <img src="o.gif" width="{./value}" height="10"/>

43 43  STIME/DT - Alain Paoli - 2000 Code HTML Généré Stats 64% S43 16% S44

44 44  STIME/DT - Alain Paoli - 2000 XForms

45 45  STIME/DT - Alain Paoli - 2000 XForms XForms est la redéfinition des formulaires HTML en XML –Recommandation du W3C en cours d’élaboration –Modèle en couches, définition des types et contraintes en Schema ? Présentation Logique Données Données stockées en XML Définition des types, Données calculées et contraintes Présentations alternatives / types de média Dubois Pierre Masculin Masculin Féminin Feuilles de style XSLT

46 46  STIME/DT - Alain Paoli - 2000 XForms Au niveau logique, un modèle décrit la structure du formulaire (Working Draft du 6 Avril 2000) –Les données sont regroupées en groupes et sous-groupes. –Données typées (string, date, durée, nombre, booléen) données mono et multi valuées –Facettes exprimant : des contraintes sur les données –min, max, integer, decimals, format, caractère obligatoire de la donnée des règles de calcul simples –extension envisagées pour intégrer des langages de scripts (javascript) Problème: –Définition incomplète et déclarée obsolète. Attente nouvelle version

47 47  STIME/DT - Alain Paoli - 2000 Cocoon 1 http://xml.apache.org/cocoon/

48 48  STIME/DT - Alain Paoli - 2000 Architecture Cocoon Requête HTTPDOM Chaîne de n Processeurs ProducteurFormateur Document HTML PDF WML …. Méthode service() du Servlet Cocoon Source d’information La chaîne de production de la page réponse se compose d’un Producteur, de 0 à n Processeur et d’un Formateur: –Le rôle du Producteur est de produire le DOM de la page réponse à la requête HTTP (à partir d’une ou plusieurs sources d’informations) –Le rôle d’un Processeur est de traiter le DOM fournit en entrée, et de retourner le DOM modifié ou enrichit. Les processeurs sont spécialisés (LDAP, SQL, …) –Le rôle du Formateur est d’appliquer une transformation XSLT pour fabriquer la présentation au format ad hoc (HTML, PDF, WML, …) Feuille de style XSLT Réponse à la requête HTTP

49 49  STIME/DT - Alain Paoli - 2000 Cocoon: Fonctionnalités Producteurs, Processeurs et Formateur sont des objets Java –Implémentent une interface donnée. On peut définir ses propres classes. –Le nom du Producteur est spécifié dans le fichier paramètre ou bien est passé en paramètre dans la requête HTTP –Les noms des Processeurs et Formateur sont spécifiés dans le document XML retourné par le producteur. Les processeurs sont exécutés dans l’ordre de leur déclaration dans ce DOM XSP: c’est le ‘JSP’ de Cocoon pour traiter les parties dynamiques –Syntaxe purement XML. –Chaque page contenant des balises XSP est compilée sous la forme d’un objet Java qui est utilisé par le processeur XSP. Système de cache mémoire –Feuilles de style XSLT parsées une fois, leur DOM est stocké dans le cache. –Une seule instance de Producteur, Processeur et Formateur par classe, mémorisée dans le cache. Idem pour le parseur XML (Xercès) et le processeur XSLT (Xalan). –La page réponse produite est stockée dans le cache. Si la même requête est traitée, avec les mêmes paramètres, Cocoon retourne la page stockée dans le cache.

50 50  STIME/DT - Alain Paoli - 2000 Cocoon: Limitations Peu adapté à la personnalisation: –Cache de type tout ou rien (version 1.8): si les pages sont personnalisées, il y a peu de chances qu’on réutilise une même page. Et de plus toute nouvelle page produite est stockée dans le cache (risque de dépassement de capacité mémoire). –L’unité de la chaîne de production est la page et non le portlet : L’unité stockée dans le cache est la page Compilation de la page en classe Java si utilisation de balises XSP dans la page. Conséquence: si n pages dynamiques, alors il y a n compilations. Conséquences, si personnalisation: –On ne peut utiliser le cache (nuit aux performances) –On ne peut utiliser le mécanisme XSP.

51 51  STIME/DT - Alain Paoli - 2000 Publication / Composition Définitions –La publication consiste à mettre à jour des sources d’informations. –La composition consiste à fabriquer une page qui agrège des informations en provenance de sources diverses. Constat: –Les sources d’informations sont rafraîchies à des intervalles de temps très divers (de la seconde à plusieurs jours). La plupart des informations ont une fréquence basse de rafraîchissement (plusieurs heures à plusieurs jours) –Les processus de publication et de compositions ne sont donc pas synchrones. Ex: arrivée d’un e-mail  publication de l’e-mail sous format XML ad hoc (1 fois), puis n composition de pages affichant le contenu de cet e-mail.

52 52  STIME/DT - Alain Paoli - 2000 Récapitulatif Problèmes / Solution

53 53  STIME/DT - Alain Paoli - 2000 Apports / Limitations

54 54  STIME/DT - Alain Paoli - 2000 Problèmes / Solutions

55 55  STIME/DT - Alain Paoli - 2000 Proposition Pour un Portail d’Information d’Entreprise

56 56  STIME/DT - Alain Paoli - 2000 Mécanisme 43 64 44 16 43 64 + =

57 57  STIME/DT - Alain Paoli - 2000 Mécanisme (0) A l’initialisation du serveur, tous les portlets sont parsés et les DOM résultats sont chargés dans un cache mémoire commun à tous les utilisateurs. –Contrainte: les portlets ont le même état persistant pour tous les utilisateurs. (1) Suite à la réception d’une demande de page (requête HTTP), le Producteur: –Parse le fichier XML décrivant la page et charge le DOM dans la session utilisateur. –Remplace les balises de la page par les balises correspondantes (copie / coller). Suivant la valeur de l’attribut "content" de la balise n’insère que la partie "résumé" ou la partie "complète". (2) Si besoin les processeurs traitent le DOM retourné par le Producteur –Un processeur peut être définit pour un portlet donné. Si l’on utilise XSP dans le portlet, c’est le processeur du portlet qui appelle le processeur XSP. (3) Le formateur recherche dans le cache session le flot de caractères HTML. –Si non trouvé, crée la présentation et la stocke dans la session –Si le contenu d’un des portlets à changé reconstruit la présentation que pour ce portlet

58 58  STIME/DT - Alain Paoli - 2000 Implémentation XForms Masculin Féminin Formulaire XForms Formulaire HTML Une classe abstraite FormProcessor: –Récupérer la liste des paramètres/valeurs dans la requête HTTP Pour chaque paramètre, contrôler la valeur par rapport aux contraintes définies dans le formulaire, et construire le nœud correspondant dans le DOM Data. –Appeler la méthode abstraite process() Un formulaire doit avoir une classe héritant de FormProcessor et implémentant la méthode process() pour traiter le DOM Data. Correspondances des noms

59 59  STIME/DT - Alain Paoli - 2000 Architecture


Télécharger ppt "1  STIME/DT - Alain Paoli - 2000 Le Portails d’Entreprise."

Présentations similaires


Annonces Google