Les portails : la synthèse

 

Ce document a comme finalité la présentation díun état des lieux non exhaustif de ce que le terme de portail induit et de proposer une base de débat. Je ne prétends en aucun cas faire le tour complet de ce qui se fait et doit se faire. Ce document est un travail de recherche ayant comme base díapproche, un séminaire auquel jíai participé, sur ce thème, proposé par la société Sysdeo http://www.sysdeo.com/ et présenté par Pascal Grojean.

 

Organisation de ce document 

 

Les portails : la synthèse___________________________________________ 1

Définition____________________________________________________ 2

Historique____________________________________________________ 3

Les concepts de base díun portail_________________________________ 7

Quelques éléments nécessaires__________________________________ 8

Les espaces de liberté émergents________________________________ 10

Architecture díun portail_________________________________________ 12

Les mécanismes de fonctionnement díun portail_____________________ 18

Les solutions disponibles______________________________________ 22

Exemple de session sur le  portail Liferay___________________________ 26

Exemple 1 de configuration (code)________________________________ 28

Exemple 2 simple et complet (code)_______________________________ 30

 

 

 

 

 

Auteur : Jacquenod Frédéric

24/11/2004


 

 

Définition

 

Que signifie le terme portail ?

 

Ceci doit faire líobjet díun vrai débat, díune vraie discussion.

En effet chacun possède sa propre image de ce quíest un portail.

La réponse à cette question va entraÓner des choix techniques et organisationnels totalement différents.

Un sondage récent du journal du net concernant la vision de ce quíest un portail indique que :

 

ÿ   54% des sondés se le représentent comme un gestionnaire de contenus ;

ÿ   25% comme un serveur díapplications ;

ÿ   21% comme un élément de partage et de travail collaboratif.

 

Líévolution depuis une dizaine díannées des outils informatiques a fait évoluer cette représentation.

On le voit díailleurs, dans les définitions suivantes :

 

ÿ   Le site de líacadémie de Caen http://www.etab.ac-caen.fr/cdti-orne/circos/laigle/rech/#portail définit la notion de portail ainsi :

 

´ Un portail est une page WEB  qui donne accès à un ensemble de sites intéressant pour une population donnée.ª

 

ÿ   Líuniversité de Lausanne http://my.unil.ch/jahia définit la notion de portail ainsi :

 

´ Le portail MyUNIL est un bureau virtuel, adaptatif, donc dynamique, personnalisé, proposant un accès unifié à diverses sources d'information et services, permettant d'interagir avec d'autres personnes, applications ou contenus pertinents et intégrant les activités administratives et académiques. ª

 

A noter que le portail mis en place est réalisé à partir du logiciel open source jahia http://www.jahia.org/jahia/Jahia.

 

 

Qui a raison ? Qui est le plus proche de la réalité ?

Un petit historique de líévolution des portails permet peut-Ítre díy voir plus clair.


 

Historique

 

Dans les années 1998, avec líavènement des technologies Web, notamment les outils permettant de réaliser des intranets, de nombreuses entreprises (dans ce terme, jíinclus évidemment les administrations de toutes sortes) ont mis en place des espaces de publications électroniques (on ne parle pas alors de portail).

 

Souvent, dans la mÍme entreprise, plusieurs espaces ont été créés, sans concertation, à des fins propres à chaque service.

La plupart du temps, ces mises en place, se sont faÓtes sans mettre dans la ´ confidence ª les informaticiens concernant les choix techniques. Pour cause, ces choix techniques ayant été effectués par des responsables plus proches de la partie communication que de la partie technique (cela se retrouve encore de nos jours).

Résultat, dans une mÍme entreprise, des outils différents ont été installés pour effectuer un travail identique mais sans mise en commun de quoi que ce soit (technique, contenu, personnel).

Líoutil ´ intranet ª devait permettre une mise en commun de contenus, de savoirs faire, voir mÍme de personnels, alors que dans ces cas, líeffet a été contraire et a tendu plutÙt vers une segmentation de líentreprise et une hétérogèneÔsation des outils.

 

Ces outils, malgré tout, se sont trouvés Ítres très utiles et les besoins sont devenus croissants, les problèmes aussi Ö

Les premiers outils se sont alors révélés des choix discutables car peu évolutifs, compliqués à mettre en úuvre. Un éléments a été aussi le plus souvent oublié, líélément humain. Il est une chose de choisir, díinstaller, des outils de publications, mais, encore faut il, ensuite, pouvoir mettre les contenus à jour, les suivre, les modifier Ö Souvent cette partie a aussi été oubliée. On parle de líavant, du pendant mais pas de líaprès.

 

De fait, les directions díentreprise ont repris la main sur ces déploiements et ont tenté de rationaliser tout cela. Pour ce faire, la partie technique a été remise en avant afin de proposer des choix homogènes et proches des demandes plus complexes des utilisateurs.

Les premiers portails sont alors apparus proposant un point díaccès unique et homogène aux informations permettant ainsi, de fédérer, de rassembler, de capitaliser toute la chaÓne de la partie technique à la partie humaine, en passant par les savoirs.

Ces nouveaux choix techniques ont dš prendre en compte les nouvelles demandes des utilisateurs telle la personnalisation de leur navigation, la sophistication des outils comme la recherche díinformations.

 

Historiquement, les intranets des entreprises se sont transformés en portails pour rationaliser toute la chaÓne. Líévolution des techniques et des besoins les a fait évoluer. On peut les classer en 4 catégories :


ÿ    Portail de 1ère génération : portail díagrégation (centralisation des informations dispersées)

 

 

ÿ    Portail de 2ème génération : portail personnalisé (adaptation du portail au profil de líutilisateur implicitement ou explicitement ñ on parle parfois de portail pré-portlets). Ce type de portail pouvait supporter les canaux sans-fil de type Wap (Wireless Application Protocol).

 


ÿ    Portail de 3ème génération : portail díintégration (accès à des applicatifs, gestion de contenus, agrégation, personnalisation, recherche avancée, outils collaboratifs, accès universel Ö) basé sur les portlets.

 

 

ÿ    Portail de 4ème génération : portail díunification. Dans les années à venir, ils :

 

¸     Seront multi-supports (pda, téléphonie) appelé aussi MAG (Multichannel Access Gateway) ;

¸     proposeront des applications métiers en síappuyant sur líapproche SOA (Service-oriented architecture) ;

¸     se baseront sur des composants (portlets) multi-fournisseurs (WSRP Web Services for Remote Portlets) pour la communication et líintégration inter-portails ;

¸     déploieront des applications composites ;

¸     Ö

 


 

On trouve la définition officielle de ce quíest un portail de 4ème génération en lisant le draft JSR168 (Java Specification Requests http://www.jcp.org/aboutJava/communityprocess/review/jsr168/) concernant les portlets (composants du portail) :

 

A portal is a web based application that commonly provides personalization, single sign on, content aggregation from different sources and hosts the presentation layer of Information Systems. Aggregation is the action of integrating content from different sources within a web page. A portal may have sophisticated personalization features to provide customized content to users. Portal pages may have different set of portlets creating content for different users.

 


 

Les concepts de base díun portail

 

Il existe 3 grands types de portails :

 

ÿ    B2B : Business to Business (Portail orienté partenaire ou client díentreprises) ;

ÿ    B2C : Business to Consumer (portail grand public) ;

ÿ    B2E : Business to Employee (portail destiné aux collaborateurs de líentreprise dans le cas díune université, cela concerne les étudiants et personnels).

 

Quel que soit le type de portails, il existe 3 concepts principaux qui déterminent ce quíil doit Ítre :

 

ÿ    Le rÙle : que líon peut définir comme le ciblage de líutilisateur, son profil. Un utilisateur peut posséder plusieurs profils selon son implication au sein du portail, allant du simple utilisateur non référencé à líadministrateur du portail. Selon ces rÙles, les possibilités ne seront pas les mÍmes.

ÿ    Les portlets : ce sont les composants ou ingrédients qui sont proposés sur le portail, ils forment les contenus proposés. Ils sont personnalisables et doivent respecter la norme JSR168 ou WSRP. Ce sont des servlets spécialisées.

ÿ    Les templates : elles permettent de standardiser líagencement et líorganisation des éléments du portail.

 

Le portail doit remplir un certain nombre de missions :

 

ÿ    Fédérer les services (un point díentrée unique pour tous les services (données et applications)) ;

ÿ    Simplifier líaccès aux informations (moteur de recherche Ö) ;

ÿ    Sécuriser les transactions et les contenus ;

ÿ    Proposer des outils collaboratifs (forums Ö) ;

ÿ    Evolutif (tant techniquement que rédactionnel) ;

ÿ    Ne pas Ítre frustrant en tentant de tout centraliser sans proposer díespaces de liberté, ne pas rendre líinformation et sa publication ´ stalinienne ª.

 

Pour que ces enjeux et ces missions soient remplis par le produit portail mis en place, il est nécessaire de bien penser au rÙle que doit jouer ce portail, on parle de taxonomie du portail.


 

Quelques éléments nécessaires

 

ß       Pour Ítre un succès, le portail doit avant tout Ítre utile, simple à

utiliser, personnalisable, réactif, à jour tout en proposant des outils à la pointe.

 

ß       Pour cela, un élément important est le suivi de ce portail. Il est

essentiel que le maÓtre díouvrage prenne conscience quíaussi beau que puisse Ítre le produit, il níaura díintérÍt pour les utilisateurs que si il vit.

Son développement futur, la mise à jour des informations, líajout díoutils Ö sont des éléments aussi importants que la mise en place et qui nécessitent un potentiel humain à la hauteur (quantitativement et qualitativement) des enjeux. Il est nécessaire de posséder des outils díadministration qui permettent notamment de collecter les informations ainsi que le personnel pour les analyser et en déduire les comportements des utilisateurs pour une meilleure adhérence du produit aux besoins.

 

ß       Pour une bonne gestion et un développement du portail, il est  nécessaire de

permettre une administration ´ conjointe ª. Une délégation des droits díadministration doit Ítre possible.

 

ß       Un portail de 4ème génération, comme celui díune université ouverte

vers le monde se doit díÍtre multilingues.

 

ß       Avec líarrivée des technologies mobiles, le portail doit Ítre

multi-supports (PDA, téléphonie Ö).

 

ß       Certains portails, et cela peut Ítre utile dans le cadre díune

université, proposent la possibilité de synchroniser son poste local avec son ´ poste distant ª à travers le portail. Vous pouvez ainsi travailler en offline et ensuite synchroniser les contenus. Selon líoutil, cette synchronisation peut  síeffectuer de manière unidirectionnelle ou bi-directionnelle.

 

ß       Un élément à ne pas oublier : la communication autour de ce

portail afin de le faire connaÓtre, díexpliquer son intérÍt et díexpliquer líintérÍt quíil y a à líutiliser.

 

Résumé

 

Un portail de base peut ou doit comporter (non exhaustif et modulable) :

 

ÿ    une sécurisation des accès de type SSO (Single Sign On) ;

ÿ    un profilage de líutilisateur pour une consultation d'informations personnalisée ;

ÿ    une administration et une gestion des contenus (moteur de recherche, ajout, mise à jour, validation et publication de documents et/ou de données Ö) avec possibilité de délégation ;

ÿ    des espaces de travail collaboratif (mél, agenda, forum Ö) ;

ÿ    des applications ´ locales ª (demandes de congés, relevé de carrière, réservation de billets via le CE, menu cantine, consultation de son dossier personnel, de ses notes Ö) ;

ÿ    des applications métiers (accès à des outils de gestions Ö) ;

ÿ    une disponibilité 24h/24h, 7j/7j ;

ÿ    une évolutivité des contenus et des outils ;

ÿ    une accessibilité pour tous et par tous les environnements (OS, navigateurs, PDA Ö) ;

ÿ    des espaces de liberté ;

ÿ    Ö

 


 

Les espaces de liberté émergents

 

Pour laisser un espace de liberté au sein de ces portails, des outils sont parfois proposés. Ils permettent aussi díaméliorer la communication et de simplifier son échange comme les blogs ou les wiki (attention aux débordements dans les contenus voir líaffaire récente de blogs de la radio skyrock en France).

Des logiciels très simples et facilement installables sont disponibles pour mettre en ligne ces sites web díun ´ nouveau ª type.

 

ÿ    Les blogs (contraction de web logs) sont des sites web personnels composés

principalement de líactualité en rapport avec son créateur un peu comme un journal intime. Ces éléments sont très prisés des entreprises, qui donnent ainsi un espace díexpression à ses employés avec un lien sur le portail de cette mÍme entreprise. En France, le journal Libération a lancé la mode en proposant un blog à ses journalistes durant les élections américaines.

 

 

ÿ    Le WiKi, dont le nom provient du mot WikiWiki qui signifie ´ vite ª en hawaÔen,

est  un site web collaboratif o˜ tout intervenant peut ajouter, modifier les pages de la communauté de manière très simple. A la différence du blog, le wiki exprime la voix díun groupe et non pas díun individu. Outre-atlantique, les entreprises utilisent ce système, en France il en existe peu. Par contre, il en existe un connu qui est ouvert à tous : CraoWiki (http://wiki.crao.net/).

 

 


 

Architecture díun portail

 

Le terme architecture peut englober de nombreux points qui vont du graphisme aux choix techniques.

 

Du cÙté utilisateur, ce portail doit Ítre personnalisable tant dans son contenu que dans sa présentation. Ne pas oublier que líutilisateur est au cúur du système et que le portail est fait pour quíil puisse líutiliser dans les meilleures conditions.

 

ÿ    Graphisme

 

Une ligne directrice est fournie par les responsables du projet mais, il peut Ítre nécessaire de proposer à líutilisateur (comme le font les portails jahia ou liferay), une personnalisation de son environnement comme cela existe le plus souvent sur les postes de travail de type PC via une conservation de ses préférences. On parle de skin (Ensemble de paramètres et d'images définissant l'apparence d'une application, díune page web Ö).

Malgré tout, quels que soient les outils díaccès et notamment les outils mobiles (PDA, Portable ...) il faut garder en mémoire que líécran níest pas un espace extensible à líinfini.

Pour palier à ce problème, il existe des astuces pour organiser une page. Cette organisation à líécran se nomme layout.

Le plus souvent les pages proposent des onglets (pane).

On peut retrouver ces recommandations dans les documents associés au développement du portail ESUP (Environnement numérique de travail díaccès intégré aux services pour les étudiants et le personnel de líenseignement supérieur) à líadresse http://www.esup-portail.org/.

 


 

ÿ    Accessibilité

 

Il existe des recommandations pour l ëaccessibilité aux données quíil peut Ítre utile de consulter et díessayer de suivre comme líindique le site de líADAE (Agence pour le Développement de líAdministration Electronique http://www.adae.gouv.fr).

Ces recommandations sont proposées par le W3C sous líacronyme WAI (Web Accessibility Initiative) à líadresse http://www.w3.org/WAI.

 


 

ÿ    Les Portlets

 

Pour mettre en úuvre ces éléments, les portails de 3ème et 4ème génération utilisent des portlets. Ces éléments ont été initiés en 1999 par Apache dans le projet de développement díun portail open source nommé jetspeed (http://portals.apache.org/).

 

 

Les portlets sont les composants JAVA que líon retrouve au sein du portail au niveau applicatifs (voir la définition ci-dessous).

 

Définition

 

´ Module intégré à un portail d'entreprise, qui permet à l'utilisateur de disposer, dans la mÍme fenÍtre, d'un accès centralisé et convivial à différentes ressources (données, applications, sites Web, etc.), de modifier l'interface du portail selon ses besoins et de personnaliser ainsi son environnement de travail. ª

 

Un portlet (ou une portlet) est líéquivalent díun servlet mais à líintérieur díun portail.

Un portlet est construit sur la base díune applet mais uniquement pour une utilisation au sein díun portail.

Le mot Portlet provient de la contraction de PORTail et appLET.


 

Rappel

 

ß       Une applet est un petit programme, en langage JAVA conÁu pour Ítre téléchargé via un réseau à chaque fois quíil doit Ítre utilisé à travers un navigateur. Une applet est donc exécutée cÙté client. En franÁais, on parle díapplette ou díappliquette.

ß       Une servlet est une applet qui síexécute cÙté serveur.

 

Les règles de développement des portlets sont définies au sein de deux communautés JCP (Java Community Process) et OASIS (Organization for the advancement of structured information standards)

 

ÿ    JSR168 (Java Specification Requests 168)

http://www.jcp.org/en/jsr/ soutenu par Ibm, Sun, Apache, palm Ö dans le but de líintégrer dans J2EE.

 


 

ÿ    WSRP (Web services remote portal)

http://www.oasis-open.org soutenu par Ibm, Sun, Oracle, Citrix, Microsoft Ö

 

 

-       Les Web Services sont décrits dans un document WSDL (Web Services Description Language) en XML (eXtensible Markup Langage) qui permet de décrire les web services et la faÁon díy accéder. Sa version actuelle est la 1.1 que vous pouvez retrouver sur le site du W3C http://www.w3.org/TR/wsdl.

 

-       Pour communiquer, les web services utilisent le protocole SOAP (Simple Object Access Protocol) dont la version actuelle est 1.2. Vous retrouvez là aussi les spécifications sur le site du W3C http://www.w3.org/TR/soap/. Vous pouvez aussi, obtenir des informations sur le site http://www.w3schools.com/soap qui propose un tutorial assez bien fait.

 

-       Pour publier et rechercher ces Web Services, le protocole UDDI (Universal Description, Discovery and Integration) est utilisé. Ce protocole est défini par le groupement OASIS (vu précédemment) et a pour but de rendre interopérable les web services entre toutes les plateformes et applications à travers líinternet. Il se base sur les travaux du W3C à travers líutilisation de SOAP, XML, HTTP et de líIETF (Internet Engineering Task Force http://www.ietf.org) pour des protocoles comme le DNS (Domain Name Service). Vous pouvez obtenir les informations à líadresse : http://www.uddi.org/.

 

Logo

Adresse Web

 

http://www.w3.org/TR/wsdl

 

http://www.w3.org/TR/soap/

 

http://www.uddi.org/

 

Pour mieux comprendre les implications des Web Services vous pouvez consulter le site :

http://www.service-architecture.com/web-services/articles/index.html


 

 

Les mécanismes de fonctionnement díun portail

 

On le voit, les portails utilisent essentiellement la technologie Java en se basant sur les portlets.

Les portlets se situent au niveau de la couche application du portail.

 

ÿ   MVC (Model View Controller)

 

Du point de vue mise en place, les portlets sont encapsulés dans une architecture MVC. Ce mode de fonctionnement est apparu en 1979 avec smalltalk-80 et développé par Trygve Reenskaug.

 

 

Vous retrouvez le descriptif díorigine à líadresse http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html

ainsi quíun document sur les origines du MVC à líadresse de son créateur qui pointe sur un Ö Wiki http://c2.com/cgi/wiki?ModelViewControllerHistory

 

Définitions

 

ÿ   Le modèle représente l ëensemble des données utilisées par líapplication indépendamment de la présentation graphique (gérée par la vue) et des interactions de líutilisateur (gérées par le contrÙleur) ;

ÿ   La vue ou plutÙt les vues sont les différentes présentations graphiques à líécran des données du modèle ;

ÿ   Le contrÙleur gère les interactions de líutilisateur (souris, clavier Ö) et définit les actions à effectuer sur les données du modèle.

 


 

Le format du MVC est sensiblement identique pour un portail.

 

 

Le fonctionnement du MVC est le suivant (Voir JSR168)

 

ÿ   Intéraction de líutilisateur via un accès au portail ;

ÿ   A travers la personnalisation, le portail identifie et invoque les portlets ;

ÿ   Pour chacune des portlets, le conteneur appelle une méthode render() (vue) ou une méthode processAction() selon le mode dans lequel se trouve la portlet (view, edit Ö) ;

ÿ   La méthode render fait alors appel à une méthode doXX() qui à travers une JSP (Java Server Page http://java.sun.com/products/jsp/) va afficher les informations dans une page html (doEdit(), doView(), doHelp() Ö).

 

Le schéma suivant montre líarchitecture basique díun portail

 

 

Au niveau de ce MVC, trois entités entrent en jeu

 

¸     Le portail qui reÁoit la requÍte de líutilisateur, líidentifie, personnalise la page en invoquant les portlets désirés, active les portlets à travers le gestionnaire de portlets et en fonction des réponses construit la page ´ portail ª ;

¸     Le gestionnaire de portlets (appelé aussi conteneur ou container en anglais) qui gère le cycle de vie des portlets à travers les méthodes init(), processAction(), render() et destroy() ;

¸     Les portlets qui traitent les demandes (processAction), effectuent le rendu (render) et envoient cette information au conteneur (html).

 

La portlet joue donc les 3 rÙles à travers des appels Java 

 

ÿ   Modèle ;

ÿ   Vue ;

ÿ   ContrÙleur.


 

Les modes díusage de la portlet peuvent Ítres

 

ÿ   View (affichage des données du modèle) ;

ÿ   Edit (modification des préférences de líutilisateur sur la portlet) ;

ÿ   Help (aide associée à la portlet) ;

ÿ   About (description de la portlet) ;

ÿ   Config (configuration de la portlet) ;

ÿ   Preview (visualisation de la portlet avant acceptation des modifications) ;

ÿ   Print (Impression des données affichées dans la portlet) ;

ÿ   Il peut y en avoir díautres ´ constructeur ª.

 

On peut accéder à certains de ces états à travers les icÙnes associés à la portlet (icÙnes en haut à droite)

 

 

Les états de la portlet peuvent Ítres

 

ÿ   Normal (la portlet partage líécran selon la mise en page choisie) ;

ÿ   Maximized (la portlet prend tout líécran) ;

ÿ   Minimized (on ne voit que la barre de menu de la portlet) ;

ÿ   Closed (supprime la portlet de la page, elle peut Ítre réactivée à travers le menu de préférences associé à la page).

 

 

Þ

 

 

 

 

 

 


 

Les solutions disponibles

 

Il existe des solutions ´ clé en main ª commerciales ou non qui proposent des solutions portails ou qui ressemblent à un portail. Voici une liste non exhaustive.

 

Attention

 

Toutes les solutions ne se valent pas et surtout níont pas le mÍme périmètre de travail (simple gestion de contenus, travail collaboratif ou vraie solution portail basée sur les portlets).

 

Une étude récente évalue le marché ´ portail ª comme ceci

 

 

Vous retrouvez ces informations sur le site web :

http://solutions.journaldunet.com/dossiers/chiffres/gestioncontenu.shtml


 

ÿ   Les solutions généralistes

 

Société

Logo

Solution

BEA

BEA Weblogic Portal

http://www.bea.com/

IBM

Websphere

http://www-306.ibm.com/software/websphere/

Bowstreet

           

 

 

Bowstreet Factory

http://www.bowstreet.com/toolsandtechnology/

Mediapps

Net.Portal

http://www.mediapps.com/nportal

Oracle

Oracle9iAS Portal

http://www.oracle.com/technology/products/ias/portal

PeopleSoft

Enterprise Portal

http://www.peoplesoft.fr/

 

SAP

mySAP Enterprise Portal

http://www50.sap.com/france/

Tibco

PortalBuilder et PortalPacks

http://www.tibco.com/international/france/

Sun

Sun ONE Portal Server

http://wwws.sun.com/software/products/portal_srvr/home_portal.html

Sybase

Enterprise Portals

http://www.sybase.fr/francais/products/enterprise-portal.jsp

 


 

ÿ   Autres types de portails

 

ATG

ATG Portal

http://www.atg.com/en/products/portal/

Hummingbird

Enterprise Content Management Solutions

http://www.hummingbird.com/international/france/index.html

Instranet

Content-Based Applications Suite

http://www.instranet.fr/

Microsoft

SharePoint Portal Server (collaboratif)

http://www.microsoft.com/sharepoint/

Plumtree

Plumtree Corporate Portal (collaboratif)

http://www.plumtree.com/products/platform/

Tridion

Portal Server Integration (gestion de contenus)

http://www.tridion.com/

Verity

Verity K2 Entreprise

(gestion de connaissances)

http://www.verity.com/fr/produits/enterprise.html

Vignette

Vignette

(gestion de contenus)

http://www.vignette.com/fr/fr/home

 


 

ÿ   Les portails open-source

 

Apache

Jetspeed

http://portals.apache.org/

eXo platform

Exo Portal

http://www.exoplatform.com/portal/faces/public/exo/home/my-portal

Memtum

Group

Jporta

http://jporta.sourceforge.net/

Jahia

Jahia

http://www.jahia.org/jahia/Jahia

Ja-sig (iniversités)

uPortal

http://www.uportal.org/

Liferay

Liferay Entreprise Portal

(Voir exemple ci-dessous)

http://www.liferay.com/home/index.jsp

Uzine

Spip

(publication sur internet)

http://www.spip.net/fr

Zope

Zope (langage python)

http://www.zope.org/

 


 

Exemple de session sur le  portail Liferay

 

Vous pouvez vous connecter sur une démo personnalisée de portail utilisant des portlets à líadresse : http://demo.liferay.net/c/portal_public (http://demo.liferay.net/c/portal_public)

 

 


 

Vous obtenez la page suivante :

 

 

Les portlets visibles ont été choisies et mises en page selon mes préférences.


 

Exemple 1 de configuration (code)

 

Les portlets sont des objets Java, ils peuvent Ítres inclus dans une archive .war (web application archive) pour Ítre déployées sur le serveur díapplication J2EE (JBoss, TomCat Ö).

La configuration des portlets est faite au moyen díun fichier de description au format xml qui se situe sur le serveur web.

 

Líexemple provient du site : http://portlets.blogspot.com/

 

ÿ   Exemple fichier portlet.xml

 

   1:<?xml version="1.0" encoding="UTF-8"?>

   2:

   3:<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd" version="1.0"

   4:         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

   5:xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd">

   6:  <portlet>

   7:    <description lang="EN">query_portlet</description>

   8:    <portlet-name>query_portlet</portlet-name>

   9:    <display-name lang="EN">query_portlet</display-name>

  10:    <portlet-class>QueryPortlet</portlet-class>

  11:    <init-param>

  12:      <name>view_url</name>

  13:      <value>/templates/view.jsp</value>

  14:    </init-param>

  15:    <init-param>

  16:      <name>edit_url</name>

  17:      <value>/templates/edit.jsp</value>

  18:    </init-param>

  19:    <init-param>

  20:      <name>help_url</name>

  21:      <value>/templates/help.jsp</value>

  22:    </init-param>

  23:    <expiration-cache>-1</expiration-cache>

  24:    <supports>

  25:      <mime-type>text/html</mime-type>

  26:      <portlet-mode>edit</portlet-mode>

  27:      <portlet-mode>view</portlet-mode>

  28:      <portlet-mode>help</portlet-mode>

  29:    </supports>

  30:    <supported-locale>en</supported-locale>

  31:    <portlet-info>

  32:      <title>Query Portlet</title>

  33:      <short-title>Query Portlet</short-title>

  34:    </portlet-info>

  35:    <portlet-preferences>

  36:       <preference>

  37:          <name>title</name>

  38:          <value>Employees</value>

  39:       </preference>   

  40:       <preference>

  41:          <name>sql</name>

  42:          <value>SELECT * FROM emp</value>

  43:       </preference>

  44:       <preferences-validator>QueryPreferencesValidator</preferences-validator>

  45:     </portlet-preferences>

  46:  </portlet>

  47:</portlet-app>

 

On retrouve les 3 modes obligatoires edit, view et help qui sont initialisés au niveau des balises init-param au sein de laquelle se situe le programme jsp appelé (balise value) :

 

12:      <name>view_url</name>

13:      <value>/templates/view.jsp</value>

14:    </init-param>

 

La partie codage Java est un autre domaine, je ne la fournis donc pas. Vous pouvez la trouver précisément à líadresse http://www.developer.com/java/web/article.php/3372881.

 

Le rendu final, avec líinteraction à la base de données pour récupérer les informations, donne la visualisation de la portlet comme suit :

 


 

 

Exemple 2 simple et complet (code)

 

Pour bien comprendre les différents éléments qui sont impliqués dans la mise en place díune portlet sur un portail voici un exemple complet associé au portail Liferay.

Le but est simplement díafficher un texte dans une portlet au sein du portail.

 

La portlet mise en place est une simple portlet sans interaction possible, qui affiche juste un mot de jour sur la page du portail.

 

Il existe une arborescence web dans laquelle doivent Ítres installés les différents éléments comme le fichier descriptif en Xml de la portlet, le code Jsp, le code Java de la portlet Ö

 

Dans Liferay, chaque portlet possède un fichier descriptif (comme celui présenté dans le premier exemple). Le fichier descriptif se situe dans le dossier WEB_INF. Dans cet exemple il se nomme mot_du_jour.xml.

 

Ce fichier à lui seul ne suffit pas.

Il existe un fichier global liferay-portlet.xml qui recense toutes les portlets disponibles.

Il se situe aussi dans le dossier WEB-INF. Il est lié à la description de la portlet (mot_du_jour.xml) au moyen de son identifiant qui se situe au sein de la balise Xml <portlet-name> du fichier mot_du_jour.xml.

 

Afin que la porttet ait la possibilité díÍtre incluse au sein de la page de présentation du portail par líutilisateur, il faut quíelle soit indiquée au sein du fichier

liferay-display.xml qui se situe dans le dossier WEB-INF.

 

Pour le moment, seuls les fichiers de descriptions sont mis en place, il manque líessentiel, à savoir la portlet elle mÍme.

La portlet développée en langage Java, est associée à une classe et mise dans líarchive .war. Son appel se situe au niveau de la balise Xml <portlet-class> dans son fichier de configuration mot_du_jour.xml


 

Voici le code associé à ces 4 fichiers :

 

ÿ   mot_du_jour.xml

 

<portlet>

    <portlet-name>mdp_portail</portlet-name>

    <display-name>Mot du Jour</display-name>

    <portlet-class>

       com.liferay.portlet.mdp.MotDuJour

    </portlet-class>

    <expiration-cache>0</expiration-cache>

    <supports>

        <mime-type>text/html</mime-type>

    </supports>

    <portlet-info>

        <title>Mot du Jour</title>

        <short-title>MDJ</short-title>

        <keywords>Mot jour</keywords>

    </portlet-info>

    <security-role-ref>

        <role-name>Power User</role-name>

    </security-role-ref>

    <security-role-ref>

        <role-name>User</role-name>

    </security-role-ref>

</portlet>

 

En bleu, la partie qui permet de lier le fichier de description à la portlet située dans líarchive.

 

ÿ   liferay-portlet.xml

 

<portlet id="mdp_portail" struts-path="mot_du_jour" narrow="true" />

 

La portlet se situe dans la colonne la moins large (narrow).

 

ÿ   liferay-display.xml

 

<category name="category.info">

    <portlet id="mdp_portail" />

</category>

 

Category.info doit Ítre référencé dans le fichier

/portal-ejb/classes/content/Language.properties afin de proposer le texte vu par líutilisateur dans les catégories de portlets quíil peut inclure. Exemple category.info=Informations.

Il verra dans la liste une catégorie informations o˜ la portlet Mot du Jour sera disponible.


 

ÿ   Code Java de la portlet

 

La classe MotDuJour hérite des classes supérieures :

 

java.lang.Object

  extended byjavax.portlet.GenericPortlet

      extended bycom.liferay.portlet.mdp.MotDuJour

 

Elle possède simplement 2 méthodes doView et processAction.

 

package com.liferay.portlet.mdp;

import com.liferay.portal.util.Constants;

import java.io.IOException;

import javax.portlet.ActionRequest;

import javax.portlet.ActionResponse;

import javax.portlet.GenericPortlet;

import javax.portlet.PortletException;

import javax.portlet.RenderRequest;

import javax.portlet.RenderResponse;

 

 

public class MotDuJour extends GenericPortlet {

 

public void doView(RenderRequest req, RenderResponse res)

throws IOException, PortletException {

res.setContentType(Constants.TEXT_HTML);

res.getWriter().print("Vous disposez díun nouveau calendrier personnalisable !");

}

 

public void processAction(ActionRequest req, ActionResponse res)

throws IOException, PortletException {

}

 

}