Tải bản đầy đủ (.pdf) (36 trang)

Répartition dun portail web collaboratif par utilisation de web services

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.38 MB, 36 trang )

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 (IFI­P11)

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 Web­basé. 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 Web­based. 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 sub­project 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.XML­RPC............................................................................... ................16
2.3.4.SOAP.............................................................................................. .........17
Chapitre 3. Propositions......................................................................................... ..19
Chapitre 4. Choix de réalisation.............................................. ................................21
4.1. Ajouter la notion de sous­projet 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.Picoforge­core...................................................................... ..........................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 XML­RPC.......................... ...........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),   Sophia­Antipolis   (Eurécom)   et   Lille   (Télécom   Lille   1)   en 
France. Le groupe compte actuellement plus de 470 enseignants­chercheurs et plus de 
500 thésards dans ses laboratoires.
Une   flates­forme   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 plate­forme 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 plate­forme Web destinée au développement collaboratif. La plate­forme 
PicoForge  est   développée   par   l'équipe   du   projet   PFTCR   (Plate­Formes   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   ci­dessus,   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 flate­forme 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   (mailing­lists   Sympa),   planification   des   tâches, 
documentation  du projet (Twiki) , suivi de bogues, mise à disposition des sources 
(CVS). La figure ci­dessous 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 plate­forme 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, sous­projet 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 (XML­RPC). 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 plate­forme 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 :


One­way : 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
XML­RPC est un format  d'appel de procédures à distance en utilisant le protocole 
HTTP comme transport et XML comme codage. XML­RPC 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 XML­RPC.

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 XML­RPC
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 XML­RPC, 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ête­réponse RPC (Remote Procedure Call).
Le protocole SOAP est composé de deux parties:


Une enveloppe, contenant des informations sur le message lui­mê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 re­coder. 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 plate­forme.



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 Picoforge­core 
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,   Picoforge­core   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 sous­projets 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 sous­projets 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 sous­projets.

Fonction

Description

project_categories($project_name,  constructeur.
$application_name)
add($catname)

ajouter   une   catégories   ou   sous­projet   dans   le 
projet courant.

delete($cat_id)

supprimer   une   catégories   ou   sous­projet   du 
projet courant avec l'identification indiquée.

get_categories()

prendre la liste de catégories ou sous­projet 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   ci­dessous   montre   les   services   principaux   qui   sont   supportés   par 
MantisConnect­1.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  MantisConnect­1.0a5
Mantis a la notion de projet, de sous­projet, 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 MantisConnect­1.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   phpgwapi­soapclient.   Ce   module   recevra   les 
CAO Tien Dung – Promotion 11­ IFI

25


×