FR version

Transcription

FR version
ItemAny
PFE
[email protected]
Direction PFE
Documentation
Technique
eip_2009_itemany_tech_fr.odt
FA/PFE/FR/TD/003
gau_z, lam_y, lavida_f, leprev_a, mbiya_e
Version 3
ept5
© Copyright 2007 – PFE EPITECH
[email protected]
Projet de fin d'études
Sommaire
1. Présentation.................................................................................................................................4
2. Architecture globale....................................................................................................................6
3. Website........................................................................................................................................8
A. API..........................................................................................................................................8
B. Partie graphique.....................................................................................................................9
C. Partie développement...........................................................................................................10
4. Java Client................................................................................................................................13
5. REST interface..........................................................................................................................16
6. Bugs connus..............................................................................................................................19
7. Références.................................................................................................................................19
8. Contact......................................................................................................................................20
eip_2009_itemany_tech_fr.odt
[email protected]
2/20
gau_z, lam_y, lavida_f, leprev_a, mbiya_e
Projet de fin d'études
Historique des versions:
Version 1.0 () :
- Première version de la documentation technique.
Version 2.0 (4 juin 2008) :
- Ajout d'informations supplémentaires dans la partie présentation.
- Ajout de la partie Javadoc.
Version 2.5 (13 Octobre 2008) :
- Mise à jour de la partie REST
- Ajout de la partie historique des versions.
- Ajout de la partie Contact
Version 3.0 (5 décembre 2008) :
- Mise à jour des schémas
- Corrections mineures
eip_2009_itemany_tech_fr.odt
[email protected]
3/20
gau_z, lam_y, lavida_f, leprev_a, mbiya_e
Projet de fin d'études
1. Présentation
Qu'est-ce que le projet de fin d'étude?
Le projet de fin d'études est un projet d'équipe à réaliser en deux ans. Ce projet qui
doit être validé par le LabPFE, a été choisi par toute l'équipe, car nous trouvions ce projet
fort intéressant. Ce projet part d'une simple idée et doit être mené à bien.
Qu'est-ce que Itemany?
Notre projet est basé sur l'aspect communautaire, et possède en plus du site web,
un logiciel de gestion de collections qui ne nécessite pas de connexion internet.
De nos jours la plupart des sites populaires sont des sites communautaires, c'est pourquoi
cela nous a mené à réfléchir aux interactions entre la machine de l'utilisateur et Internet.
Itemany a pour but de regrouper tous ces thèmes en une seule plateforme.
On pourra y trouver toutes sortes d'informations sur les utilisateurs, ainsi que des groupes
ou communautés liées par leurs centres d'intérêts.
L'idée est de permettre à n'importe quel utilisateur de gérer ses collections, de les mettre
en ligne, et d'échanger des idées sur ces collections.
Schéma de base du projet:
eip_2009_itemany_tech_fr.odt
[email protected]
4/20
gau_z, lam_y, lavida_f, leprev_a, mbiya_e
Projet de fin d'études
Que vise Itemany ?
Notre projet vise des personnes de n'importe quel tranches d'âges . En effet, il sera
possible de stocker n'importe quel type de collections, et donc n'importe qui devrait trouver
de l'intérêt à notre projet à cause de la diversité des collections.
Que vise ce document ?
Ce document est destiné aux développeurs et partenaires qui aimerait en savoir
plus sur la façon dont le projet fonctionne, son architecture etc...
Diagramme applicatif du projet:
eip_2009_itemany_tech_fr.odt
[email protected]
5/20
gau_z, lam_y, lavida_f, leprev_a, mbiya_e
Projet de fin d'études
2. Architecture globale
Le client java peut envoyer et récupérer des informations en utilisant
l'interface REST, un fichier PHP appelé par Apache, qui sécurise et offre des
services web pour d'autre applications/modules.
eip_2009_itemany_tech_fr.odt
[email protected]
6/20
gau_z, lam_y, lavida_f, leprev_a, mbiya_e
Projet de fin d'études
Diagramme de séquence:
eip_2009_itemany_tech_fr.odt
[email protected]
7/20
gau_z, lam_y, lavida_f, leprev_a, mbiya_e
Projet de fin d'études
3. Website
A. API
Le site web utilise une API pour créer les pages, et donc rajouter une nouvelle page au
site web est assez simple, et ne nécessite pas de changement du code principal.
eip_2009_itemany_tech_fr.odt
[email protected]
8/20
gau_z, lam_y, lavida_f, leprev_a, mbiya_e
Projet de fin d'études
B. La partie graphique
Le design d'Itemany est très important car ce sera la première chose que verront les
utilisateurs lorsqu'ils se connecteront sur le site. Donc nous nous sommes en premier lieu
concentrés sur l'ergonomie du site :
Le design d' Itemany a été crée avec Photoshop CS3, et on peut remarquer que l'interface
est simple et très colorée.
Nous avons utilisé plusieurs scripts de la librairie Mootools 1.11 pour être le plus userfriendly possible :
Les boites d'aides aident les utilisateurs en leur donnant des informations lorsqu'ils
pointent la souris sur une option ou un objet.
De plus, l'auto-complétion permet à l'utilisateur de trouver rapidement une collection,
d'autres utilisateurs, des groupes existant et beaucoup d'autres actions qui rendront
facile n'importe quel type de recherche sur le site web.
L'utilisateur pourra aussi choisir la couleur principale du site web.
eip_2009_itemany_tech_fr.odt
[email protected]
9/20
gau_z, lam_y, lavida_f, leprev_a, mbiya_e
Projet de fin d'études
C. La partie développement
Langages
Itemany a été développé en utilisant différents langages tels que :
–
Ajax : Principalement pour le rechargement des pages et la gestion de l'overlay.
–
Javascript : Pour la gestion des formulaires et du drag&drop.
–
Php : Pour communiquer avec la base de données.
–
Xhtml/Css : Pour l'aspect global et le contenu du site web.
Couche d'abstraction
Afin de pouvoir communiquer correctement avec les bases tel que MySQL, Oracle ou
PostgreSQL, nous avons choisi la classe objet PDO, et nous avons développé une
couche d'abstraction :
La classe principale de notre couche d'abstraction initialise la connexion à la base de
données en créant un nouvel objet PDO :
$this->pdo = new PDO(connection parameters...);
Elle contient trois sous-classes qui gèrent les différents types de base de données :
class IA_MySQL extends IA_Database implements IA_DBOject
class IA_PGSQL extends IA_Database implements IA_DBOject
class IA_OCI extends IA_Database implements IA_DBOject
Comme vous pouvez le voir, chaque sous-classes implémente une interface qui contient
les fonctionnalités de la base de données :
interface IA_DBOject
{
public function prepareRequest($statement);
// reformat the request
public function doRequest();
// send the request
public function doFetch();
// get the next result
}
La fonction prepareRequest va reformater la requête en fonction du type de base de
données.
eip_2009_itemany_tech_fr.odt
[email protected]
10/20
gau_z, lam_y, lavida_f, leprev_a, mbiya_e
Projet de fin d'études
Dans notre programme, pour se connecter à la base de données, on a simplement besoin
d'utiliser la couche d'abstraction, qui va créer un nouvel objet PDO :
$pdo = new IA_Mysql($config['DB']);
// to use mysql database type
$config['DB'] is
an array in our configuration file that contains the database
parameters such as :
●
db_type -> type de base de données : pgsql (PostGreSQL), mysql (MySQL), oci (Oracle)
●
db_user, db_pass, db_host, db_name -> Informations pour l' identification (string)
●
db_autocommit -> Utilisation de l'autocommit (boolean)
●
db_rollbackonerror -> Si une erreur arrive, la requête doit-elle être arrêtée ? (boolean)
●
db_opts -> Options transmises pour la gestion de la base de données. (array)
Système de template
Pour modifier facilement le design de Itemany, nous avons utilisé un moteur de template
appelé Smarty.
Smarty est un moteur de template avec beaucoup d'avantages et peu d'inconvénients :
Il permet de gagner beaucoup de temps lors du développement, mais cependant il n'est
pas facile de l'utiliser au début.
Voici les fonctionnalités les plus courantes que propose Smarty :
–
Gestion du Cache
–
Fichier de configuration
–
Sécurité
–
Template
–
Plugins
–
Add-ons
Smarty a besoin de :
–
Serveur web comme Apache
–
PHP 4 et plus.
Smarty nous a permis de développer Itemany en deux parties :
–
La partie template qui contient le design du site (fichiers .tpl)
–
La partie de traitement de données.
eip_2009_itemany_tech_fr.odt
[email protected]
11/20
gau_z, lam_y, lavida_f, leprev_a, mbiya_e
Projet de fin d'études
Comment cela marche ?
Premièrement nous avons besoin de créer un objet smarty :
$smarty = new Smarty();
Ensuite dans la partie traitement de donnée, nous avons besoin d'envoyer nos variables
au fichier de template :
$smarty->assign('target', $my_var);
Enfin on peut afficher le template:
$smarty->display('template.tpl');
Le fichier de template va simplement récupérer nos variables et afficher les pages avec
les informations contenues dans les variables :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>Test smarty</title>
</head>
<body>
variable recue : {$my_var}
</body>
</html>
C'est un exemple assez simple de ce qu'on peut faire avec Smarty, et grâce à cet outil,
nous pourront modifier facilement le design du site sans toucher à la partie donnée.
Libraries
–
Json
–
MooTools
–
Smarty
eip_2009_itemany_tech_fr.odt
[email protected]
12/20
gau_z, lam_y, lavida_f, leprev_a, mbiya_e
Projet de fin d'études
4. JAVA Client
Langage
Le client a été développé en Java, notamment pour la portabilité et la modularité du
langage.
Nous avons utilisé Eclipse RCP, une plateforme pour créer et déployer des clients riches.
C'est un outil utile pour faire facilement des interfaces graphiques.
Nous avons utilisé SQLite pour stocker toutes les informations sur les collections.
Configuration file
Le fichier de configuration (itemany/configuration/itemany.properties) est utilisé pour les
paramètres du client JAVA.
Il est possible configurer les paramètres suivants :
PROGRAM_LANGUAGE=fr
PROGRAM_IP_SYNC=rest.itemany.info
PROGRAM_PORT_SYNC=80
PROGRAM_USER_ID_SYNC=1
Javadoc
La Javadoc est un outils développé par Sun. Il permet de générer automatiquement un
document HTML qui nous permet d'analyser la structure de l'application Java.
Ce fichier généré est basé sur les commentaires que l'on écrit dans le code source. Les
développeurs qui utilisent la Javadoc doivent respecter certains commentaires et tag :
TAG
Description
@author
Nom du développeur
@deprecated
Méthode non importante
@exception
Explique l'exception d'une méthode
@param
Définit les paramètres d'une méthode
@return
Décrit la valeur de retour
@version
Donne la version d'une class ou d'une
méthode
eip_2009_itemany_tech_fr.odt
[email protected]
13/20
gau_z, lam_y, lavida_f, leprev_a, mbiya_e
Projet de fin d'études
Exemple de javadoc :
eip_2009_itemany_tech_fr.odt
[email protected]
14/20
gau_z, lam_y, lavida_f, leprev_a, mbiya_e
Projet de fin d'études
Exemple de classe dans la Javadoc :
eip_2009_itemany_tech_fr.odt
[email protected]
15/20
gau_z, lam_y, lavida_f, leprev_a, mbiya_e
Projet de fin d'études
5. REST Interface
Rappel du principe:
L'interface REST est une ouverture contrôlée de la base de données, et destinée à des
applications externes. Ce système permet donc de récupérer les informations que les utilisateurs
acceptent de fournir à des programmes tiers afin d'ajouter certaines fonctionnalités au site ItemAny
(cf partie Modules).
Gestion des bases de données:
Le système permet de gérer autant de types de base de données que voulu: il suffit de créer
un « handler » adapté par lequel les données seront reformatées si besoin est, pour correspondre aux
fonctionnalités de la B.D.D. retenue.
Interface des handlers
L'interface défini les fonctionnalités que chaque handler doit posséder pour permettre sont
interaction avec le système, et les commentaires expliquent quel type (in, out) et à quoi servent
chacun des paramètres, de même que comment les formater (se référer a la documentation Doxygen
disponible sur le site pour de plus amples informations).
Gestion des requêtes HTTP/1.1:
Cet outil fournit enfin la possibilité de gérer n'importe quel type de requête HTTP pourvu
qu'un handler correct soit défini. Les fonctions gérées par défaut sont:
✔
GET
Sert à la récupération des données
✔
POST
Sert à la création de ressources
✔
DELETE
Sert à la suppression des ressources
Interface HTTP handlers
eip_2009_itemany_tech_fr.odt
[email protected]
16/20
gau_z, lam_y, lavida_f, leprev_a, mbiya_e
Projet de fin d'études
Exemple documentation Doxygen
Dialogues REST – modules
Le dialogue entre ce service et les applications externes se fait au moyen d'un formatage
XML. Des objets PHP de type SimpleXMLElement sont utilisés pour gérer les informations, et un
retour XML typique est divisé comme suit:
<?xml version="1.0"?>
<users>
<user id="4">
<login>admin</login>
<subscription>2008-10-10</subscription>
<birthday>2008-10-10</birthday>
<gender>male</gender>
</user>
</users>
eip_2009_itemany_tech_fr.odt
[email protected]
17/20
gau_z, lam_y, lavida_f, leprev_a, mbiya_e
Projet de fin d'études
Schéma de la base de données :
eip_2009_itemany_tech_fr.odt
[email protected]
18/20
gau_z, lam_y, lavida_f, leprev_a, mbiya_e
Projet de fin d'études
6. Bugs connus
Site web:
Pas de bug connu.
Java client:
Quelques problèmes au niveau de la gestion des modèles sous Linux.
7. Références
Site Web:
•
http://www.facebook.com
Développement en java :
•
http://www.eclipsetotale.com/articles/Eclipse_RCP.html
Doxygen:
•
http://www.stack.nl/~dimitri/doxygen/index.html
•
Smarty:
http://www.smarty.net/rightforme.php
Rest:
•
http://www.prescod.net/rest/
•
http://benramsey.com/tag/rest/
•
http://www.xfront.com/files/rest.html
•
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
eip_2009_itemany_tech_fr.odt
[email protected]
19/20
gau_z, lam_y, lavida_f, leprev_a, mbiya_e
Projet de fin d'études
8. Contact
En cas de problème/bug ou de conseil/suggestion, vous pouvez écrire à :
[email protected]
eip_2009_itemany_tech_fr.odt
[email protected]
20/20
gau_z, lam_y, lavida_f, leprev_a, mbiya_e

Documents pareils