Micro-projet Conception et développement d'application Oracle/Web
Mastère Internet et Systèmes Répartis
2000-2001
Introduction
Il
s'agit dans ce TP d'aborder les problèmes de conception de schéma et
ensuite de prototypage d'applications bases de données dans un
environnement Web. La phase de conception est abordée à l'envers, c'est
à dire que l'on va faire la rétro-conception d'un schéma relationnel
existant et non pas concevoir un schéma conceptuel de données à partir
d'une analyse des besoins.
Les outils et langages utilisés seront GEM (partie
conception), SQL (définition et accès à la base de données), Java/JDBC
(génération de code Javascript), Javascript et HTML (formulaires
clients) et la passerelle Oracle/Web (soumission de requêtes SQL via
les formulaires HTML).
Phases de développement
Le TP se déroule selon les phases suivantes :
- rétro-conception du schéma relationnel abstrait.
Le domaine visé est celui des portails électroniques qui permettent
l'accès à des ressources à partir d'une classification. Le schéma doit
être générique et doit permettre de modéliser n'importe quelle
classification (à partir du moment ou elle est hiérarchique) et
n'importe quelle ressource (à partir du moment ou on en a une
description minimale),
- le schéma conceptuel de type Entité-Association qui a été obtenu à
l'étape précédente va être saisi dans un outil de conception qui
s'appelle GEM. Cet outil offre un éditeur graphique spécialisé ainsi
qu'une génération du code SQL représentant la base de données. Une fois
le code SQL obtenu il va être exécuté sous Oracle via cette interface
Web (en faisant un copier/coller du contenu de la fenêtre GEM dans la
fenêtre de saisie de requêtes SQL de l'interface),
- construction de l'application Web. Celle-ci va comporter trois grandes fonctionnalités :
- création d'un portail. Cette fonction est restreinte
à l'administrateur de l'application. Elle permet de rajouter un nouveau
portail donc une nouvelle hiérarchie. Les fonctions attendues ici sont
la consultation des hiérarchies existantes et l'insertion d'une
nouvelle hiérarchie,
- ajout d'une ressource dans un portail existant. Cette fonction est
offerte aux utilisateurs qui peuvent ajouter des resources sur le
portail. L'ajout de ressources consiste d'une part à décrire la
ressource et d'autre part à l'indexer, c'est à dire choisir quelle(s)
entrée(s) de la classification correspond à la ressource,
- navigation dans la classification dans un but de recherche de
ressources. Cette fonction est offerte à tous les utilisateurs du
portail. Il s'agit de pouvoir se déplacer dans la classification et
d'accéder aux ressources indexées par le nœud courant. Il faut donc
supporter les fonctions de navigation dans la classification. Pour ce
faire, nous allons utiliser un programme Javascript appelé Joust qui
réalise cette fonction. Cependant Joust nécessite une description de la
classification en Javascript qui est assez longue et pénible à faire.
Pour éviter ce travail on générera automatiquement ce code à partir du
contenu de la base de données. Cette génération se fera en par un
programme Java utilisant l'API JDBC,
- interrogation des ressources sans navigation : cette fonction est
offerte à tous les utilisateurs. Il s'agit de pouvoir interroger
directement les ressources sans passer par une navigation. Une
expression de recherche sera une conjonction ou une disjonction
d'entrées de la classification que l'on aura choisies via un menu
déroulant. Une fonction Javascript transformera cette suite d'entrées
en une requête SQL qui sera envoyée à la passerelle Oracle/Web.
Travail à faire
Le
travail se fera par groupe de 2 ou 3. Tous les groupes vont faire les
phases 1 et 2, par contre pour la phase 3 chaque groupe va choisir une
des 4 fonctionnalités (sachant qu'il faut que toutes les
fonctionnalités soient choisies). Le but final est d'avoir à la fin un
portail qui fonctionne avec toutes les fonctionnalités. Ce portail sera
utilisé dans un premier temps comme portail dans le domaine des TIC
pour l'INT en indexant les ressources des enseignants-chercheurs.
Schéma type pour Oracle
Quelques explications sur le schéma de la BD
Exemple de fichier html/Javascript pour Joust
Exemple de code à générer pour Joust