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. Benoît 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........................................................................................ ..................2
Résumé.............................................................................................................. ........3
Abstract............................................................................................. ........................4
Chapitre 1. Introduction.................................................................................... ........8
1.1.Contexte du stage............................................................................................ ..8
1.2.Portail de travail collaboratif................................................................ ............8
1.3.Picoforge une plateforme de travail collaboratif....................................... ........9
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 1. 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
8
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
9
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. Dans le cas, où nous remplaçons une application par une autre application qui
a la même fonction, l'intégration est alors plus simple.
Dans la partie pratique de ce stage, nous intégrerons une application de suivi de
bogues dans cette plateforme. Nous normaliserons aussi l'interface de communication
entre l'application de suivi de bogues et Picoforge.
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
Chapitre 2. État de l'art
2.1.Picoforge
La plateforme PicoForge est une plateforme de travail collaboratif se basant sur les
APIs et les applications de base de phpGroupWare. Elle héberge des projets, offre un
bureau virtuel permettant aux utilisateurs de travailler de façon sécurisée dans leurs
projets. C'est un espace de travail associé à un ensemble d’outils. Ces outils gèrent les
différents registres d’activité de la vie d’un projet, communication au sein de l’équipe
et communication externe (mailinglists Sympa), planification des tâches,
documentation du projet (Twiki) , suivi de bogues, mise à disposition des sources
(CVS). La figure cidessous montre l'architecture générale de PicoForge.
Figure 1: Architecture générale de la version 1.1 de Picoforge
CAO Tien Dung – Promotion 11 IFI
11
Répartition d'un portail Web collaboratif par utilisation de Web Services
PicoForge est une plateforme regroupant un ensemble de logiciels libres comme
environnent de travail collaboratif. Tous les logiciels utilisent des fonctions APIs de
phpgroupware pour le développement. Nous utilisons les modules picolibre_choice et
picolibre_current pour la creation de projet, la mise à jours de projet et l'affichage des
infomations de projet. Ces deux applications sont le noyau de cette plateforme.
L'utilisation des autres modules dépend du type de projet (projet de recherche, projet
de logiciel etc.) et des outils pour le projet. Nous n'avons pas besoin d'installer toutes
les autres applications de Picoforge. Les applications concrètes seront installées par
l'administrateur de plateforme. Voici la liste de fonctions de chaque application:
phpgw_admin: installer et supprimer l'application, gérer des utilisateurs et la
permission de ces utilisateurs.
Bug report: suivi des bogues.
To Do List: gestion de projet.
picolibre_sympa: une interface pour travailler avec Sympa (gestion de mailing
lists) en utilisant Web service (SOAP).
picolibre_twiki: créer, supprimer des pages de wiki en utilisant la méthode
POST du protocole HTTP.
picolibre_CVS: afficher des informations et des commandes nécessaires pour
travailler avec CVS.
picolibre_SVN: afficher des informations et des commandes nécessaires pour
travailler avec SubVersion.
FileManagement: gérer des fichiers de document joints pour le projet.
picolibre_supervision: permet de donner des infomations générales sur le
projet.
Justqu'à la version 1.1, Picoforge ne supporte pas encore de notion de sous projet et
la catégorie de projet. Dans le cas, où nous ajoutons une nouvelle application dans
Picoforge, nous devons aussi ajouter le code pour appeler cette application à partir des
autres applications parce que le lancement d'une application extérieure n'est pas encore
automatique. En plus, les fonctions communes qui sont utilisées par plusieurs modules
sont réparties dans plusieurs modules.
CAO Tien Dung – Promotion 11 IFI
12
Répartition d'un portail Web collaboratif par utilisation de Web Services
2.2.Application de suivi de bogues
Le suivi des bogues est la gestion des erreurs qui est soutenue par une base de
données. Normalement, les bogues sont traitées selon un Workflow. C'estàdire, l’état
de la bogue est changé selon les valeurs aux instants différents comme: nouveau,
ouvrir, résoudre, fermer … Un outil de suivi de bogues offre l‘affichage des bogues et
le traitement coordonnateuré de ces bogues. Dans cette partie, nous vous présentons
quelques outils de suivi de bogues qui sont utilisés par beaucoup d’entreprises.
2.2.1.Mantis
Mantis est un outil libre de suivi de bogues associé à une interface Web. Il est écrit
en PHP et fonctionne avec MySQL, MS SQL, ou PostgreSQL et un server de Web.
Mantis peut marcher sur Windows, Linux, Mac OS.
Voici la liste principale des caractéristiques de Mantis.
Logiciel libre.
Supporte la création de projet, sousprojet et des catégories.
Chaque utilisateur peut avoir un niveau d'accès différent par projet.
Nous pouvons aussi faire le rapport graphique des bugs.
La base de données peut être exportée aux format CSV, Microsoft Excel,
Microsoft Word.
Reportage des bogues via Email.
Adaptation des champs selon les besoins du client.
Supporte plusieurs méthodes de login: LDAP, HTTP_AUTH, BASIC_AUTH.
Intégration avec commande de source (SVN ou CVS). Il analyse le message de
log de SVN (ou CVS) pour ajouter les commentaires dans la bogue
correspondante.
Supporte une interface de Web service (SOAP). Ceci est un caractère très
important pour intégrer Mantis dans autres systèmes. Nous pouvons créer un
bogue, prendre les informations des bogues, des projets.
2.2.2.Bugzilla
Bugzilla est un système de suivi des bogues qui nous aide à contrôler le
développement de logiciel. Il est développé par Mozilla. Le système de suivi des
CAO Tien Dung – Promotion 11 IFI
13
Répartition d'un portail Web collaboratif par utilisation de Web Services
bogues permet à l'utilisateur ou aux groupes de réalisateurs de maintenir les bogues
exceptionnels dans leur produit efficacement. Il est écrit en langage PERL et
fonctionne avec MySQL et PostgreSQL et un server de Web.
Voici la liste principale des caractèristiques de Bugzilla.
Logiciel libre.
Méthodes multiples d'authentification.
Webservices interface (XMLRPC). Ne supporte pas de création d'un projet via
Webservices.
Possibilités avancées de recherche.
Rapports programmés (quotidien, hebdomadaire, horaire, etc.) par Email
Bugzilla soutient ajouter les champs dans la base de données de bogue pour
adapter aux besoins du client.
Bugzilla a des systèmes de rapport très avancés: rapport en table, rapport
graphique.
Création, mis à jours un bogue via email en utilisant Web interface.
Contrôler la visibilité de bogue/l'édition avec des groupes.
Intégration avec Subversion et CVS.
2.2.3.Autre applications
JIRA est une application de suivi des bogues, suivi des bogues, et application de
gestion de projets développée pour faciliter ce processus pour votre équipe. JIRA a
beaucoup le caractère pour une application professionnelle de suivi des bogue comme:
adapter le workflow aux besoins du client, supporter plusieurs méthodes (email, RSS,
XML, Excel, Web service) pour s'intégrer avec les autres système (Subversion, CVS),
mais il n'est pas un logiciel libre.
Bugzero est un système de suivi des bogues basé Web. Il est écrit en langage Java,
fonctionne avec la base de données sur le standard SQL92, et supporte login via
LDAP. Il peut aussi intégrer avec SubVersion.
2.3.Web Services
Un Web Service est un composant implémenté dans n'importe quel langage,
déployé sur n'importe quelle plateforme et enveloppé dans une couche de standards
CAO Tien Dung – Promotion 11 IFI
14
Répartition d'un portail Web collaboratif par utilisation de Web Services
dérivés de XML. Il doit pouvoir être découvert et invoqué dynamiquement par d'autres
services. L'objectif des Web Services est de faciliter l'accès aux applications entre
entreprises et ainsi de simplifier les échanges de données. Normalement, les Web
services utilisent le protocole HTTP sur le port 80 pour les échanges de données. Il est
établi sur les standards existantes comme: SOAP (Simple Object Access Protocol),
WSDL (Web Services Description Language), UDDI (Universal Description,
Discovery, and Integration).
2.3.1.Architecture générale
La figure 2 montre l'architecture générale du Web service.
Figure 2: Architecture générale du Web service
Le fournisseur de service crée un Web service et définit ces services. Il publie ces
service avec le service d'enregistrement basé sur la norme universelles de description,
de découverte, et d'intégration (UDDI).
Le client peut trouver les services qui sont supportés par fournisseur via l'interface
UDDI. UDDI va fournir des descriptions de service et URL (Uniform Resource
Locator) au client. Avec ces descriptions, le client peut envoyer des requêtes au
fournisseur et recevoir des réponse du fournisseur via le protocole HTTP.
CAO Tien Dung – Promotion 11 IFI
15
Répartition d'un portail Web collaboratif par utilisation de Web Services
2.3.2.WSDL
WSDL (Web Services Description Language) est un format pour décrire une
interface de services de Web. Il est une manière de décrire des services et comment ils
devraient être liés aux adresses de réseau spécifiques. WSDL a trois parties:
Les définitions sont généralement exprimés en XML et incluent les deux
descriptions : les types de données et les messages qui emploient ces types
de données.
Les opérations décrivent des actions pour les messages soutenus par le
Service Web. Il y a quatre types d'opérations :
✔
Oneway : Messages envoyés sans réponse requise.
✔
Demande/réponse: L'expéditeur envoie un message et reçoit une
réponse.
✔
Solliciter la réponse : Une demande de réponse. (Les détail de
définition pour cette action sont en cours).
✔
Notification: Messages envoyés à plusieurs récepteurs. (la définition
spécifique pour cette action est en suspens).
Des opérations sont groupées dans les port types. Les port types définissent
un ensemble d'opérations soutenues par le service Web.
Services d'association ou de découverte (bindings) relient les port types à un
port. Un port est défini en associant une adresse de réseau à un port type.
Une collection de ports defini un service.
2.3.3.XML-RPC
XMLRPC est un format d'appel de procédures à distance en utilisant le protocole
HTTP comme transport et XML comme codage. XMLRPC est conçu pour être aussi
simple que possible, tout en permettant aux structures de données complexes d'être
transmises, traitées et retournées. La figure 3 montre la transmission de données en
utilisant XMLRPC.
CAO Tien Dung – Promotion 11 IFI
16
Répartition d'un portail Web collaboratif par utilisation de Web Services
Figure 3: Transmission de données en utilisant XMLRPC
Voici un exemple de structures de données pour demander un login à distance.
<?xml version="1.0"?>
<methodCall>
<methodName>system.login</methodName>
<value><struct>
<member><name>server_name</name>
<value><string>my.host.name</string></value>
</member>
<member><name>username</name>
<value><string>bubba</string></value>
</member>
<member><name>password</name>
<value><string>gump</string></value>
</member> </struct></value>
</param>
</params>
</methodCall>
2.3.4.SOAP
Comme XMLRPC, SOAP est un protocole de transmission de messages. Il utilise
aussi HTTP comme procotole de transport (mais peut également se baser sur un autre
protocole, comme SMTP.) et XML comme codage. Il définit un ensemble de règles
CAO Tien Dung – Promotion 11 IFI
17
Répartition d'un portail Web collaboratif par utilisation de Web Services
pour structurer des messages qui peuvent être utilisés dans de simples transmissions
unidirectionnelles, mais il est particulièrement utile pour exécuter des dialogues du
type requêteréponse RPC (Remote Procedure Call).
Le protocole SOAP est composé de deux parties:
Une enveloppe, contenant des informations sur le message luimême afin de
permettre son acheminement et son traitement.
Un modèle de données, définissant le format du message, c'estàdire les
informations à transmettre.
Voici un exemple de message SOAP.
<?xml version="1.0"?>
xmlns:SOAP-ENV=" />xmlns:xsi=" />xmlns:xsd=" xmlns:SOAPENC=" />xmlns:si=" />xmlns:ns6="" SOAPENV:encodingStyle=" />">
<SOAP-ENV:Body>
<ns6:system_login>
<server_name xsi:type=":string">my.host.name</server_name>
<username xsi:type=":string">bubba</username>
gump</password>
</ns6:system_login>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
CAO Tien Dung – Promotion 11 IFI
18
Répartition d'un portail Web collaboratif par utilisation de Web Services
Chapitre 3. Propositions
Selon la tendance de développement de la plateforme de Picoforge, nous
intégrerons beaucoup d'applications libres qui sont développées indépendamment avec
Picoforge. C'est très difficile si nous utilisons des RPC, CORBA ou un codage
spécialisé pour intégrer ces applications dans Picoforge parce que ces applications
indépendantes peuvent changer complètement leur architecture, leur fonctions. Dans
ce cas, nous ne tirerons pas le meilleur parti de leur nouveaux caractères ou nous
devons recoder. Dans le contexte de ce stage, nous avons quelques propositions.
Utiliser les Web services pour la répartition de la plateforme Picoforge sur
plusieurs de serveurs différents grâce aux raisons suivantes:
Un Web Service est un composant implémenté dans n'importe quel langage,
déployé sur n'importe quelle plateforme.
La plupart de logiciels actuels supporte une interface de Web service.
Le changement de l'architecture du logiciel n'influence pas l'intégration si
l'interface du Web service ne change pas.
Grouper les classes qui sont utilisées par plusieurs modules dans Picoforgecore
comme dans la branche 2.0 et le projet Perseus. Il a une interface unique vers
les tables de la base de données. Il est aussi un moteur qui reçoit des requêtes
de l'utilisateur et transmet ces requêtes aux applications indépendantes pour
traitement. Dans d'autre cas, Picoforgecore peut envoyer des requêtes à
plusieurs applications pour demander de traiter ou de synchroniser la données
quand il a lieu des événements qui influenceront ces applications différentes,
par exemple, ajouter ou supprimer un projet. Dans ce module, nous utilisons
des hooks pour faciliter l'intégration de nouveau modules.
Avec chaque logiciel, nous construisons une application (au sens
phpGroupWare) intégrée à Picoforge pour recevoir des requêtes à partir de
l'utilisateur et envoyer des requêtes aux applications de traitement par utilisation
de Web service.
CAO Tien Dung – Promotion 11 IFI
19
Répartition d'un portail Web collaboratif par utilisation de Web Services
Dans la partie pratique de ce stage, nous proposons d'utiliser le logiciel qui
s'appelle Mantis, c'est une application de suivi des bogues pour intégrer dans
Picoforge pour les raisons suivantes. Mantis
logiciel libre ;
supporte le Web service SOAP ;
intégration avec SVN, CVS ;
supporte les fonctions APIs pour adapter aux besoins du client ;
peut être installé facilement et sont interface Web Service peut être
configurée simplement ;
supporte les projets, les sousprojets et les catégories de projet;
intègre les authentifications par LDAP;
est écrit en PHP, qui est un langage très familier avec les développeurs de
Picoforge.
CAO Tien Dung – Promotion 11 IFI
20
Répartition d'un portail Web collaboratif par utilisation de Web Services
Chapitre 4. Choix de réalisation
4.1. Ajouter la notion de sous-projet et de catégorie
dans Picoforge
En réalité, il y a beaucoup de projets qui sont divisés en plusieurs sousprojets pour
la facilité de gestion et de développement en groupes. Dans chaque projet, les
catégories sont créées par l'utilisateur pour des buts différents. La version courante de
Picoforge ne permet pas encore de faire ce découpage d'un projet en sous projets. Nous
avons ajouté deux notions dans Picofore. Nous avons écrit une classe qui s'appelle
class.project_categories.inc.php en utilisant phpgwapi.categories pour créer les
catégories pour un projet et mettre en place la relation entre projet et sousprojets.
Fonction
Description
project_categories($project_name, constructeur.
$application_name)
add($catname)
ajouter une catégories ou sousprojet dans le
projet courant.
delete($cat_id)
supprimer une catégories ou sousprojet du
projet courant avec l'identification indiquée.
get_categories()
prendre la liste de catégories ou sousprojet du
projet courant.
get_parent()
prendre le parent du projet courant.
Tableau 1: Liste des fonctions de class.project_categories.inc.php
4.2. Normalisation des services pour intégrer les
logiciels dans Picoforge
Picoforge est un ensemble de logiciels libre pour les buts différents. Chaque logiciel
fournit des services différents. Dans le cas, les logiciels ont un même service, les
données jointes à ces services peuventêtre différentes. Nous devons donc donner des
services nécessaires et les données jointes de ces services si quelqu'un veut intégrer
une application quelconque, qui a 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, 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