Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 36 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
36
Dung lượng
1,38 MB
Nội dung
Institut de la Francophonie pour l’Informatique Institut National des Télécommunications Mémoire de fin d’études Répartition d'un portail Web collaboratif par utilisation de Web Services Responsable: Étudiant: M. Christian BAC (INT) CAO Tien Dung (IFIP11) Ce stage a été réalisé au sein du projet PicoForge et Persue du département Informatique de l'Institut National des Télécommunications(INT) Evry, Septembre 2007 Remerciements J’adresse toute ma gratitude à mon responsable de stage, M. Christian BAC (INT), pour sa disponibilité, son soutien constant et son aide précieuse durant ce stage Je voudrais également remercier M. Olivier BERGER (INT), DANG Quang Vu (IFI Promotion 10) et M. Bent HAMET (phpgroupware) pour leurs collaborations serrées, leurs aides tout au long de mon stage Un grand merci toutes les personnes du département Informatique l'INT pour leurs aides et leur gentillesse pendant mon séjour en France Enfin, je voudrais exprimer mon entière reconnaissance envers ma famille, mes amis et mes professeurs à l’IFI pour leurs soutiens, leurs aides et leurs encouragements Résumé Dans le cadre du stage de master de recherche effectué dans le département Informatique l'INT Evry (France), nous avons ộtudiộ les faỗons d'intộgrer les applications existantes dans un portail de travail collaboratif en utilisant les services Web. Le portail que nous avons utilisé pour intégrer les applications est la plateforme Picoforge. C’est le nom pour un ensemble d'applications de LibreSoftware qui sont intégrées dans une plateforme de Web, Picoforge permet le travail de collaboration, pour le développement de logiciels. L’application qui a été proposée et intégrée dans Picoforge est le système Mantis. C’est un système libre de suivi de bogues sur le Webbasé. Il supporte une interface de services Web (SOAP) pour l’interaction entre Mantis et les autres applications Nous avons intégré non seulement Mantis dans la plateforme Picoforge mais aussi étudié l’architecture générale et normalisé les services pour intégrer rapidement les autres applications dans Picoforge. Pendant la première partie du stage, nous avons modifié Picoforge pour y intégrer les notions de sous projet en utilisant une notion de catégorie de projet. L’intégration de Mantis dans la plateforme Picoforge et l’architecture générale de noyau de Picoforge sera utilisée dans la version 1.2 selon la roadmap de développement du projet Picoforge dans la fédération d'identité de GET (Groupe des Écoles des Télécommunications)/INT Abstract In the context of the training course of master of research carried out in the department of information of the INT in Evry (France), we studied the ways of integrating the existing applications in a platform for collaboratif work by using the Web services. The flatform that we used to integrate the applications is the Picoforge. It is the name for a set of applications of LibreSoftware1 which are integrated into a Web platform, Picoforge allows the work of collaboration, for the development of software The application which was proposed and integrated in the Picoforge is the Mantis system. It is a free system of bug tracking on Webbased. It supports an interface of the Web service (SOAP) for the interaction between Mantis and the other applications We integrated not only Mantis in the Picoforge but also studied the general architecture and standardized the services to quickly integrate the other applications in Picoforge During the first part of the training course, we modified Picoforge to integrate the concepts of subproject and of category of project into it The integration of Mantis in the Picoforge platform and the general architecture of core of Picoforge will be used in version 1.2 according to the roadmap of development of the Picoforge project in the federation of identity of GET (Groupe des Écoles des Télécommunications) /INT 1 LibreSoftware also defined as FreeSoftware or OpenSource is defined classically by the Free Software definition Table des manières Remerciements Résumé Abstract Chapitre 1. Introduction 1.1.Contexte du stage 1.2.Portail de travail collaboratif 1.3.Picoforge une plateforme de travail collaboratif 1.4.Objectifs du stage .9 1.5.Organisation du rapport 10 Chapitre 2. État de l'art 11 2.1.Picoforge 11 2.2.Application de suivi de bogues 13 2.2.1.Mantis 13 2.2.2.Bugzilla 13 2.2.3.Autre applications .14 2.3.Web Services 14 2.3.1.Architecture générale 15 2.3.2.WSDL 16 2.3.3.XMLRPC 16 2.3.4.SOAP .17 Chapitre 3. Propositions 19 Chapitre 4. Choix de réalisation 21 4.1. Ajouter la notion de sousprojet et de catégorie dans Picoforge 21 4.2. Normalisation des services pour intégrer les logiciels dans Picoforge 21 4.2.1. Au niveau projet 22 4.2.2. Au niveau utilisateur .23 4.3. Création des hooks 23 4.4. Intégration de Mantis dans Picoforge via SOAP 24 4.4.1 Analyse 24 4.4.2 Solution 25 4.4.3 Synchronisation des projets, des utilisateurs et des categories 27 4.4.4 Configure Mantis login au LDAP 27 Chapitre 5. Picoforge dans l'avenir prochain 29 5.1.Picoforgecore 30 5.2.Avantage 30 5.2.1. Installation indépendante des applications 30 5.2.2.Intégration facile des applications 31 5.2.3.Changement facile de version de l'application 31 Conclusions et Perspectives 32 Références 33 Annexe A: phpGroupWare 34 APIs de phpgroupware 34 Web services dans phpgroupware 35 Annexe B: Utilisation de SOAP pour intégrer Sympa avec Picoforge 36 Liste des figures Figure 1: Architecture générale de la version 1.1 de Picoforge 11 Figure 2: Architecture générale du Web service 15 Figure 3: Transmission de données en utilisant XMLRPC .16 Figure 4: Modèle d'intégration de Mantis dans Picoforge 26 Figure 5: Architecture générale de la version 1.2 de Picoforge 29 Figure 6: Répartition d'installation de la plateforme Picoforge 30 Figure 7: Architecture générale de phpGroupWare 34 Figure 8: Modèle d'intégration de Sympa dans Picoforge 36 Répartition d'un portail Web collaboratif par utilisation de Web Services Chapitre Introduction 1.1.Contexte du stage Le Groupe des Écoles des Télécommunications (GET) se compose plusieurs grandes écoles d'ingénieurs et de management ainsi que des centres de recherche situés à Paris (ENST – École Nationale Supérieure des Télécommunications), Brest (ENST Bretagne), Évry (INT), SophiaAntipolis (Eurécom) et Lille (Télécom Lille 1) en France. Le groupe compte actuellement plus de 470 enseignantschercheurs et plus de 500 thésards dans ses laboratoires Une flatesforme de travail collaboratif pour la recherche est développé GET depuis plusieurs années, c'est PicoLibre. Actuellement, le département informatique de l'INT développe une plateforme de travail collaboratif pour le logiciel (PicoForge) en se basant PicoLibre Actuellement, la tendance de développement de logiciel en matière d’intégration des applications existantes, spécialement des applications libres, augmente rapidement parce qu'elle améliore les temps développement et qu'ell diminue les coûts de ces derniers En plus, les applications existantes peuvent marcher sur des systèmes d'exploitation différents comme Window, ou Linux mais aussi sur des plateformes différentes. Nous pouvons, en effet, ne pas installer toutes ces applications sur un même serveur 1.2.Portail de travail collaboratif Un portail Web est un site Web qui offre une porte d'entrée unique sur un large panel de ressources et de services (email, forums, moteur de recherche etc.) centrés sur un domaine ou une communauté particulière. Avec un portail Web, les utilisateurs ont la possibilité d'enregistrer un compte pour s'y connecter ultérieurement et utiliser l'ensemble des services proposés. Normalement, chaque utilisateur a une espace de travail individuel qui est associé avec son compte Le travail collaboratif est un nouveau modèle de travail qui résulte des deux modalités suivantes: Organiser le travail en séquences de tâches parallèles CAO Tien Dung – Promotion 11 IFI Répartition d'un portail Web collaboratif par utilisation de Web Services Fournir aux acteurs de chacune des tâches une information utile et facilement exploitable sur les autres tâches parallèles et sur l'environnement de la réalisation Un portail de travail collaboratif est un environnement de travail collaboratif sur le Web. Il a une interface de Web, des ressources Web et des services Web etc Dans un portail de travail collaboratif, il faut avoir les outils pour travailler. Les méthodes dépendent de chaque but concret et les outils pour organiser le travail pour chaque membre pour éviter les tâches qui se répètent. Il faut aussi faciliter l'accès et le partage des informations communes des contributeurs, des projets et des applications. Évidemment, ce portail permet aux contributeurs de travailler ensemble, de partager des connaissances, des ressources et d'utiliser ensemble des ressources. 1.3.Picoforge une plateforme de travail collaboratif PicoForge est le nom d'un ensemble d'applications logicielles libres intégrées pour former une plateforme Web destinée au développement collaboratif. La plateforme PicoForge est développée par l'équipe du projet PFTCR (PlateFormes de Travail Collaboratif pour la Recherche), dans la continuité du projet PicoLibre développé depuis plusieurs années au GET Jusq'au maintenant, il y a plusieurs application libre et indépendante qui sont intégrées dans Picoforge comme: Sympa, Twiki, CVS, SubVersion et quelques applications sont développées en utilisant la plateforme phpgroupware comme: Todo List, Bug Report Tout d'abord, Picoforge a une interface de Web qui agit en tant que bureau Web pour la description de projet et l'accès aux outils offrant différentes possibilités pour chaque projet. À partir de cette interface, l'administrateur installe (ou supprime) aussi les applications et gère les utilisateurs, les utilisateurs travaillent sur ses projets en utilisant les outils de Picoforge 1.4.Objectifs du stage Dans le contexte de développement de la plateforme Picoforge, le nombre d'applications intégrées dans Picoforge augmente de plus en plus. La répartition de ces applications sur des serveurs différents est nécessaire parce que cela diminuera le CAO Tien Dung – Promotion 11 IFI Répartition d'un portail Web collaboratif par utilisation de Web Services charge du serveur. Cette répartition permettra aussi d'intégrer un (ou plusieurs) logiciel qui marche sur un système d'exploitation différent Selon le contexte cidessus, le but de ce stage est de fournir les techniques et améliorer l'architecture pour contruire le Picoforge de faỗon que les applications d'intégration puissent être installées et développées indépendamment les unes des autres.Danslecas,oựnousremplaỗonsuneapplicationparuneautreapplicationqui alamờmefonction,l'intộgrationestalorsplussimple. Danslapartiepratiquedecestage,nousintộgreronsuneapplicationdesuivide boguesdanscetteplateforme.Nousnormaliseronsaussil'interfacedecommunication entrel'applicationdesuivideboguesetPicoforge 1.5.Organisation du rapport L'état de l'art est réalisé dans le chapitre 2, il donne une vue générale sur la flate forme PicoForge, les applications courantes de suivi des bogues et les technologies que nous avons utilisé dans ce stage. Le troisième chapitre, nous proposons quelques idées pour améliorer la flateforme PicoForge. Le quatrième chapitre, nous presentons notre travail de réalisation dans ce stage Le dernière chapitre, nous parlons de l'architecture de PicoForge dans l'avenir prochain (version 1.2) et quelques avantages CAO Tien Dung – Promotion 11 IFI 10 Répartition d'un portail Web collaboratif par utilisation de Web Services synchronisation de données, dans Picoforge Dans cette partie, nous donnons les événements normaux deux niveau (le projet et l'utilisateur) Pour mettre en correspondance chaque événement, il faut avoir un service pour la synchronisation. 4.2.1 Au niveau projet Avec un projet, nous devons synchroniser immédiatement les données des autres applications quand nous créons un nouveau projet, mettons jour un projet, supprimons un projet, ajoutons ou enlevons un membre dans le projet, ajoutons ou enlevons une catégorie du projet. Voici la liste de données que Picoforge donne à chaque événement correspondant Événement Création de projet Données Description project_id code de projet short_title court nom de projet long_title long nom de projet description description de projet view_state état de projet (public/private) web_link le site web de projet parent_project le projet parent Mise à jour de projet même données que pourla création de projet Suppression de projet même données que l'événement de création de projet project_id short_title Ajouter un membre user_id dans projet user_name is_admin_project code de projet court nom de projet code d'utilisateurorganisation nom d'utilisateur l'utilisateur est chef de projet ou pas? Enlever un membre même données que l'événement d'ajouter un membre de projet Ajouter une catégorie du projet project_id code de projet short_title court nom de projet CAO Tien Dung – Promotion 11 IFI 22 Répartition d'un portail Web collaboratif par utilisation de Web Services category_name Enlever une catégorie du projet nom de catégorie même données que l'événement d'ajouter une catégorie du projet avec code de catégorie Tableau 2: Liste de données que Picoforge donne à chaque événement correspondant 4.2.2 Au niveau utilisateur Au niveau utilisateur, il y a deux événements: création et suppression d'utilisateur. Donc nous avons besoin de deux services correspondants pour la synchronisation de données Les données jointes pour la création d'un utilisateur se composent de : lastname (nom), firstname (prénom), username (utilisateur), password (mot de pass), email, phone_number (numéro de téléphone), organization_name (nom d'organisation) 4.3 Création des hooks Dans une solution informatique, un hook permet de lancer un programme personnalisé au moment précis où le programme principal a la tâche de l'exécuter. Sans action de l'utilisateur, le hook est généralement vide et l'application tourne de manière standard Techniquement, un hook peut se présenter sous la forme d'un fichier (par exemple un script) localisé un endroit bien particulier Le programme principal impose généralement les caractéristiques du hook: son type, sa localisation voire son nom, et le moment auquel il sera exécuté Dans phpgroupware, les hooks sont supportés pour permettre de lancer automatiquement des modules quand il a lieu un événement. La plupart des hooks sont utilisés dans le module phpgw.admin pour des événements comme: create_account, delete_account, admin, config etc Actuellement, si nous ajoutons une nouvelle application dans Picoforge, nous devons ajouter les commandes correspondantes dans la classe class.project.inc.php, par exemple, pour lancer cette application à partir d'événement de création de projet. C'est trop complexe pour l'intégration des applications suivantes. Nous utilisons donc les hook de phpgroupware pour lancer les modules de création de projet (ou de CAO Tien Dung – Promotion 11 IFI 23 Répartition d'un portail Web collaboratif par utilisation de Web Services catégorie de projet, ) des applications d'intégration quand l'utilisateur crée un nouveau projet dans Picoforge. Voici la liste de hooks que nous avons créé pour lancer les modules nécessaires Nom de hook L'événement correspondant hook_project_add L'événement de création d'un nouveau projet hook_project_update Mettre à jour de projet hook_project_delete Supprimer un projet hook_project_add_category Ajouter une catégorie dans projet indiqué hook_project_remove_category Enlever une catégorie de projet indiqué hook_project_add_user Ajouter l'utilisateur dans projet indiqué hook_project_remove_user Enlever un utilisateur de projet indiqué Tableau 5: Liste des hooks ajoutés dans Picoforge Avec ces hooks, toutes les applications écrivent seulement le module qui correspond à chaque événement, par exemple, le module hook_project_add.inc.php pour le hook project_add Evidemment, les infomations jointes pour chaque événement sont envoyées au module correspondant via les variables globales 4.4 Intégration de Mantis dans Picoforge via SOAP 4.4.1 Analyse Mantis version 1.0.7 supporte une interface de Web service (SOAP). Avec cette interface, nous pouvons créer une nouvelle bogue, supprimer ou mettre à jour des bogues. Nous pouvons prendre les informations de bogue, évidemment. Au niveau projet, Mantis supporte seulement de prendre les infomations de projet. Il ne supporte pas de création de projet, de suppression de projet, de mise jours de projet, de création d'utilisateur, de suppression d'utilisateur, d'ajout des catégories dans un projet et de suppression de catégorie d'un projet Le tableau cidessous montre les services principaux qui sont supportés par MantisConnect1.0a5, C'est le paquet de serveur SOAP de Mantis CAO Tien Dung – Promotion 11 IFI 24 Répartition d'un portail Web collaboratif par utilisation de Web Services Nom de service Description mc_issue_exists Le contrôle d'existence d'une issue avec l'identification indiquée. mc_issue_get Obtenir l'issue avec l'identification indiquée mc_issue_get_biggest_id Obtenir la dernière issue soumise dans le projet indiqué mc_issue_get_id_from_summary Obtenir l'identification de l'issue avec le résumé indiqué mc_issue_add Ajouter une nouvelle issue mc_issue_delete Supprimer une issue mc_issue_note_add Ajouter un commentaire dans une issue mc_issue_note_delete Supprimer un commentaire d'une issue mc_project_get_categories Obtenir les catégories appartenant au projet indiqué mc_filter_get Obtenir les filtres définis pour le projet indiqué mc_projects_get_user_accessible Obtenir la liste de projets qui sont accessibles à l'utilisateur entré Tableau 3: Liste des services principaux supportés par MantisConnect1.0a5 Mantis a la notion de projet, de sousprojet, de catégorie de projet et d'utilisateur mais il a une base de données différente avec la base de données de Picoforge. Nous devons donc synchroniser des projets, des utilisateurs et des catégories entre deux bases de données. C'est à dire, quand nous créons un projet (ou bien une catégorie) à côté de Picoforge, nous créons aussi un projet correspondant à côté de Mantis Bien que MantisConnect1.0a5, ne supporte pas des fonctions pour la création ou la suppression de projet ou d'utilisateur mais il supporte les fonctions APIs que nous emploierons pour adapter aux besoins du client pour Picoforge 4.4.2 Solution Nous avons besoin de créer un module de Picoforge qui s'appelle picoforge_bug_tracking en utilisant phpgwapisoapclient Ce module recevra les CAO Tien Dung – Promotion 11 IFI 25 Répartition d'un portail Web collaboratif par utilisation de Web Services exigences à partir de Picoforgecore (ou d'autre application) et enverra ces exigences de synchronisation de données au serveur SOAP de Mantis. Ce module a aussi une interface d'utilisateur graphique pour travailler avec Mantis à partir de l'interface de Picoforge. Dans l'architecture de Web service, picoforge_bug_tracking a le rôle de client Figure 4: Modèle d'intégration de Mantis dans Picoforge À côté de Mantis, nous devons ajouter les services qui supportent la création et la suppression de projet ou d'utilisateur. Voici la liste de services que nous ajouterons dans Web service de Mantis pour synchroniser les bases de données Nom de service mc_project_add mc_project_update mc_project_delete Description Créer un nouveau projet Mettre à jour un projet Supprimer un projet mc_project_category_add Ajouter une (ou plusieurs) catégorie dans le projet indiqué mc_project_category_remove Enlever une catégorie du projet indiqué CAO Tien Dung – Promotion 11 IFI 26 Répartition d'un portail Web collaboratif par utilisation de Web Services mc_project_add_user Ajouter l'utilisateur dans le projet indiqué mc_project_remove_user Enlever un utilisateur du projet indiqué mc_user_create Créer un nouveau utilisateur mc_user_delete Supprimer un utilisateur mc_get_project_info_by_name Prendre les infomations du projet par son nom mc_get_top_new_issue_id_by_project Prendre Ndernières bogues de projet indiqué Tableau 4: Liste des services d'ajouté dans serveur SOAP de Mantis Nous ne stockons l'utilisateur que pour la gestion de permission et la création de session du système Mantis. Pour accéder à Mantis, il faut s'authentifier à la base de données LDAP de Picoforge. En plus, Mantis ne peut pas mettre à jour la base de données LDAP de Picoforge 4.4.3 Synchronisation des projets, des utilisateurs et des categories Dans la partie 4.3 création des hooks, nous avons créés les hooks correspondants avec chaque événement qui a besoin de synchronisation de données Pour synchronisation de données entre Picoforge et Mantis, nous créons les modules correspondants avec l'événement de hook. C'est à dire, nous devons créer 7 modules correspondants avec les hooks au niveau projet que nous avons ajouté cidessus. Parce que phpGroupWare supporte deux hooks de création d'utilisateur et de suppression d'utilisateur, nous créons aussi deux modules pour ces hooks. Dans Picoforge, il y a pas la notion d'état de projet (par exemple: en developpement, en production, clos, ), nous utilisons la valeur de défaut en développement quand nous créons un nouveau projet dans Mantis 4.4.4 Configure Mantis login au LDAP Picoforge gère les utilisateurs en utilisant la base de données LDAP. Tandis que Mantis supporte la méthode de login au LDAP. Voici un exemple de configuration CAO Tien Dung – Promotion 11 IFI 27 Répartition d'un portail Web collaboratif par utilisation de Web Services pour que Mantis utilise le login de la base de données LDAP de Picoforge. Nous ajouterons les commandes cidessous dans le fichier mantisconfig_inc.php $g_login_method = LDAP; $g_ldap_server = 'ldap://agate.intevry.fr/'; $g_ldap_port = '389'; $g_ldap_root_dn = 'ou=people,dc=int evry,dc=fr'; $g_ldap_organization = ''; $g_ldap_uid_field = 'uid'; $g_ldap_bind_dn = 'cn=admin,dc=intevry,dc=fr'; $g_ldap_bind_passwd = 'xxxxxx'; $g_use_ldap_email = OFF; CAO Tien Dung – Promotion 11 IFI 28 Répartition d'un portail Web collaboratif par utilisation de Web Services Chapitre Picoforge dans l'avenir prochain En version 1.1 de Picoforge, les classes (ou les fonction APIs), qui sont écrites encore par les dévelopeurs de Picoforge concernant la création de projet, la création de catégorie du projet , sont réparties dans les applications: picolibre_current, et picolibre_choice. En réalité, ces modules fournissent les interfaces graphiques qui aident l'utilisateur à choisir le projet ou à afficher les informations de projet. Nous grouperons ces classes ou bien les fonctions APIs générales de ces modules, qui sont utilisées par plusieurs modules de Picoforge, en paquet qui s'appelle Picforgecore. Le système Mantis sera intégré dans cette version. Voici l'architecture générale de version 1.2 de Picoforge Figure 5: Architecture générale de la version 1.2 de Picoforge CAO Tien Dung – Promotion 11 IFI 29 Répartition d'un portail Web collaboratif par utilisation de Web Services 5.1.Picoforge-core Picoforgecore est le noyau de la plateforme de Picoforge. Il travaille directement avec la base de données (sur les tableaux qui sont créés par les dộveloppeurs de Picoforge).Ilreỗoitlesexigencesdemisejourdedonnộespartirdesapplicationset lesexộcute.Quandilyaunộvộnementdemisejoursdedonnộes,ilpeutactiverles hooks pour demander de synchroniser des données avec la base de données de l'application extérieure. Il supporte les fonctions pour travailler avec la session, les permissions, les templates, l'inscription d'utilisateurs, le projet, la catégorie 5.2.Avantage 5.2.1 Installation indépendante des applications Avec l'utilisation de Web services pour intégrer les applications dans Picoforge, nous n'avons pas besoin d'installer des applications de l'extérieur comme: Sympa, et Mantis sur un même serveur. Cela signifie que nous pourrons avoir la répartition de plateforme Picoforge. Figure 6: Répartition d'installation de la plateforme Picoforge CAO Tien Dung – Promotion 11 IFI 30 Répartition d'un portail Web collaboratif par utilisation de Web Services 5.2.2.Intégration facile des applications La plupart des applications intégrées dans Picoforge marchent sur système d'exploitation Linux. On ne peut pas donc intégrer une application qui marche sur Window ou Mac OS dans Picoforge si'l n'y a pas de répartition de ces applications sur les serveurs différents en utilisant les Web Services pour échanger les données ou les informations Grâce cette répartition, nous aurons plusieurs applications pour intégrer dans Picoforge. Nous pouvons choisir l'application qui est meilleure. En plus, si une application qui a besoin de synchroniser la données du projet ou de l'utilisateur, nous faisons seulement les modules joint avec chaque événement de hook. 5.2.3.Changement facile de version de l'application Le problème réel de système Picoforge est le changement de version des application d'intégration. Ce problème a été résolu facilement grâce à l'intégration par utilisation de Web Sevices s'il n'y a pas de changement de l'interface de Web Service quand il y a le changement de l'architecture intérieur de l'application. Nous pouvons donc utiliser le nouvelle version tandis que nous ne devons pas refaire le codage CAO Tien Dung – Promotion 11 IFI 31 Répartition d'un portail Web collaboratif par utilisation de Web Services Conclusions et Perspectives Dans le cadre du stage nous avons ajouté quelques notions dans la plateforme Picoforge comme: le sousprojet, la catégorie de projet. Nous avons aussi créé des hooks pour lancer facilement les applications dans Picoforge. Nous avons proposé une manière d'utiliser des Web Services pour la répartition de Picoforge sur des serveurs différents. Cela peut permettre de diminuer la charge du serveur et aussi d'intégrer un (ou plusieurs) logiciel qui marche sur un autre système d'exploitation. En plus, nous avons utilisé les Web Services pour intégrer le système Mantis dans la plateforme Picoforge. Mantis est un outil libre de suivi de bogues associé à une interface Web. Nous avons donné les services nécessaires et les données jointes de ces services dans le cas nous avons besoin de synchroniser les données entre Picoforge et les autres applications extérieures. Dans l'avenir, nous voulons intégrer un système de gestion de projet en base Web au lieu d'utiliser ToDoList de phpGroupWare. Nous allons aussi ajouter la notion « l'état de projet » pour les projets dans Picoforge, par example: développement, fermeture, pause et créer les hooks pour Sympa, Twiki. Spécialement, nous voulions régulariser les services au niveau projet et utilisateur de l'interface Web Services dans projet MantisConnect CAO Tien Dung – Promotion 11 IFI 32 Répartition d'un portail Web collaboratif par utilisation de Web Services Références [1] Site du projet Picoforge http://www.picoforge.org [2] Site du projet phpgroupware http://www.phpgroupware.org [3] Site du projet Bugzilla http://www.bugzilla.org/features [4] Site du projet Mantis http://www.mantisbt.org/ [5] Site du projet Bugzero http://www.websina.com/bugzero [6] Site du projet Jira http://www.atlassian.com/software/jira/ [7] Site de Wikipedia http://fr.wikipedia.org/ [8] Site XMLRPC.com http://www.xmlrpc.com [9] Site w3c.org http://www.w3.org/ [10] The Bugzilla Team, The Bugzilla Guide 3.1 Development Release, Published 20070225 [11] MOUSSA Ilf, NAKANO Asako, ASR 2007 end of studies project: Web Services Integration, INT [12] Dietrich Ayala, Christopher Browne, Vivek Chopra, Poornachandra Sarang, Karpi Apschankar, Tim McAllister, «Professional OpenSource Web Services, chapter 8: PHP and Web Services», July 2002 CAO Tien Dung – Promotion 11 IFI 33 Répartition d'un portail Web collaboratif par utilisation de Web Services Annexe A: phpGroupWare phpGroupWare est une suite d'applications web écrite en PHP destinée à faciliter le travail en groupe, son organisation et sa communication. Il fait partie du projet GNU, est sous copyright de la Free Software Foundation, et est publié sous Licence publique générale GNU PhpGroupWare propose déjà de nombreuses applications comme: courrier électronique, messagerie interne, carnet d'adresses, gestion de projet , mais il fournit en plus des APIs complètes pour permettre client de concevoir et d'intégrer sa propre application Depuis des APIs, beaucoup de dộveloppeursontconỗusdenouvellesapplications.AlorsLeprojetphpGroupWare s'enrichitrộguliốrementdenouvellesfonctionnalitộs.Voicil'architecturegộnộralede phpgroupware Figure7:ArchitecturegộnộraledephpGroupWare APIs de phpgroupware LepaquetphpgwapifournitauxdộveloppeurslesAPIs,enlangagePHP,pouraider ledộveloppementd'applicationWebdansphpgroupware.Ilsupportelesfonctionspour travailler avec email, calendrie, gestion de contacts, gestion de fichiers et Web Service aussi Les APIs de phpGroupware manipulent la gestion de session, des utilisateurs et groupes. Elle supporte de travailler avec la base de données en utilisant les méthodes CAO Tien Dung – Promotion 11 IFI 34 Répartition d'un portail Web collaboratif par utilisation de Web Services d’abstraction de base de données. Elle supporte aussi d’afficher les interfaces web en utilisation les classes de Template dans PHPLIB Web services dans phpgroupware phpGroupWare supporte les fonctions APIs pour faire le Web services (client et serveur) en deux types: SOAP et XMLRPC dans le paquet phpgwapi. Ces classe se composent: phpgwapi/inc/class.soap_client.inc.php phpgwapi/inc/class.soap_parser.inc.php phpgwapi/inc/class.soap_server.inc.php phpgwapi/inc/class.soapclient.inc.php phpgwapi/inc/class.soapmsg.inc.php phpgwapi/inc/class.soapval.inc.php phpgwapi/inc/class.wsdl.inc.php phpgwapi/inc/class.xmlrpc_client.inc.php phpgwapi/inc/class.xmlrpc_server.inc.php phpgwapi/inc/class.xmlrpcmsg.inc.php phpgwapi/inc/class.xmlrpcresp.inc.php phpgwapi/inc/class.xmlrpcval.inc.php Ces fonctions permettent de créer le SOAP client (ou bien XMLRPC client) et SOAP serveur (ou bien XMLRPC serveur). Voici un exemple de création du SOAP client et d'appel de la méthode login dans phpgroupware $soapclient = CreateObject('phpgwapi.soapclient',$endpoint, 'wsdl'); $param = array('username'=>$this>username, 'password'=>$this>password, ); $result = $soapclient>call('login',$param); Par défaut, les applications de serveur (xmlrpc.php ou soap.php) supporte deux méthodes: system.login et system.logout. Un client peut appeler directement à une fonction dans une classe quelconque des applications de phpgroupware avec format du nom de méthode comme: nom_d'application.nom_de_classe.nom_de_méthode, par exemple: picoforge_soap.project.getProject CAO Tien Dung – Promotion 11 IFI 35 Répartition d'un portail Web collaboratif par utilisation de Web Services Annexe B: Utilisation de SOAP pour intégrer Sympa avec Picoforge Sympa est un logiciel libre et est intégré dans Picoforge pour la gestion du fichier d’adresses (mailing list) Il supporte une interface de Web Service (SOAP) Un module, qui s'appelle picolibre_sympa, a été créé dans Picoforge pour l'interaction entre Picoforge et Sympa. Plusieurs classes de version ancienne qui situées dans la chemise le «sympa/inc» a été modifiées: class.sympa_ui.inc.php class.sympa_bo.inc.php class.sympa_soap.inc.php function.inc.php Pour adapter avec l'exigence de Picoforge, quelques services sont ajoutés dans Sympa comme: add, del et closeList La figure cidessous montre le modèle d'intégration de Sympa dans Picoforge Figure 8: Modèle d'intégration de Sympa dans Picoforge CAO Tien Dung – Promotion 11 IFI 36 ... Organiser le travail en séquences? ?de? ?tâches parallèles CAO Tien Dung – Promotion 11 IFI Répartition? ?d'un? ?portail? ?Web? ?collaboratif? ?par? ?utilisation? ?de? ?Web? ?Services Fournir aux acteurs? ?de? ?chacune des tâches une information utile et facilement ... une base de données et demande une CAO Tien Dung – Promotion 11 IFI 21 Répartition? ?d'un? ?portail? ?Web? ?collaboratif? ?par? ?utilisation? ?de? ?Web? ?Services synchronisation de données,... Karpi Apschankar, Tim McAllister, «Professional OpenSource? ?Web? ?Services, chapter 8: PHP and? ?Web? ?Services? ?, July 2002 CAO Tien Dung – Promotion 11 IFI 33 Répartition? ?d'un? ?portail? ?Web? ?collaboratif? ?par? ?utilisation? ?de? ?Web? ?Services Annexe