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