Uploaded on

rapport de stage

rapport de stage

More in: Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
385
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
8
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 1 Rapport de stage: DSI, Rectorat de Versailles - PABLO, Portail d'Alimentation des Bases LOcales - Professeur tuteur : Patricia GRASSIN Maître de stage : Michael LE CALVEZ, Chef de projet Jean-Pierre GUIMMARRA, Responsable BI
  • 2. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 2
  • 3. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 3 Sommaire SOMMAIRE .................................................................................................................................. 3 REMERCIEMENTS ......................................................................................................................... 5 ABSTRACT.................................................................................................................................... 6 INTRODUCTION............................................................................................................................ 7 PARTIE 1 : L'ENTREPRISE............................................................................................................... 8 1- LE RECTORAT DE L'ACADEMIE DE VERSAILLES ............................................................................................ 8 a) Ses activités............................................................................................................................. 8 b) Son organisation ..................................................................................................................... 8 c) Organigramme ...................................................................................................................... 10 d) Lieu........................................................................................................................................ 11 2- LA DIRECTION DES SYSTEMES D'INFORMATION ....................................................................................... 11 a) Ses activités........................................................................................................................... 11 b) Son organisation ................................................................................................................... 12 c) Organigramme du service ..................................................................................................... 12 d) La DSI 4.................................................................................................................................. 13 e) Lieu........................................................................................................................................ 14 PARTIE 2 : OBJECTIFS DE LA MISSION .......................................................................................... 15 1- PREPARATION DU PROJET ................................................................................................................ 15 2- PRESENTATION DU PROJET............................................................................................................... 15 a) Contexte ................................................................................................................................ 15 b) Expression du besoin............................................................................................................. 16 c) Acteurs................................................................................................................................... 16 3- LES CAS D'UTILISATIONS .................................................................................................................. 17 4- CONTEXTE TECHNIQUE.................................................................................................................... 17 a) Architecture réseau............................................................................................................... 17 b) Environnement KETTLE.......................................................................................................... 18 c) Environnement de développement........................................................................................ 18 d) Environnement de production............................................................................................... 18 5- MAQUETTES ECRANS ...................................................................................................................... 19 6- CALENDRIER PREVISIONNEL.............................................................................................................. 21 PARTIE 3 : REALISATION DU PROJET............................................................................................ 22 1- PRISE EN MAIN DES OUTILS DE DEVELOPPEMENT.................................................................................. 22 2- REDACTION DU CAHIER DES CHARGES, MISE EN PLACE DU MCD ............................................................ 23 3- REPARTITION DU TRAVAIL................................................................................................................ 24 4- MISE EN PLACE DU DESIGN DE L'APPLICATION ..................................................................................... 24 5- DEVELOPPEMENT DE LA PARTIE VUE DE L'APPLICATION ......................................................................... 26 6- DEVELOPPEMENT DE LA PARTIE MODELE CONTROLEUR DE L'APPLICATION................................................ 33
  • 4. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 4 7- MISE EN RECETTE........................................................................................................................... 35 CONCLUSION.............................................................................................................................. 36 GLOSSAIRE................................................................................................................................. 37 ANNEXES.................................................................................................................................... 41 1- CONSEILS POUR LA RECHERCHE DE STAGE ........................................................................................... 41 2- FICHE DE STAGE ............................................................................................................................. 42 3- CV............................................................................................................................................... 43 4- FICHE METIER................................................................................................................................ 44 5- CONVOCATION A LA REUNION DE LANCEMENT DE PABLO .................................................................... 45 6- COMPTE RENDU DE LA REUNION DE LANCEMENT DE PABLO ................................................................. 46 7- CODE SOURCE ............................................................................................................................... 47 a) JobDao................................................................................................................................... 47 b) HistoriqueDao ....................................................................................................................... 48 c) JobController.......................................................................................................................... 49 d) TacheForm............................................................................................................................. 51 e) Layout.................................................................................................................................... 52 f) Job -> index ............................................................................................................................ 54 g) Job -> view............................................................................................................................. 55
  • 5. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 5 Remerciements Je tiens à remercier et à témoigner toute ma reconnaissance aux personnes, qui m’ont permis de vivre cette expérience enrichissante et pleine d’intérêt sur le plan professionnel et personnel durant ces 10 semaines au rectorat de Versailles. Tout d’abord, je tiens à remercier toute l’équipe du service de direction des systèmes d'information du rectorat, pour leur accueil, leur bonne humeur et leur collaboration. Plus précisément, je tiens à remercier sincèrement :  Charlotte GONDRE, Responsable du pôle développement de la D.S.I., pour m'avoir permis d'effectuer mon stage dans ce service.  Mickaël LE CALVEZ, chef de projet au développement académique, mon maître de stage, pour m'avoir accueilli dans le service, pris en charge, fait confiance, conseillé, encouragé, et surtout pour la pédagogie et la patience dont il à fait preuve.  Jean-Pierre GUIMMARRA, Responsable de la Business Inteligence au développement académique, mon second maître de stage, pour m'avoir accueilli dans le service, pris en charge, fait confiance, conseillé, encouragé, et surtout pour sa grande expérience qu'il n'a cessé de nous faire partager. Je tiens également à remercier toutes les personnes qui ont contribué à rendre ce passage en entreprise agréable. J’adresse donc également mes remerciements à :  Madame BASSET, responsable des stages, pour l'implication dont elle a fait preuve dans la recherche de stage de chacun des étudiants.  Madame GRASSIN, mon professeur tuteur, pour le suivi qu’il a apporté à mon stage.  L’IUT de Ville d'Avray, et particulièrement le département GEII et l’ensemble des professeurs, pour ces deux années d’enseignement.
  • 6. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 6 Abstract In order to put into practice the knowledge I acquired during my studies in electronic engineering and industrial computer sciences, I did my second year training course at the board of education in the regional education authority of Versailles. It is the largest one in France, and it gathers 9 % of French students. This training took place in the information systems direction (ISD) of the board of education of Versailles. The ISD is charged with improving the consistency of the computerized organizations in the regional education authority to grant a harmonized development of information systems of the ministry. It is divided in several poles that take care of the development of local applications and of their maintenance, among other things. To supply local bases, the ISD has developed an ETL tool, named KETTLE, enabling the launch of several predefined jobs. There are three kinds of profiles possible with KETTLE: -Administrator: he can access to all the jobs, launch them, create new ones, and he can add new users. -User: he can access to every job, launch them, and create them. -Guest: he can access to all the jobs, but he cannot launch them, nor create them. The main goal of this internship was to develop an application, PABLO (Supply of Local Bases Portal). This application is a tool offering a new user profile. This new profile will only be able to access jobs if he has been authorized by an administrator, he will be able to launch them and possibly initialize some parameters. This internship allowed me. The first part of it allowed me to get more familiar with development tools, and to understand what the application was for. Its goals were then precisely defined, and the scope statement was written. During that part, I also had to think about ergonomics and design for the application. The second part of the internship was dedicated to the development of this application. Since I actually had to work with one of my classmates on this project, I was able to learn more about team work, and the way you need to share tasks in order to be as efficient as possible. This account goes into details about the internship and the different stages that led to the creation of PABLO application.
  • 7. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 7 Introduction Le cursus de DUT prévoit la réalisation d'un stage industriel pour clôturer la formation, et ainsi, valider cette dernière. Ce stage a pour objectif de faire découvrir, aux élèves de DUT, le monde professionnel, ses codes, ses règles et ses méthodes de travail bien différentes de celles du monde scolaire. Grâce à ce stage, l'étudiant a la possibilité de mettre en pratique les connaissances acquises au cours de sa formation et ainsi, de vivre une première expérience professionnelle, valorisante pour la suite de son parcours. Suite à ma candidature dans diverses entreprises, j'ai eu plusieurs retours favorables. J'ai finalement choisi d'effectuer mon stage dans la fonction publique, au sein du service de Direction des Systèmes d'Information (D.S.I.) du rectorat de l'académie de Versailles. Lors de l'entretien auquel j'ai été convié par Charlotte GONDRE, responsable du pôle de développement de la D.S.I., le projet présenté m'a immédiatement séduit. Le projet exposé était la réalisation d'une application web, PABLO; cette application a pour but, la mise en place d'un outil permettant la gestion du lancement de tâches d'alimentation de bases de données. L'application permet la création de profils utilisateurs, n'ayant accès qu'aux tâches d'alimentation qui leur auront été préalablement autorisées par un administrateur. De plus, la D.S.I. a émis le souhait d'engager un deuxième stagiaire afin de mener à bien ce projet dont ils avaient réellement besoin, mais qui n'était pas priorisé. C'est donc une véritable expérience professionnelle qui s'est off présentée à moi, m'offrant la possibilité d'être un acteur majeur à chaque étape du projet, et ce, de bout en bout. La première partie de ce rapport est consacrée à la présentation de l'entreprise, ses activités, ses membres, et plus particulièrement la présentation de la DSI. La seconde partie expose l'objectif de la mission confiée par l'entreprise, elle définie également les contraintes, les moyens mis à disposition, la planification des tâches et les critères de validation du projet. Enfin, vous trouverez dans la troisième et dernière partie, le travail effectué durant le stage en vue de la réalisation du projet. Sont joint en annexe des éléments visant à compléter ce rapport et en permettre une compréhension plus précise.
  • 8. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 8 Partie 1 : L'entreprise 1- Le rectorat de l'académie de Versailles a) Ses activités Le rectorat fait partie des services déconcentrés, c'est à dire qu'il assure le relais sur le plan local des décisions prises au niveau national et gère localement les services de l'Etat. Le rectorat de l'académie de Versailles décline la politique du ministre et la diffuse dans l'académie en tenant compte des spécificités des établissements et des lieux qu'il gère. Il permet de regrouper l'ensemble des services administratifs gérant les personnels enseignants, administratifs, techniques, sociaux, de santé, de direction et d'inspection. b) Son organisation En France, une académie est une circonscription administrative du ministère de l'éducation nationale et du ministère de l'enseignement supérieur et de la recherche. Il en existe 30. L'Académie de Versailles est la première académie de France par ses effectifs avec près de 1 100 000 élèves dans le premier et second degré (près de 10% des effectifs scolarisés de France). Elle accueille et gère 100 000 employés (enseignants, personnels d'éducation et d'encadrement, techniciens, personnels administratifs, ouvriers de service et de santé). Elle regroupe 4 départements : les Yvelines (78), l'Essonne (91), les Hauts-de-Seine (92) et le Val d'Oise (95).
  • 9. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 9 Chaque académie est dirigée par un recteur d'académie désigné en conseil des ministres et nommé par décret par le président de la république. Le recteur d'académie, qui porte également le titre de chancelier des universités, détermine, met en œuvre et contrôle l'ensemble de la politique académique conformément aux directives du ministre. Il renseigne en retour le ministre sur la situation de son académie et sur la manière dont sont accueillies les nouvelles mesures prises. L'actuel recteur de Versailles se nomme Pierre-Yves Duwoye, et est en place depuis le conseil des ministres du 3 janvier 2013. Dans chaque département, un Directeur Académique des Services de l'Education Nationale (DA-SEN) exerce ses fonctions par délégation du recteur sur l'ensemble des services, des écoles et des établissements de l'éducation nationale. Jean-Michel Coignard est le DA-SEN des Yvelines, Marie-Hélène Leloup est la DA- SEN de l'Essonne, Edouard Rosselet est le DA-SEN des hauts-de-Seine et Martine Gauthier est la DA-SEN du Val-d'Oise. Les services départementaux de l'éducation nationale sont regroupés au sein de la Direction des Services Départementaux de l'Education Nationale (D.S.D.E.N) de chaque département. La structure des D.S.D.E.N varie d'un département à l'autre, on y retrouve cependant la plupart du temps les services suivants : le centre départemental de traitement de l'information, les statistiques et prévisions, l'organisation scolaire, la gestion des personnels, les examens et concours, l'enseignement privé et le service financier.
  • 10. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 10 c) Organigramme Cet organigramme expose les modes d’organisation retenus dans les services académiques du rectorat pour répondre aux priorités affichées du projet académique.
 Au delà de la gestion quotidienne, les services, divisions ou délégations académiques sont regroupés en pôles administratifs pour garantir, avec la coordination d’un secrétaire général adjoint, la cohérence nécessaire à la mise en œuvre des priorités académiques.
  • 11. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 11 d) Lieu Site principal du rectorat de l'académie de Versailles: Rectorat de l'académie de Versailles 3, boulevard de Lesseps 78017 Versailles cedex Tel : 01 30 83 44 44 Fax : 01 39 50 02 47 2- La Direction des Systèmes d'Information a) Ses activités Les activités informatiques de la DSI sont utilisées par l’ensemble de l’académie et sont :  l’administration des systèmes d’information ;  l’assistance au quotidien des utilisateurs avec la mise en place d’une plate-forme d'assistance unique. Elle permet de signaler tout dysfonctionnement, de présenter une demande, ou de solliciter un dépannage simple par les équipes mobiles informatiques de proximité (EMIP).  l’hébergement des équipements informatiques ;  la sécurité des réseaux, des équipements numériques et des informations qu’ils contiennent, des données circulant sur internet, des utilisateurs (notamment mineurs) dans le cadre des usages numériques et des risques juridiques inhérents ;  le développement d'applications de gestion.
  • 12. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 12 b) Son organisation L’académie de Versailles a été parmi les premières académies à répondre au souhait du secrétariat général du ministère de développer un service de direction des systèmes d’information académique. La Direction des Systèmes d'Information a pour mission d'assurer une gestion informatisée fiable, sécurisée et réactive des services académiques, le tout en mettant en place une meilleure cohérence des organisations informatiques dans l’académie pour garantir un développement harmonisé des systèmes d’information du ministère. Afin de répondre à cette demande, la D.S.I du rectorat de l'académie de Versailles s'est organisée en 5 pôles, occupant chacun un rôle majeur dans la mission qui leur a été confiée : -La DSI-1 à en charge l'administration des systèmes d'information. -La DSI-2 à en charge l'assistance et le conseil informatique. -La DSI-3 à en charge l'administration des infrastructures techniques. -La DSI-4 à en charge le développement d'applications. -La DSI-5 à en charge le centre d'exploitation et de service SIRHEN. c) Organigramme du service *Système d'Information des Ressources Humaines de l'Education Nationale: Ce programme vise à rénover et à faire progresser les systèmes d'information de gestion des moyens et des personnels du ministère en terme de normes de développement, d'exploitation informatique, d'apport des nouveaux outils disponibles sur le marché, d'agilité face aux évolutions réglementaires, de dématérialisation et d'archivage. Jacky GALICHER Directeur des systèmes d’information. DSI-1 Resp: Sylvianne PASINETTI Administration des systèmes d’information. DSI-2 Resp: Annick CREISSENT Assistance et conseil informatique. DSI-3 Resp: François GILLES Administration des infrastructures techniques. DSI-4 Resp: Charlotte GONDRE Développement. DSI-5 Resp: Baskarane RAGOU Centre d'exploitation et de services SIRHEN*.
  • 13. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 13 d) La DSI 4 Effectuant mon stage au sein de la DSI-4, une présentation plus détaillée de ce service est nécessaire. La DSI-4 se compose de deux pôles, le pôle académique et le pôle national: Le pôle national a actuellement en charge le développement de l'application SIRHEN présenté précédemment. Quant au pôle académique, la où j'ai été accueilli, il à en charge le développement d'applications de gestion, destinées aux personnels de l'académie. On retrouve mes deux maîtres de stage dans cet organigramme, M. GUIMMARRA et M. LE CALVEZ. DEVELOPPEMENT Resp: Charlotte GONDRE DEVELOPPEMENT ACADEMIQUE Resp: Charlotte GONDRE Adjoint: Jérôme POIDVIN DEVELOPPEMENT NATIONAL Resp: Alex DEFRANCE Adjoint: Jean-Marc PALMAS Chef de projet-Expert technique (1 pers) Chefs de projets (2 pers) Mickael LE CALVEZ Analystes/Concepteurs (Applications métier) (5 pers) Analystes/Concepteurs (Portail et site web) (3 pers) Responsable Business Intelligence Jean-Pierre GUIMMARRA Analyste/Concepteur (Business Objects) (1 pers)
  • 14. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 14 e) Lieu Site du rectorat accueillant la DSI: Rectorat de l'académie de Versailles 7, rue Pierre-Lescot 78000 Versailles
  • 15. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 15 Partie 2 : Objectifs de la mission 1- Préparation du projet Tout d'abord, il à fallut définir les acteurs de ce projet, c'est à dire la "Maîtrise d'ouvrage" (MOA), et la "maîtrise d'œuvre" (MOE). La "Maîtrise d'ouvrage" est un service académique exprimant un besoin pour l’accomplissement de ses missions. Elle est ici représentée par M. Jean-Pierre GUIMMARRA, Responsable Business Intelligence. La "maîtrise d'œuvre" est quant à elle chargée de la conception puis à la réalisation de l'application. Elle est représentée par la DSI-4, et en particulier pour ce projet par: M. Mickael LE CALVEZ, chef de projet, M. Alexandre DIZ GANITO, developpeur stagiaire, M. Thibault NOWAK, développeur stagiaire. Une fois définis, les deux partis se sont réunis pour échanger sur les diverses exigences auxquelles l'application doit répondre. Cette réunion fut préparée par la MOE, qui a conviée la MOA via un document l'informant des différents points qui seront abordés (cf annexes). Suite à cette réunion, un compte rendu fut rédigé (cf annexes), et utilisé comme support pour formaliser les besoins dans un cahier des charges. Le cahier des charges final est le fruit de nombreux échanges entre la MOA et la MOE, ces échanges furent facilités par la proximité entre les deux étant donné qu'elles occupent le même bureau. 2- Présentation du projet Cette partie expose les différents points aborder dans le cahier des charges. a) Contexte Un outil ETL (Extract-Transform-Load) est une technologie informatique intergicielle permettant d'effectuer des synchronisations massives d'information d'une base de données vers une autre.
  • 16. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 16 Afin d’alimenter les bases de données académiques (les bases locales) grâce aux bases de données nationales, la DSI-4 a mis en place un outil ETL, KETTLE, permettant le lancement de tâches prédéfinies. Ces tâches sont planifiées et se lancent de manière automatique. Cependant, des erreurs d’exécution peuvent survenir. Afin d’y remédier, les tâches sont à nouveaux exécutées, le lancement est cette fois manuel. Depuis 2011, la DSI-1 a en charge l’exploitation des applications locales, et donc le lancement des tâches d’alimentation des bases correspondantes. Or, nous observons trois types de profils possibles sous KETTLE :  Administrateur, il peut voir toutes les tâches, les lancer, les créer, et il a la possibilité de créer de nouveaux utilisateurs.  Utilisateur, il peut voir toutes les tâches, les lancer et les créer.  Invité, il peut voir toutes les tâches mais ne peut ni en lancer, ni en créer. Pour des raisons de périmètre de sécurité, la DSI-4 ne peut autoriser la DSI-1 à lancer toutes les tâches. b) Expression du besoin L’objectif du projet PABLO est donc de créer un outil offrant un nouveau profil utilisateur. Ce nouveau profil ne donnera accès qu’aux tâches qui lui auront été autorisées par un administrateur, il pourra les lancer et, éventuellement, initialiser des paramètres. Pour le moment, PABLO concerne 21 projets, ce qui représente une cinquantaine de tâches. Cependant, l’utilisation croissante de KETTLE implique de prévoir une interface permettant le traitement d’un plus grand nombre de tâches. c) Acteurs  1 super-administrateur (DSI-4).  2 administrateurs généraux (DSI-4).  Environs 15 administrateurs (DSI-1).  Prévoir l’extension à des gestionnaires (autres services), ayant au préalable été autorisés à lancer des tâches par des administrateurs, des administrateurs généraux ou encore, par le super-administrateur.
  • 17. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 17 3- Les cas d'utilisations 1. L’authentification L’authentification se fait via ClearTrust, un outil d'authentification web de la société RSA. L’application déterminera ensuite le profil de la personne utilisant l’application (super administrateur, administrateur-général, administrateur ou gestionnaire). 2. L’administration Une fois reconnu par l’application comme étant un administrateur, ce dernier peut créer des comptes utilisateur, de niveau inférieur au sien. Les administrateurs donnent des droits sur le lancement des tâches parmi celles qui leur sont autorisées. 3. L’utilisation Une fois reconnu par l’application comme étant un utilisateur, ce dernier peut lancer des tâches. Il ne doit avoir accès qu’aux tâches qui lui sont autorisées. Pour chaque tâche, l’utilisateur doit pouvoir accéder à son historique de lancement :  Dernier lancement planifié avec horaire, paramètres et résultat.  Dernier lancement manuel avec horaire, paramètres et résultat. L’utilisateur doit pouvoir lancer une tâche tout en initialisant des paramètres si besoin (trois au maximum). De plus, il doit être informé du statut de la tâche lancée :  Tâche disponible, et prête à être lancée.  Tâche lancée, en cours d’exécution  Exécution de la tâche terminée : résultat positif ou négatif 4- Contexte technique a) Architecture réseau
  • 18. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 18 b) Environnement KETTLE WINDOWS 2008 serveur (32 GO RAM, 1 TO d’espace disque) KETTLE V4.4.0 SGBDR sources/cibles utilisés dans les tâches :  Informix  DB2  MySQL  ORACLE. c) Environnement de développement  Environnement Eclipse / PDT  Php : Framework Zend 2.1.5  Javascript : Jquery 1.9.1  CSS : Bootstrap  Maquettage : Balsamic Mockups  MCD / MPD : PowerAMC d) Environnement de production  Serveur Apache  PHP 5.3  MySQL 5.1
  • 19. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 19 5- Maquettes écrans Gestion des utilisateurs: Dans cet onglet, l'utilisateur peut, selon son profil, créer de nouveaux utilisateurs et sélectionner leur profil. Il peut également supprimer ou éditer des utilisateurs existants. Dans un premier temps, cet onglet ne sera accessible qu'aux utilisateurs ayant un profil de super administrateur ou d'administrateur général. Dans un second temps, les administrateurs y auront accès afin de pouvoir créer des utilisateurs ayant un profil de gestionnaire.
  • 20. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 20 Gestion des autorisations: Dans cet onglet, l'utilisateur peut, selon son profil, autoriser à d'autres utilisateurs, l'accès aux taches, dans la limite de ce ses attributions. Dans un premier temps, cet onglet ne sera accessible qu'aux utilisateurs ayant un profil de super administrateur ou d'administrateur général. Dans un second temps, les administrateurs y auront accès afin de pouvoir autoriser le lancement de tâche aux gestionnaires.
  • 21. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 21 Utilisation: Dans cet onglet, accessible à tous, l'utilisateur peut lancer des tâches, mais n'a accès qu'aux tâches qui lui sont autorisées. 6- Calendrier prévisionnel Voici le calendrier prévisionnel établit en début de stage:
  • 22. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 22 Partie 3 : Réalisation du projet 1- Prise en main des outils de développement La première étape du projet fut la prise en main de l'architecture modèle-Vue- Contrôleur (MVC). Le modèle de conception (Design patterns) MVC est l'un des plus célèbres, cependant, son existence m'était encore inconnue avant le démarrage du stage. Le pattern MVC permet de bien organiser son code source. Son but, est de séparer la logique du code en trois parties que l'on retrouvent dans des fichiers distincts:  Le modèle, cette partie gère les données de l'application. Son rôle est d'aller récupérer les informations "brutes" dans la base de données, de les organiser et de les assembler pour qu'elles puissent ensuite être traitées par le contrôleur. On y trouve donc les requêtes SQL.  La vue, c'est la partie avec laquelle l'utilisateur interagit. Cette partie se concentre donc sur l'affichage des résultats renvoyés par le modèle. Cependant, elle s'occupe également de recevoir toute action de l'utilisateur (clic de souris, sélection d'un bouton radio, saisie de texte…). On y trouve essentiellement du code HTML, mais aussi quelques boucles et conditions PHP très simples.  Le contrôleur, cette partie prend en charge la logique du code qui prend des "décisions". C'est en quelque sorte l'intermédiaire entre le modèle et la vue, le contrôleur va récupérer les données auprès du modèle, les analyser, prendre des décisions et renvoyer les données formatées à la vue.  Le second outil essentiel au développement de l'application fut le framework php Zend framework 2. La maîtrise de cet outil représente une part majeure du travail effectué lors du stage. En effet, la notion de framework m'étant alors inconnue, il à fallut acquérir de nombreuses notions afin de pouvoir appréhender cet outil, et ce tout au long du stage. Un framework est en réalité un kit de composants logiciels structurels, qui sert à créer les fondations ainsi que les grandes lignes de tout ou d’une partie d'un logiciel (architecture). Un framework se distingue d'une simple bibliothèque logicielle principalement par :  son caractère générique, faiblement spécialisé, contrairement à certaines bibliothèques ; un framework peut à ce titre être constitué de plusieurs bibliothèques chacune spécialisées dans un domaine. Un framework peut néanmoins être spécialisé, sur un langage particulier, une plateforme spécifique, un domaine particulier (Reporting, mapping, etc.).  le cadre de travail (traduction littérale de framework) qu'il impose de par sa construction même, guidant l'architecture logicielle voire conduisant le développeur à respecter certains patterns ; les
  • 23. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 23 bibliothèques le constituant sont alors organisées selon le même paradigme. Les frameworks sont donc conçus et utilisés pour modeler l'architecture des logiciels applicatifs, des applications web et des composants logiciels. Les frameworks sont acquis par les ingénieurs, puis incorporés dans des logiciels applicatifs mis sur le marché, ils sont par conséquent rarement achetés et installés séparément par un utilisateur final. 2- Rédaction du cahier des charges, Mise en place du MCD Comme il est décrit précédemment, la rédaction du cahier des charges est le résultat d'un long travail de partage entre la MOE et la MOA. Lorsque le cahier des charges fut terminé, le MCD a put être mis en place. En informatique, MCD est une abréviation qui signifie modèle conceptuel de données, il s'agit d'une représentation logique de l'organisation des informations et de leurs relations. Voici le MCD de PABLO: ModèleConceptueldeDonnées Projet:PABLO Modèle:MCD_PABLO Auteur:MLCVersion1.021/05/2013 0,n 0,n 0,n 0,n 1,1 1,1 0,n 0,n 0,n0,n1,1 0,n USER USR_ID USR_UID N_PROFIL N_PRF_ID N_PRF_CODE N_PRF_DESC R_DIRECTORY ID_DIRECTORY ID_DIRECTORY_PARENT DIRECTORY_NAME R_JOB ID_JOB NAME DESCRIPTION EXTENDED_DESCRIPTION JOB_VERSION JOB_STATUS ID_DATABASE_LOG TABLE_NAME_LOG CREATED_USER CREATED_DATE MODIFIED_USER MODIFIED_DATE USE_BATCH_ID PASS_BATCH_ID USE_LOGFIELD SHARED_FILE REFERENTIELKETTLEAPPLICATIONPABLO R_JOB_ATTRIBUTE ID_JOB_ATTRIBUTE NR CODE VALUE_NUM VALUE_STR paramètredel'utilisateur PAR_ID PAR_LAST profilutilisateurdroitd'exécution DRT_ID attributdujob projetdujob historiquedelancement HST_ID HST_DATE HST_PARAMS HST_RESULT
  • 24. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 24 3- Répartition du travail Suite à la rédaction du cahier des charges, nous avons pu nous répartir les tâches afin d'optimiser le développement de PABLO. En effet, effectuant mon stage avec un second stagiaire, une répartition équilibrée du travail à réaliser était nécessaire. J'ai hérité pour ma part, de la partie utilisation de l'application, c'est à dire de l'onglet permettant à l'utilisateur d'avoir accès aux informations des tâches ainsi qu'à leur lancement. De plus, je me suis chargé de mettre en place la cohérence graphique des différentes vues de l'application, notamment en développant le layout, ainsi qu'en réalisant le logo de l'application. 4- Mise en place du design de l'application Création du logo : J'ai réalisé le logo de l'application grâce au logiciel Adobe Illustrator. Ce logiciel, de la gamme Adobe, offre des outils de dessin vectoriel. De nombreux essais ont eu lieu avant de trouver le logo final. En effet, j'ai commencé par créer plusieurs logos, afin de les présenter à l'équipe de projet. A chaque proposition des modifications étaient nécessaires. La plupart des logos présentés jouaient sur la consonance mexicaine de nom "PABLO". L'idée d'incorporer un élément graphique issu de KETTLE fut testée mais finalement non retenue. Voici quelques exemples de logos présentés:
  • 25. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 25 Finalement, le logo choisi fut le plus simple que j'ai présenté, et ce dans le but de ne pas surcharger l'application en fioritures.
  • 26. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 26 5- Développement de la partie vue de l'application Voici quel est, à travers différentes vues de l'application, le chemin que l'utilisateur emprunte pour parvenir à la vue lui permettant le lancement d'une tâche: Le Layout: On peut traduire le terme layout par "Mise en page", ici, le layout correspond au header et au footer de la page. Chacune des vues de l'application viens s'incérer dans le layout, conservant ainsi le même en-tête et le même pied de page. Le layout est donc un élément essentiel dans la mise en place de l'ergonomie de l'application.  Header: Code: Choix de l'onglet tâche Choix de la tâche dans la liste des projets Accès à la tâche, et à son lancement
  • 27. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 27  Barre de navigation: Code:  Footer: Code: Onglet actif
  • 28. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 28 Job: L'onglet "Tâches" regroupe deux vues:  Job -> Index: Dans cette vue, l'utilisateur a accès à la liste des projets, et des tâches qui leurs sont associés, dont il possède les droits de lancement. Job -> Index Job -> view Choix d'un projet
  • 29. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 29 Code:
  • 30. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 30  Job->view: Cette vue est celle qui permet à l'utilisateur de lancer la tâche qu'il désire. On retrouve dans cette vue le nom de la tâche (ici "test"), sa description, les paramètres qui permettent son initialisation ainsi que l'historique des derniers lancements de cette tâche. Non traité Lancement de la tâche Historique de lancement.
  • 31. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 31 Code:  Description:  Bloc lancement de tâche et paramétrage:
  • 32. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 32  Historique:
  • 33. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 33 6- Développement de la partie modèle contrôleur de l'application DAO: Un DAO est un objet d'accès aux données (en anglais Data Access Object), ce patron de conception complète le modèle MVC. Les DAO regroupent tout le code SQL, ils permettent de récupérer les données en base.  JobDao o getAllWithProjects Récupère le nom et l'id de touts les projets à la racine de la base ainsi que le nom et l'id des tâches associées aux projets. o getWithParameters($id) En fonction de l'id passé (l'id d'une tâche), cette fonction récupère le nom de la tâche, son éventuelle description et si le lancement de cette tâche exige des paramètres, la fonction récupère également les paramètres par défaut associés à la tâche.  HistoriqueDao o getLastParameters($id) En fonction de l'id passé (l'id d'une tâche), cette fonction récupère la date et l'heure du dernier lancement, de plus, elle récupère les paramètres avec lesquels la tâche a été lancée ainsi que le résultat de cette exécution ("en cour", "succès", "échec"). o getIdHist($jobId, $userId) Cette fonction récupère l'id du dernier enregistrement dans la table historique. o updateresult($oHist) Cette fonction met à jour le résultat ("en cour", "succès", "échec") de l'éxecution de la tâche. Exemple d'une fonction DAO:
  • 34. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 34 Controller:  JobController Liste des fonctions: o getJobDao Cette fonction permet d'accéder aux fonctions définies dans JobDao. o getHistoriqueDao Cette fonction permet d'accéder aux fonctions définies dans HistoriqueDao. o indexAction Cette fonction permet de renvoyer les données obtenues par l'intermédiaire des fonctions getJobDao -> getAllWithProjects à la vue job -> index. o viewAction Cette fonction permet de renvoyer les données obtenues par l'intermédiaire des fonctions getJobDao -> getWithParameters et getHistoriqueDao -> getLastParameters à la vue job -> view. o refreshAction Cette fonction analyse le fichier .log crée par KETTLE au lancement d'une tâche. Ce fichier enregistre la succession d'évènements liés au lancement de la tâche. Cette fonction nous permet donc de déterminer l'état de la tâche. Exemple d'une fonction de JobController: Form:
  • 35. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 35 Un formulaire est un espace de saisie comportant divers types de "champs" (saisie de texte, cases à cocher, menu déroulant…). Dans l'application, les formulaires sont définis dans des fichiers séparés des vues.  TacheForm Ce formulaire concerne les paramètres, il s'adapte en fonction du nombre de paramètres alloués à la tâche. Tache Form: 7- Mise en recette La recette est une phase de développement des projets, visant à assurer formellement que le produit est conforme aux spécifications. Elle s'inscrit dans les activités plus générales de qualification. Cette étape implique, en la présence effective des différents acteurs du projet, maitrise d’œuvre et maitrise d'ouvrage, le déroulement rigoureux de procédures de tests préalablement décrits, et l'identification de tout écart fonctionnel ou technique.
  • 36. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 36 Conclusion Cette expérience de 10 semaines au sein du rectorat de l'académie de Versailles, m'a permis de découvrir de nombreux aspects du monde professionnel. En étant un acteur majeur du projet de PABLO, j'ai appris à prendre en mains les outils de développement qui étaient à ma disposition. En effet, alors qu'ils m'étaient pour la pluparts inconnus, j'ai du me former et acquérir l'expérience nécessaire pour valider les objectifs fixés en début de stage. Bien que l'application ne soit pas entièrement finalisée, en l'absence de la couche d'authentification notamment, elle est fonctionnelle. En effet, pour un utilisateur défini en "dur" dans le code sources, le lancement des tâches est possible. De plus, il peut initialiser des paramètres et avoir accès a l'historique de la tâche souhaitée. Pour arriver à ce résultat, il a fallut respecter chacune des étapes traditionnelles d'un projet. La rédaction du cahier des charges qui a résulté des échanges entre la MOE et la MOA fut la base du projet. C'est sur ce dernier qu'il a fallut s'appuyer pour développer l'application, d'abord avec le développement des vues, puis avec celui des modèles et des contrôleurs. Bien que l'adaptation au milieu professionnel a nécessité de nombreux efforts de ma part, tant au niveau technique que relationnel, le travail d'équipe qui s'est instauré pour mener à bien ce projet était indispensable. Les différents projets réalisés au cours de ma formation GEII m'ont permis de trouver ma place au sein de cette équipe, et de gagner en efficacité. En tant qu'étudiant, cette expérience professionnelle fut riche d'enseignements. Elle m'a permis de partager avec de nombreuses personnes aux compétences variées, et m'a apporté une vue d'ensemble sur la réalisation d'un projet. Pour conclure, cette expérience m'apparaît extrêmement formatrice, tant d'un point de vue technique, car j'ai beaucoup appris dans différents domaines, que d'un point de vue personnel, car je me suis exercé à rendre compte de mon travail de manière cohérente et synthétique, ce qui m'a amené à gagner en maturité et en professionnalisme.
  • 37. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 37 Glossaire  La direction des systèmes d'information (DSI) d'une organisation (entreprise, association, etc.) est responsable de l'ensemble des composants matériels (postes de travail, serveurs, équipements de réseau, systèmes de stockage, de sauvegarde et d'impression, etc.) et logiciels du système d'information, ainsi que du choix et de l'exploitation des services de télécommunications mis en œuvre.  Administration des systèmes d’informations : Administre et assure le fonctionnement et l'exploitation d'un ou plusieurs éléments matériels ou logiciels (outils, réseaux, bases de données, messagerie, ...) de l'entreprise ou d'une organisation. Veille à la cohérence, à l'accessibilité et à la sécurité des informations. Peut coordonner une équipe.  En informatique, un développeur (ou analyste programmeur) est un informaticien qui réalise des logiciels en créant des algorithmes et en les mettant en œuvre dans un langage de programmation.  Un portail web (de l'anglais Web portal) est un site web qui offre une porte d'entrée commune à un large éventail de ressources et de services accessibles sur l'Internet et centrés sur un domaine d'intérêt ou une communauté particulière. Les ressources et services dont l'accès est ainsi rassemblé peuvent être des sites ou des pages web, des forums de discussion, des adresses de courrier électronique, espaces de publication, moteur de recherche, etc.  Extract-Transform-Load est connu sous le terme ETL, ou extracto-chargeur, (ou parfois : datapumping). Il s'agit d'une technologie informatique intergicielle (comprendre middleware) permettant d'effectuer des synchronisations massives d'information d'une base de données vers une autre. Selon le contexte, on est amené à exploiter différentes fonctions, souvent combinées entre elles : « extraction », « transformation », « constitution » ou « conversion », « alimentation ». Elle repose sur des connecteurs servant à exporter ou importer les données dans les applications (Ex : connecteur Oracle ou SAP...), des transformateurs qui manipulent les données (agrégations, filtres, conversions...), et des mises en correspondance (mappages). L'objectif est l'intégration ou la réexploitation de données d'un réservoir source dans un réservoir cible. À l'origine, les solutions d'ETL sont apparues pour le chargement régulier de données agrégées dans les entrepôts de données (ou datawarehouse), avant de se diversifier vers les autres domaines logiciels. Ces solutions sont largement utilisées dans le monde bancaire et financier, ainsi que dans l'industrie, au vu de la multiplication des nombreuses interfaces.  La notion de profil désigne généralement les données de modélisation d'une entité, par exemple un profil utilisateur.
  • 38. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 38  En informatique un système de gestion de base de données (abr. SGBD) est un logiciel système destiné à stocker et à partager des informations dans une base de données, en garantissant la qualité, la pérennité et la confidentialité des informations, tout en cachant la complexité des opérations. Un SGBD (en anglais DBMS pour database management system) permet d'inscrire, de retrouver, de modifier, de trier, de transformer ou d'imprimer les informations de la base de données. Il permet d'effectuer des compte-rendus des informations enregistrées et comporte des mécanismes pour assurer la cohérence des informations, éviter des pertes d'informations due à des pannes, assurer la confidentialité et permettre son utilisation par d'autres logiciels1 . Selon le modèle, le SGBD peut comporter une simple interface graphique jusqu'à des langages de programmation sophistiqués1 . Les systèmes de gestion de base de données sont des logiciels universels, indépendants de l'usage qui est fait des bases de données2 . Ils sont utilisés pour de nombreuses applications informatiques, notamment les guichets automatique bancaires, les logiciels de réservation, les bibliothèques numériques les logiciels d'inventaire, les progiciels de gestion intégrés ou la plupart des blogs et sites web. Il existe de nombreux systèmes de gestion de base de données. En 2008, Oracle détenait près de la moitié du marché des SGBD avec MySQL et Oracle Database. Vient ensuite IBM avec près de 20 %, laissant peu de place pour les autres acteurs3 . Les SGBD sont souvent utilisés par d'autres logiciels ainsi que les administrateurs ou les développeurs. Ils peuvent être sous forme de composant logiciel, de serveur, de logiciel applicatif ou d'environnement de programmation. En 2011 la majorité des SGBD du marché manipulent des bases de données relationnelles.  En informatique, une base de données relationnelle est un stock d'informations décomposées et organisées dans des matrices appelées relations ou tables conformément au modèle de données relationnel. Le contenu de la base de données peut ainsi être synthétisé par des opérations d'algèbre relationnelle telles que l'intersection, la jointure et le produit cartésien. Une base de données est un ensemble d'informations, connexes de manière directe ou indirecte, enregistrées dans un dispositif informatique. Dans une base de données relationnelle, les informations sont stockées sous forme de groupe de valeurs : les enregistrements. Un ensemble d'enregistrements relatif à un sujet forme une relation et est stocké dans une table. La base de données comporte une ou plusieurs tables et les sujets sont connexes. Le modèle de données relationnel permet d'utiliser les opérateurs de l'algèbre relationnelle pour retrouver une information quelconque stockée dans la base de données, ainsi que les informations connexes.  En informatique, un développeur (ou analyste programmeur) est un informaticien qui réalise des logiciels en créant des algorithmes et en les mettant en œuvre dans un langage de programmation.  MCD est une abréviation qui signifie modèle conceptuel de données, il s'agit d'une représentation logique de l'organisation des informations et de leurs relations.  MPD, Le modèle physique des données consiste à implanter une base de données dans un SGBDR. Le langage utilisé pour ce type d'opération est le SQL.
  • 39. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 39  Le patron Modèle-vue-contrôleur (en abrégé MVC, de l'anglais Model-View- Controller), tout comme les patrons Modèle-vue-présentation ou Présentation, abstraction, contrôle, est un modèle destiné à répondre aux besoins des applications interactives en séparant les problématiques liées aux différents composants au sein de leur architecture respective. Architecture modèle/vue/contrôleur. L'organisation d'une interface graphique est délicate. L'architecture MVC ne prétend pas en éliminer tous les problèmes, mais fournit une première approche pour le faire. Offrant un cadre normalisé pour structurer une application, elle facilite aussi le dialogue entre les concepteurs. L'idée est de bien séparer les données, la présentation et les traitements. Il en résulte les trois parties énumérées plus haut : le modèle, la vue et le contrôleur.  Le modèle Le modèle représente le cœur (algorithmique) de l'application : traitements des données, interactions avec la base de données, etc. Il décrit les données manipulées par l'application. Il regroupe la gestion de ces données et est responsable de leur intégrité. La base de données sera l'un de ses composants. Le modèle comporte des méthodes standards pour mettre à jour ces données (insertion, suppression, changement de valeur). Il offre aussi des méthodes pour récupérer ces données. Les résultats renvoyés par le modèle ne s'occupent pas de la présentation. Le modèle ne contient aucun lien direct vers le contrôleur ou la vue. Sa communication avec la vue s'effectue au travers du patron Observateur. Le modèle peut autoriser plusieurs vues partielles des données. Si par exemple le programme manipule une base de données pour les emplois du temps, le modèle peut avoir des méthodes pour avoir tous les cours d'une salle, tous les cours d'une personne ou tous les cours d'un groupe de TD.  La vue Ce avec quoi l'utilisateur interagit se nomme précisément la vue. Sa première tâche est de présenter les résultats renvoyés par le modèle. Sa seconde tâche est de recevoir toute action de l'utilisateur (hover, clic de souris, sélection d'un bouton radio, cochage d'une case, entrée de texte, de mouvements, de voix, etc.). Ces différents événements sont envoyés au contrôleur. La vue n'effectue pas de traitement, elle se contente d'afficher les résultats des traitements effectués par le modèle et d'interagir avec l'utilisateur. Plusieurs vues peuvent afficher des informations partielles ou non d'un même modèle. Par exemple si une application de conversion de base a un entier comme unique donnée, ce même entier peut être affiché de multiples façons (en texte dans différentes bases, bit par bit avec des boutons à cocher, avec des curseurs). La vue peut aussi offrir à l'utilisateur la possibilité de changer de vue.  Le contrôleur Le contrôleur prend en charge la gestion des événements de synchronisation pour mettre à jour la vue ou le modèle et les synchroniser. Il reçoit tous les événements de l'utilisateur et enclenche les actions à effectuer. Si une action nécessite un changement des données, le contrôleur demande la modification des données au modèle, et ce dernier notifie la vue que les données ont changé pour qu'elle se mette à jour. D'après le patron de conception observateur/observable, la vue est un « observateur » du modèle qui est lui « observable. » Certains événements de l'utilisateur ne concernent pas les données mais la vue. Dans ce cas, le contrôleur demande à la vue de se modifier. Le contrôleur n'effectue aucun traitement, ne modifie aucune donnée. Il
  • 40. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 40 analyse la requête du client et se contente d'appeler le modèle adéquat et de renvoyer la vue correspondant à la demande. Par exemple, dans le cas d'une base de données gérant les emplois du temps des professeurs d'une école, une action de l'utilisateur peut être l'entrée (saisie) d'un nouveau cours. Le contrôleur ajoute ce cours au modèle et demande sa prise en compte par la vue. Une action de l'utilisateur peut aussi être de sélectionner une nouvelle personne pour visualiser tous ses cours. Ceci ne modifie pas la base des cours mais nécessite simplement que la vue s'adapte et offre à l'utilisateur une vision des cours de cette personne. Quand un même objet contrôleur reçoit les événements de tous les composants, il lui faut déterminer quelle est l'origine de chaque événement. Ce tri des événements peut s'avérer fastidieux et peut conduire à un code peu élégant (un énorme switch). C'est pourquoi le contrôleur est souvent scindé en plusieurs parties dont chacune reçoit les événements d'une partie des composants.  En programmation informatique, un framework est un kit de composants logiciels structurels, qui sert à créer les fondations ainsi que les grandes lignes de tout ou d’une partie d'un logiciel (architecture). Un framework se distingue d'une simple bibliothèque logicielle principalement par :  son caractère générique, faiblement spécialisé, contrairement à certaines bibliothèques ; un framework peut à ce titre être constitué de plusieurs bibliothèques chacune spécialisée dans un domaine. Un framework peut néanmoins être spécialisé, sur un langage particulier, une plateforme spécifique, un domaine particulier (Reporting, mapping, etc.).  le cadre de travail (traduction littérale de framework) qu'il impose de par sa construction même, guidant l'architecture logicielle voire conduisant le développeur à respecter certains patterns ; les bibliothèques le constituant sont alors organisées selon le même paradigme. Les frameworks sont donc conçus et utilisés pour modeler l'architecture des logiciels applicatifs, des applications web, des middleware et des composants logiciels. Les frameworks sont acquis par les ingénieurs, puis incorporés dans des logiciels applicatifs mis sur le marché, ils sont par conséquent rarement achetés et installés séparément par un utilisateur final.  En informatique, la recette (ou test d'acceptation) est une phase de développement des projets, visant à assurer formellement que le produit est conforme aux spécifications (réponse donnée à un instant t aux attentes formulées). Elle s'inscrit dans les activités plus générales de qualification. Cette étape implique, en la présence effective des différents acteurs du projet, maitrise d’œuvre et maitrise d'ouvrage, le déroulement rigoureux de procédures de tests préalablement décrits, et l'identification de tout écart fonctionnel ou technique.
  • 41. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 41 Annexes 1- Conseils pour la recherche de stage La recherche de stage est une étape déterminante pour trouver un stage qui correspond au mieux à nos attentes et pour que cette expérience soit des plus enrichissante. La première phase de cette recherche est la rédaction du CV. En effet, un CV correctement rédigé est primordial. Les ateliers mis en place à l'IUT sont d'une grande utilité et nécessitent un réel investissement de l'étudiant. De même pour la lettre de motivation. Une fois le CV et la lettre de motivation rédigées, il faut traquer les offres de stages sur internet et ne surtout pas attendre le dernier moment. De nos jours, un nombre considérable d'offres de stage son disponibles sur internet, de plus, certaines entreprises utilisent les CVthèques pour trouver des stagiaires, il ne faut donc pas hésiter à diffuser son CV au maximum. Malgré tout, le bouche à oreille reste le meilleur moyen à mes yeux. Il ne faut donc pas hésiter à parler de sa recherche de stage à son entourage. Pour chaque offre à laquelle l'étudiant répond, il lui faut adapter son CV et sa lettre de motivation type. Il est évident que plus un CV correspondra au profil de stagiaire recherché par l'entreprise, meilleures seront ses chances. Si l'étudiant obtient un entretien, il faut le préparer au mieux, quitte à reprendre un à un les points abordés dans l'offre de stage. De plus, il faut qu'il se renseigne un maximum sur l'entreprise. L'étudiant ne doit pas hésiter à prendre des initiatives afin de se démarquer des autres personnes postulant pour la même offre.
  • 42. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 42 2- Fiche de stage Année scolaire 2012-2013 Domaine d’activité Informatique Entreprise partenaire Rectorat de Versailles, http://www.ac-versailles.fr Étudiant Thibault Nowak Développement de l’application (PABLO): Portail d’Alimentation des Bases Locales. Présentation de l’entreprise La direction des systèmes d’information (DSI) est chargée de mettre en place une meilleure cohérence des organisations informatiques dans l’académie pour garantir un développement harmonisé des systèmes d’information du ministère. Elle est composée de plusieurs pôles afin d’assurer, entre autres, le développement des applications locales de gestion et leurs pérennité. Objectif du stage Pour l’entreprise : Mise en place d’un outil permettant la gestion du lancement des tâches d’alimentation des bases locales. Cet outil permettra de créer des profils d’utilisateurs qui n’auront accès qu’aux tâches qui leurs auront été autorisées, ils pourront ainsi lancer ces tâches sans avoir à solliciter le service de Direction des Systèmes d’Information. Pour nous : Prise en mains des outils nécessaires au développement d’une application web et initiation à la gestion de projets. Déroulement du projet  Prendre en main les outils de développement.  Appréhender le sujet.  Définir les objectifs de l’application.  Rédiger le cahier des charges.  Créer les maquettes de l’application.  Mettre en place le MCD et le MPD.  Développer la partie vue de l’application.  Développer la partie modèle contrôleur de l’application.  Créer le design et le logo de l’application.  Présenter une version fonctionnelle de l’application lors de la recette.  Rendre une version finale de l’application répondant au cahier des charges fixé au début. Domaines de compétence et mots clés Développement, SGBD, ETL. HTML, Php, Zend framework 2, CSS, Bootstrap, Javascript, SQL, Infographie, Maquettage, MPD, MCD.
  • 43. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 43 3- CV
  • 44. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 44 4- Fiche métier Analyste / Concepteur L’analyste-programmeur met au point ou améliore les systèmes et les applications utilisés au rectorat, sous la direction d’un chef de projet. Dans un premier temps, il doit bien comprendre les besoins des futurs utilisateurs du programme, toutes leurs obligations et toutes leurs contraintes. Une foi les besoins bien assimilés, il assiste le chef de projet dans la rédaction du cahier des charges. Une foi cette étape d'analyse franchie, c'est l'étape de programmation qui débute. l'analyste-concepteur développe l'application en respectant les spécifications du cahier des charges. C’est un métier très riche, puisqu’un analyste-programmeur peut être amené à travailler sur des projets très différents les uns des autres. Activités:  Analyser les besoins des utilisateurs.  Rédiger un cahier des charges précisant les solutions techniques.  Assurer la conception technique et le codage du programme.  Concevoir des notices d'installation et des guides utilisateurs.  Analyser les problèmes techniques et proposer des solutions. Compétences:  Maîtrise des langages de programmations.  Connaissance du matériel informatique et des réseaux.  Comprendre les demandes des utilisateurs.  Aptitude à s'intégrer dans une équipe. Perspectives d'évolution:  Chef de projets.  Responsable adjoint de pôle de la DSI.  Responsable de pôle de la DSI.  Directeur des Systèmes d'Informations. Accès au métier: Grade d'ingénieur d'étude, on accède à ce grade avec un bac +3 et en passant le concours ITRF de la fonction publique.
  • 45. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 45 5- Convocation à la réunion de lancement de PABLO Réunion de lancement Projet PABLO Objectif général de la réunion : Lancement du projet PABLO (Portail d’Alimentation des Bases Locales.), une application permettant la gestion des droits de lancement de scénarios sous Kettle. Ordre du jour : -Architecture des bases locales. -Nombre d’utilisateurs et types d’utilisateurs. -Volume des scénarios gérés. -niveaux d’utilisateurs. -authentification sur l’application. -Fonctionnalités souhaités. -Ergonomie générale. Personnes conviées : Maîtrise d’ouvrage (MOA): Jean-Pierre GUIMMARRA Responsable Business intelligence Maîtrise d’œuvre (MOE) : Mickaël LE-CALVEZ Chef de projet Alexandre DIZ GANITO développeur stagiaire Thibault NOWAK développeur stagiaire
  • 46. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 46 6- Compte rendu de la réunion de lancement de PABLO Compte rendu réunion de lancement de PABLO (Préparation du cahier des charges) Volumétrie : Nombre d’utilisateurs :  3 administrateurs  Ensemble de la DSI1 (environ 15 personnes)  Prévoir l’extension à d’autres utilisateurs (supers utilisateurs) Nombre de projets concernés par PABLO : 21 projets Nombre de taches concernées par PABLO : environ 50 tâches (Croissance exponentielle) Les cas d’utilisation : 1. L’authentification : L’authentification se fait via ClearTrust. L’application déterminera ensuite le profil de la personne utilisant l’application (Administrateur, Super utilisateur, Utilisateur) 2. L’administration Une fois reconnu par l’application comme étant un administrateur, ce dernier peut créer des utilisateurs, des super utilisateurs, et des administrateurs ainsi que leur donner des droits sur le lancement des taches. Nous pourrons envisager par la suite que le super utilisateur puisse donner des droits aux utilisateurs mais dans le limite de leurs attributions. 3. L’utilisation Une fois reconnu par l’application comme étant un utilisateur ou un super utilisateur, ces derniers peuvent lancer les tâches qui leurs sont autorisées. L’administrateur pourra lui aussi lancer des taches depuis l’application, avec un accès à toutes les tâches. Ils peuvent tous utiliser des paramètres. Fonctionnalités secondaires : Faire une application la plus simple possible. Gestion du paramètre : champ de saisie (si vide, paramètre par défaut). Avertir de la durée moyenne de la tâche. Si l’utilisateur ne dispose d’aucun droit, prévoir une page lui indiquant. Monitoring :  tenir l’utilisateur informé de l’évolution de la tâche lancée (traitement de la tâche).  Avertir l’utilisateur lorsque la tâche est terminée, et lui dire comment cela s’est déroulé (Avec des erreurs ou non). Historique :  Garde en mémoire le dernier champ saisi par l’utilisateur.  Qui a lancé quoi ? Quand ? et avec quel paramètre
  • 47. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 47 7- Code source a) JobDao <?php namespace ApplicationDao; use ApplicationModelParametreJob; class JobDao extends AbstractDao{ public function __construct($table, $adapter, $features = null, $resultSetPrototype = null, Sql $sql = null){ parent::__construct($table, $adapter, $features, $resultSetPrototype ,$sql); $this->primaryKey = 'ID_JOB';} public function getAllWithProjects(){ $sql = 'SELECT P.*, J.* FROM R_DIRECTORY P INNER JOIN R_JOB J ON ( J.ID_DIRECTORY = P.ID_DIRECTORY ) WHERE P.ID_DIRECTORY_PARENT=0 ORDER BY `P`.`DIRECTORY_NAME` ASC , J.NAME ASC'; $statement = $this->adapter->query($sql); $result = $statement->execute(); $resultSet = clone $this->resultSetPrototype; $resultSet->initialize($result); $aData= array(); foreach ($resultSet as $elt){ if (! isset($aData[$elt->idProjet]['nom'])){ $aData[$elt->idProjet]['nom'] = $elt->nomProjet;} $aData[$elt->idProjet]['jobs'][$elt->id]['nom'] = $elt->nom;} return $aData;} public function getWithParameters($id){ $sql = 'SELECT J.ID_JOB, J.NAME, J.EXTENDED_DESCRIPTION, A.NR, A.CODE, A.VALUE_STR FROM R_JOB J LEFT JOIN R_JOB_ATTRIBUTE A ON ( A.ID_JOB = J.ID_JOB AND A.CODE IN ("PARAM_KEY", "PARAM_DESC", "PARAM_DEFAULT")) WHERE J.ID_JOB = '.$id; $statement = $this->adapter->query($sql); $result = $statement->execute(); $aData= array(); foreach ($result as $elt){ $aData[0]['NAME'] = $elt['NAME']; $aData[0]['ID_JOB'] = $elt['ID_JOB']; $aData[0]['EXTENDED_DESCRIPTION'] = $elt['EXTENDED_DESCRIPTION']; if (! empty($elt['CODE'])) { $aData[0]['PARAMETRES'][$elt['NR']][$elt['CODE']] = $elt['VALUE_STR'];}} $oParam = new ParametreJob(); if(isset ($aData[0]['PARAMETRES'])){ foreach($aData[0]['PARAMETRES'] as &$elt){ $oPar= clone $oParam; $oPar->exchangeArray($elt); $elt= $oPar;}} $resultSet = clone $this->resultSetPrototype; $resultSet->initialize($aData); var_dump($resultSet); return $resultSet;}}
  • 48. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 48 b) HistoriqueDao <?php namespace ApplicationDao; class HistoriqueDao extends AbstractDao{ public function __construct($table, $adapter, $features = null, $resultSetPrototype = null, Sql $sql = null){ parent::__construct($table, $adapter, $features, $resultSetPrototype ,$sql); $this->primaryKey = 'HST_ID';} public function getLastParameters($id){ $sql = 'SELECT H.HST_DATE, H.HST_PARAMS, H.HST_RESULT, H.ID_JOB_FK FROM HISTORIQUE H WHERE H.ID_JOB_FK ='.$id.' ORDER BY H.HST_DATE DESC LIMIT 1'; $statement = $this->adapter->query($sql); $result = $statement->execute(); $resultSet = clone $this->resultSetPrototype; $resultSet->initialize($result); return $resultSet;} public function getIdHist($jobId, $userId){ $sql = 'SELECT * FROM HISTORIQUE WHERE (ID_JOB_FK = "'.$jobId.'" AND USR_ID_FK = "'.$userId.'") ORDER BY `HISTORIQUE`.`HST_DATE` DESC LIMIT 1'; $statement = $this->adapter->query($sql); $result = $statement->execute(); $resultSet = clone $this->resultSetPrototype; $resultSet->initialize($result); $id = $resultSet->current()->id; return ($id);} public function updateresult($oHist){ $sql = 'UPDATE HISTORIQUE SET HST_RESULT = "'.($oHist->resultat).'" WHERE HST_ID ='.($oHist->id); $statement = $this->adapter->query($sql); $result = $statement->execute(); $resultSet = clone $this->resultSetPrototype; $resultSet->initialize($result);}}
  • 49. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 49 c) JobController <?php namespace ApplicationController; use ApplicationFormTacheForm; use ZendJsonJson; use ApplicationModelJob; use ApplicationModelHistorique; use ZendMvcControllerAbstractActionController; use ZendViewModelViewModel; class JobController extends AbstractActionController{ protected $jobDao; protected $historiqueDao; public function getJobDao(){ if (!$this->jobDao){ $sm = $this->getServiceLocator(); $this->jobDao = $sm->get('ApplicationDaoJobDao');} return $this->jobDao;} public function getHistoriqueDao(){ if (!$this->historiqueDao) { $sm = $this->getServiceLocator(); $this->historiqueDao = $sm->get('ApplicationDaoHistoriqueDao');} return $this->historiqueDao;} public function indexAction(){ $oDao = $this->getJobDao(); $aoJob = $oDao->getAllWithProjects(); return new ViewModel(array('aoJob'=>$aoJob));} public function viewAction(){ $id = (int) $this->params()->fromRoute('id', 0); if (!$id) { return $this->redirect()->toRoute('application/default', array( 'controller' => 'administration', 'action' => 'utilisateur'));} $aData = $this->getJobDao()->getById($id); $result = $this->getJobDao()->getWithParameters($id); $oTemp = $this->getHistoriqueDao()->getLastParameters($id); $oHisto = $oTemp->current(); if ( isset($oHisto->date)){ $dateTime = new DateTime($oHisto->date); $oHisto->date = $dateTime->format("le d/m/Y a Hhi"); $parTemp = $oHisto->parametres; $oHisto->parametres = explode(";", $parTemp); switch ($oHisto->resultat){case 0: $oHisto->resultat = "en cours"; break;case 1: $oHisto->resultat = "succès"; break;case 2: $oHisto->resultat = "échec"; break;}} $form = new TacheForm('job',$result->current()); $oView = new ViewModel(array('oJob'=>$result->current(), 'oHisto'=>$oHisto, 'form'=>$form)); $oView->setTerminal(true); return $oView;}
  • 50. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 50 public function runAction(){ $request = $this->getRequest(); $aData = $request->getPost(); $oDao = $this->getJobDao(); $oHist = new Historique; $oDaoHist = $this->getHistoriqueDao(); $oJob = $oDao->getById($aData['id']); $oTest = $oDao->getWithParameters($aData['id']); $aConfig = $this->getServiceLocator()->get('Config'); $oJob->aConfig=$aConfig['kettle']; $datetime = new DateTime(null); $oHist->date = $datetime->format("Y-m-d H:i:s"); $oHist->userId = '49'; $oHist->jobId = $aData['id']; $oHist->parametres = ''; $oHist->resultat = 0; foreach($oTest->current()->parametres as $elt){ if ($oHist->parametres == '') $oHist->parametres = $elt->nom . ' = ' . $aData[str_replace(' ', '_', $elt->nom)]; else $oHist->parametres = $oHist->parametres . ';' . $elt->nom . ' = ' . $aData[str_replace(' ', '_', $elt->nom)];} $oDaoHist->save($oHist); $oJob->run(); return $this->getResponse()->setContent($oJob->id);} public function refreshAction(){ $id = (int) $this->params()->fromRoute('id', 0); $oDao = $this->getJobDao(); $oJob = $oDao->getById($id); $aData = array(); $infos = stat('c:data-integrationlogspablo_man.txt'); $aData['id'] = $id; if ($infos['size']>0){ $aData['end']=1; $oHist = new Historique; $oDaoHist = $this->getHistoriqueDao(); $idHist = $oDaoHist->getIdHist($aData['id'], 49); $oHist->id = $idHist; $oHist->resultat = 1; $oDaoHist->updateresult($oHist);} else{$aData['end']=0;} return $this->getResponse()->setContent(Json::encode($aData));}}
  • 51. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 51 d) TacheForm <?php namespace ApplicationForm; use ZendFormElement; use ZendFormForm; class TacheForm extends Form{ public function __construct($name = null,$oJob){ parent::__construct('lancement'); $this->setAttribute('method', 'post'); $this->add(array( 'name' => 'id', 'type' => 'Hidden', 'attributes' => array( 'id'=> 'id', 'value'=> $oJob->id,))); if(! empty($oJob->parametres)){ foreach ($oJob->parametres as $elt){ $this->add(array( 'name' => $elt->nom, 'type' => 'Text', 'attributes' => array( 'id' => $elt->nom, 'value' => $elt->valeurDefaut, 'style'=>'width: 50px;'), 'options' => array( 'label' => $elt->nom,),)); }}}}?>
  • 52. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 52 e) Layout <?php echo $this->doctype(); ?> <html lang="en"> <head> <meta charset="utf-8"> <?php echo $this->headTitle('Pablo, Portail d'Alimentation des Bases LOcales')- >setSeparator(' - ')->setAutoEscape(false) ?> <?php echo $this->headMeta()->appendName('viewport', 'width=device-width, initial- scale=1.0') ?> <!-- Le styles --> <?php echo $this->headLink(array('rel' => 'shortcut icon', 'type' => 'image/vnd.microsoft.icon','href' => $this->basePath() . '/img/Pablo_icon.ico')) ->prependStylesheet($this->basePath() . '/css/bootstrap- responsive.min.css') ->prependStylesheet($this->basePath() . '/css/style.css') ->prependStylesheet($this->basePath() . '/css/bootstrap.min.css') ?> <!-- Scripts --> <?php echo $this->headScript()->prependFile($this->basePath() . '/js/html5.js', 'text/javascript', array('conditional' => 'lt IE 9',)) ->prependFile($this->basePath() . '/js/bootstrap.min.js') ->prependFile('http://code.jquery.com/jquery.js') ->prependFile($this->basePath() . '/js/tools.js')?> </head> <body> <div class="navbar navbar navbar-fixed-top" "> <div class="navbar-inner"> <div class="container"> <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav- collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </a> <a class="brand" href="<?php echo $this->url('home') ?>"></a> <div class="nav-collapse collapse" style="margin-top:30px;"> <ul class="nav" id="filtre">
  • 53. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 53 <li class="<?php if($_SERVER['REQUEST_URI'] == $this- >url('application/default',array('controller'=>'administration','action'=>'utilisateurs'))) {echo 'aronctive';}?>"> <a href="<?php echo $this- >url('application/default',array('controller'=>'administration','action'=>'utilisateurs')) ?>">Utilisateurs</a></li> <li class="<?php if($_SERVER['REQUEST_URI'] == $this- >url('application/default',array('controller'=>'administration','action'=>'autorisation'))){e cho 'aronctive';}?>"> <a href="<?php echo $this- >url('application/default',array('controller'=>'administration','action'=>'autorisation')) ?>">Autorisations</a></li> <li class="<?php if($_SERVER['REQUEST_URI'] == $this- >url('application/default',array('controller'=>'job','action'=>'index'))){echo 'aronctive';}?>"> <a href="<?php echo $this- >url('application/default',array('controller'=>'job','action'=>'index')) ?>">Tâches</a></li> <li class="<?php if($_SERVER['REQUEST_URI'] == $this- >url('application/default',array('controller'=>'administration','action'=>'testdao'))){echo 'aronctive';}?>"> <a href="<?php echo $this- >url('application/default',array('controller'=>'administration','action'=>'testdao')) ?>">Test DAO</a></li> </ul> </div><!--/.nav-collapse --> </div> </div> </div> <div class="container"> <?php echo $this->content; ?> <hr> <footer> <p>PABLO &copy;, Portail d'Alimentation des Bases LOcales - Rectorat de Versailles - 2013</p> </footer> </div> <!-- /container --> <?php echo $this->inlineScript() ?> </body> </html>
  • 54. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 54 f) Job -> index <?php $title = 'Tache'; $this->headTitle($title);?> <!-- Modal--> <div id="myModal" class="modal hide fade" tabindex="-1" role="dialog" aria- labelledby="myModalLabel" aria-hidden="true"></div> <div class="row"><!-- Début partie gauche de la page --> <aside class="span6" > <h1>Projets</h1><!-- Arbo Projets --> <?php $nombre = 0;?> <div style="overflow: auto ;height: 440px; width:480px; border:1px solid #CCCCCC; border-radius: 5px;"> <div id="monaccordeon"> <?php foreach ($aoJob as $cle => $element) : ?> <div class="accordion-group"> <div class="accordion-heading centrage" > <a style="color: #FF0000;" class="accordion-toggle" href="#item<?php $nombre++; echo($nombre) ?>" data- toggle="collapse" data-parent="#monaccordeon"> <?php echo($element['nom']) ?> </a> </div> <div id="item<?php echo($nombre) ?>" class="collapse"> <div class="accordion-inner"> <table class= "table table-striped"> <tbody> <?php foreach ($element['jobs'] as $idJob=>$pl) : ?> <tr> <td><a id="job" style="color: #339933;" href="javascript:AfficherJob( <?php echo ($idJob)?>);"><?php echo ($pl['nom']);?></a></td> </tr> <?php endforeach; ?> </tbody> </table> </div> </div> </div> <?php endforeach; ?> </div> </div><!-- Fin Arbo Projets --> </aside><!-- Fin partie gauche de la page --> <!-- Début partie droite de la page --><aside id="tache" class="span6"> <div class="centrage" style="margin-top:90px"><img style="opacity:0.4;" src="<?php echo $this->basePath("img/logo_pablo_hauteur.png")?>" alt="logo" /></div> </aside> </div>
  • 55. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 55 g) Job -> view <div class="span6"><h3><?php echo($oJob->nom) ?></h3></div> <!-- déscription tâches --> <div class="span6 textTache" id="Description"><?php if (!$oJob->extDescription) {echo('Pas de description disponible pour cette tâche.');}else{echo($oJob- >extDescription);}?></div> <!-- Fin déscription tâches --> <!-- Bloc lance/param --><div class="span6 textTache espace"> <!-- Lancement tâche --><div class="bloc" style="width:100px"> <div id="button"><a href="javascript:runJob(<?php echo($oJob->id)?>);" role="button" class="btn btn-info btn-large" title="Lancer"><i class="icon-white icon-play"></i></a><br>Lancer la tâche</div> <div id="gif" style="display:none"><img src="<?php echo $this- >basePath("img/ajax-loader.gif")?>" alt="gif" /><br>Traitement<br>en cours</div> </div><!-- Fin Lancement tâche --> <!-- Paramètres --><div class="bloc"> <?php echo $this->form()->openTag($form); ?> <?php echo $this->formHidden($form->get('id'))?> <?php if(! is_null($oJob->parametres)){?> <z>Paramètres</z> <table class="table table-bordered table-striped" style="width:315px;"> <thead> <tr> <th>nom</th> <th>valeur</th> <th>description</th> </tr> </thead> <tbody> <?php foreach($oJob->parametres as $elt):?> <tr> <td><?php echo ($elt->nom); ?></td> <td><?php echo $this->formText($form->get($elt->nom));?></td> <td><?php echo ($elt->description); ?></td> </tr> <?php endforeach;?> </tbody> </table> <?php };?> <?php echo $this->form()->closeTag(); ?> </div><!-- Fin Paramètres --> </div><!-- Fin Bloc lance/param -->
  • 56. Nowak Thibault 2012 – 2013 Rapport de stage DSI, rectorat de Versailles. 56 <!-- Tableau Historique --> <div class="span6 espace" style="width:500px"> <table class="table table-bordered table-striped table-condensed"> <thead> <tr> <th>type de<br>lancement</th> <th>Date</th> <th>Paramètres</th> <th>Résultat</th> </tr> </thead> <tbody> <tr class="success"> <td>Planifié</td> <td>le 12/12/12 a 00h00</td> <td><b>Param 1 :</b>6<br><b>Param 2 :</b>Septembre</td> <td>Positif</td> </tr> <?php if ( isset($oHisto->date)):?> <tr class="<?php if($oHisto->resultat == "en cours"){print"info";}elseif($oHisto- >resultat == "succès"){print"success";}elseif($oHisto->resultat == "échec"){print"error";};?>"> <td>Manuel</td> <td><?php echo($oHisto->date); ?></td> <td><?php $i=0; foreach($oHisto->parametres as $elt){ if($i != 0){print"<br>";} echo($elt); $i++; }?></td> <td><?php echo($oHisto->resultat); ?></td> </tr> <?php endif;?> </tbody> </table> </div> <!-- Fin Tableau Historique -->