L'IFREMER, Institut Français de Recherche pour l'Exploitation de la Mer, vient de mettre en ligne la version 4 de son portail de données géoréférencées marines SEXTANT.
Geomatys a réalisé une part importante de ce dernier puisque nous avons été en charge de la réalisation des composants "Geoviewer", "Panier", de la configuration globale de la plate-forme, de la personnalisation du portail et également de la communication inter-portlet depuis le portlet “Catalogue”, lequel a été réalisé par un autre prestataire.
Ce projet est intéressant à plus d'un titre puisqu'il a été l'occasion de mettre en application différentes solutions techniques développées par nos équipes et de les intégrer à la solution de portail Liferay pour en faire une véritable solution de type Géoportail.

Geoviewer : un visualisateur cartographique sous forme de portlet
Le socle technologique
Liferay est une solution de portail d'entreprise développée en Java/JEE, respectant les standards édictés dans le cadre du Java Community Process pour la confection de solutions de portail. L'usage des standards a permis à Liferay de constituer un "Portlet Container", réceptacle technique destiné à accueillir des "portlets" ou composants applicatifs reposant sur le standard JSR 286. De plus, il définit un mode de communication lui aussi standardisé (Inter-Portlet Communication) permettant de faire interagir des portlets pourtant réalisés dans des contextes parfaitement isolés, voire même avec des technologies ou des langages différents. Nous verrons que ces atouts ont été particulièrement précieux dans le cadre de ce projet.
Mais concentrons nous sur la plate-forme :
Outre l'exécution de portlets, Liferay apporte tout un environnement permettant de proposer une intégration poussée dans un environnement d'entreprise. Communication avec des annuaires LDAP, intégration à des solutions d'authentification SSO, CAS, OpenID, possibilité de compartimenter le portail en communautés régies par des droits et des rôles utilisateurs spécifiques, et bien d'autres choses encore.
Liferay embarque notamment une grande quantité de portlets permettant la mise en place de solutions plus classiques de gestion de contenu, d'agendas partagés et de toute une panoplie d'applications utilitaires.
Les composants applicatifs
L'enjeu du projet Sextant était de développer plusieurs composants applicatifs distincts et de les intégrer étroitement de façon à élaborer une application ne laissant transparaître une quelconque hétérogénéité. Dans ce contexte, il était alors nécessaire de mettre en oeuvre tous les avantages proposés par le standard JSR286 et proposer des portlets offrant des interfaces web riches en Javascript autour d'un noyau écrit en Java et communiquant entre eux via le protocole IPC.
Depuis trois ans maintenant, les équipes de Geomatys développent MapFaces une solution hybride mixant Java/JEE et Javascript avec pour objectif de proposer des clients WebSIG parfaitement intégrés en environnement JEE. Notre objectif était depuis longtemps tourné vers le portail et ses standards, c'est donc tout naturellement que nous avons utilisé ce framework cartographique pour concevoir les deux portlets que nous avions été chargés de développer.
MapFaces reposant sur le framework de présentation JSF élaboré dans le cadre du JCP (JSR 314), il a donc naturellement hérité d'une bonne aptitude à supporter la structuration en portlets et à proposer une parfaite intégration avec Liferay.
Le portlet Geoviewer est le composant de visualisation cartographique du portail. Cet outil permet de visualiser un grand nombre de couches cartographiques provenant d'une multitude de services WMS. Ces derniers sont fournis par des solutions variées, telles que Mapserver ou Constellation-SDI pour les sources d'informations multidimensionnelles. Ce geovisualiseur comporte toutes les fonctions classiques de ce type d'outil avec, en plus, la capacité d'interroger les services multidimensionnels et notamment les modèles Coriolis, Mars2D ou Mars3D.
MapFaces a été développé parallèlement à Constellation-SDI, nous nous sommes donc efforcés de proposer un module client pour chaque Web service proposé par Constellation. Ainsi, le Geoviewer est déjà en mesure d'interroger le service de consultation de données issues de capteurs (SOS / SOS-T) par ailleurs mis en place pour servir les informations in-situ des flotteurs fixes et dérivants gérés par l'IFREMER. Dans une dimension prospective, il y a fort à parier que les évolutions de Sextant pourront proposer la consultation de ces sources d'informations au moyen de composants additionnels.
Le portlet Panier est un module d'extraction de données reposant sur une solution en mode "batch". L'interface permet simplement de définir des jeux de données, de spécifier le système de référence spatial des données en sortie, de saisir une emprise, et de lancer la commande qui exécutera alors la tâche. Une fois l'extraction terminée, l'utilisateur sera informé par mail de la disponibilité des couches de données sur un serveur de téléchargement. Ce module se greffe à des services d'extraction existants au sein du système d'Information de l'institut et apporte une capacité d'interaction avec les autres portlets du projet.

Interactions au sein du portail Sextant
L'intégration des portlets
Ce dernier volet illustre pleinement les avantages d'une solution de portail mise en place dans un contexte multi-prestataires. Comme évoqué au début de cet article, l'Ifremer a eu recours à deux prestataires pour la réalisation des composants du portail. Le premier en charge de la mise en oeuvre du catalogue et du client qui l'exploite, le second (Geomatys en l'occurrence) en charge des deux composants sus-mentionnés et de l'intégration de l'ensemble des portlets sur le portail Liferay ainsi que de leur communication et leur configuration.
Pour ce projet, le portlet Catalogue étant développé par un autre prestataire, des technologies différentes aux nôtres ont été employées (en l'occurrence une association OpenLayers/JQuery). Nous avons récupéré les développements fournis au cours de la réalisation du projet et les avons encapsulés à du code Java afin de permettre la configuration globale dans le portail.
Enfin, après avoir intégré les trois modules métiers dans Liferay, nous avons travaillé à les faire communiquer entre eux en mode IPC. Ainsi il a été possible de faire interagir des composants développés avec des solutions techniques différentes pour en faire une solution d'apparence homogène.

Utilisation de l'IPC dans un contexte de portlets hétérogènes
Ici l'utilité de la solution portlet est double puisque cela permet aux composants de communiquer entre eux avec un niveau de granularité très fin (une action sur un bouton dans le portlet A peut provoquer une action sur un des composants dans le portlet B). Par ailleurs, les règles de gestion des droits fournies au niveau du "portlet container" s'appliquent de façon transparente à tous les portlets conçus à cet effet.
Aussi, ce concept de portlets et la capacité d'interaction apportée par ce standard ouvrent des perspectives encourageantes en matière de modularité et d'évolutions fonctionnelles pour des applications Web-SIG structurées sous formes de Géoportail. Il est important de ne pas les confondre avec certaines pratiques mettant en oeuvre des Iframes (il existe également des portlets encapsulant des Iframes), car il est alors impossible de proposer une quelconque interaction directe entre les modules.
Dans le cadre de ce projet, le portail Liferay a également été enrichi afin de permettre une gestion globale et évolutive de la configuration cartographique de chacun des portlets pour chacune des communautés. D'une manière simple, il est possible de paramétrer l'étendue initiale des contextes cartographiques, des zooms prédéfinis, l'URL du fichier de contexte cartographique à charger dans tel ou tel portlet, l'URL du serveur CS-W pour le portlet Catalogue etc... Bref, chaque communauté (ou "sous-portail" comportant ses propres portlets) est en capacité d'utiliser les mêmes modules de base, mais configurés de manières totalement différentes.

Gestion des configurations dans Sextant
L'application est consultable à l'adresse suivante : http://www.ifremer.fr/sextant