Rapport PFE : (1) Urbanisation d’un système d’information universitaire SOA & BPM + (2)...
-
Upload
walid-karray -
Category
Documents
-
view
11.917 -
download
0
description
Transcript of Rapport PFE : (1) Urbanisation d’un système d’information universitaire SOA & BPM + (2)...
RAPPORT DE PROJET DE FIN D’ETUDES
Urbanisation d’un Système d’information universitaire
SOA & BPM
Elaboré par : KARRAY WALID Encadré par : NAFAA FREAA
Encadré par : FOURAT ZOUARI | AHMED MASMOUDI
Année Universitaire 2009/2010 - Semestre 1
Référence
Dép. TI
AN/SE 2010/S01
CODE IRP05
Institut Supérieur des Études
Technologiques de Djerba
Département Technologie de l’Informatique
République Tunisienne
Ministère de l’Enseignement Supérieur,
de la Recherche Scientifique et Technologie
Direction Générale des Études Technologiques
Effectué à :
ISET Djerba | TriTux PAGE 1
ISET Djerba | TriTux PAGE 2
Dédicaces
A toute ma famille,
à mes enseignants,
à mes amis,
et à mes camarades
je dédie ce travail.
ISET Djerba | TriTux PAGE 3
Remerciement
Je tiens à remercier chaleureusement Mr. Mounir Khalifa CEO de
Tritux, Mr. Fourat Zouari et Mr. Ahmed Masmoudi, chefs de projets
ainsi que toute l’équipe de développement à Tritux.
Mes forts remerciements à mon encadreur Mr. Nafaa Freaa ainsi
que mes enseignants.
Je remercie encore la communauté Ubuntu GNU/Linux, Canonical
Ltd., la communauté PHP et Open ESB.
…et un aussi grand MERCI à la communauté Open Source !
Walid Karray
ISET Djerba | TriTux PAGE 4
Table des matières Dédicaces ................................................................................................................................... 2
Remerciement ........................................................................................................................ 3
Table des matières..................................................................................................................... 4
Liste des illustrations ................................................................................................................. 6
1. Chapitre 1 : Introduction ...................................................................................................... 8
1.1. Introduction générale.................................................................................................. 8
1.2. Entreprise d’accueil ..................................................................................................... 8
1.3. Contexte et objectif du projet ................................................................................... 11
2. Chapitre 2 : Etat de l’art...................................................................................................... 14
2.1. Introduction au concept SOA .................................................................................... 14
2.2. Les services web ........................................................................................................ 17
2.2.1. Introduction........................................................................................................ 17
2.2.2. Les différents types de services web ................................................................. 17
2.2.3. Résumé ............................................................................................................... 24
2.3. Orchestration de Services web.................................................................................. 25
2.3.1. Introduction........................................................................................................ 25
2.3.2. Exemple .............................................................................................................. 25
2.3.3. Le langage BPEL .................................................................................................. 28
2.3.4. Résumé ............................................................................................................... 32
2.4. Résumé sur le concept SOA....................................................................................... 33
3. Chapitre 3 : Etude conceptuelle ......................................................................................... 34
3.1. Introduction ............................................................................................................... 34
3.2. Phase 1 : Conception des Services Web .................................................................... 35
3.2.1. Introduction........................................................................................................ 35
3.2.2. Urbanisation du SI de l’établissement ............................................................... 37
3.2.3. Urbanisation du SI du RNU................................................................................. 64
3.2.4. Conclusion .......................................................................................................... 71
3.3. Phase 2 : Processus métier et orchestration de services .......................................... 74
3.3.1. Introduction........................................................................................................ 74
3.3.2. Conception du 1er processus métier : ProcessRUById ....................................... 74
3.3.3. Conception du processus : BatchProcessRU ...................................................... 77
3.3.4. Conclusion .......................................................................................................... 78
Chapitre 4 : Réalisation ........................................................................................................... 79
3.4. Installation & Configuration ...................................................................................... 79
3.4.1. Serveur FTP : ftp-etu.intranet.demo .................................................................. 79
ISET Djerba | TriTux PAGE 5
3.4.2. Serveur CUPS : cups.intranet.demo ................................................................... 79
3.4.3. Serveur de BD PostgreSQL : postgres-83.intranet.demo................................... 79
3.4.4. Serveur web d’inscription en ligne : inscription.edu.demo ............................... 80
3.4.5. Point d’accès sans fil : ap-21. intranet.demo ..................................................... 81
3.4.6. Serveur mail : (ws.rnu.edu.demo)...................................................................... 81
3.4.7. Modem GSM connecté au serveur Lenny : debian5-02.intranet.demo ............ 82
3.4.8. PodBridge 1.2 ..................................................................................................... 82
3.4.9. Installation de GlassFish ESB 2.1 ........................................................................ 83
3.4.10. Installation des plugins SOA & BPEL pour NetBeans...................................... 83
3.5. Réalisation des connecteurs ...................................................................................... 83
3.5.1. Exemple de réalisation d’un connecteur : pbFTPAccountConnector................. 83
3.5.2. Test du service web doCreateFTPUserAccount par l’utilitaire SoapUI 3.0.1 ..... 85
3.6. Réalisation des processus métiers - phase 2............................................................. 89
3.6.1. Test de ProcessRUById (Invocation du service composite) ............................... 91
3.6.2. Test de BatchProcessRU (Invocation du service composite) ............................. 94
3.7. Développement des applications .............................................................................. 96
3.7.1. Appel web-service SOAP en PHP5...................................................................... 97
3.7.2. Exemple d’appel web-service SOAP en Perl (Suppression d’un compte FTP) ... 98
3.7.3. Appel web-service SOAP en JAVA SE – Swing (Invocation du service Ping (test
PodBridge)) ....................................................................................................................... 98
3.7.4. Appel web-service SOAP en Shell (Invocation du service composite
BatchProcessRU) ............................................................................................................... 99
3.8. Environnement de travail .......................................................................................... 99
3.8.1. Matériel utilisé ................................................................................................... 99
3.8.2. Logiciels utilisés : .............................................................................................. 100
4. Perspective ........................................................................................................................ 105
5. Liste des abréviations ....................................................................................................... 106
6. Bibliographie ..................................................................................................................... 108
ISET Djerba | TriTux PAGE 6
Liste des illustrations Figure 1 - Diagramme hiérarchique de l’entreprise ........................................................... 10
Figure 2 – Requête / Réponse (SOA) ................................................................................. 14
Figure 3 – L’architecture SOA............................................................................................. 15
Figure 4 - Le modèle en couches de l’architecture SOA .................................................... 16
Figure 5 – Connexion à PostgreSQL en ligne de commande ............................................. 20
Figure 6 – Premier extrait du document WSDL ................................................................. 22
Figure 7 – Deuxième extrait du document WSDL .............................................................. 22
Figure 8 – Message XML SOAP – Requête ......................................................................... 23
Figure 9 – Message XML SOAP - Réponse.......................................................................... 23
Figure 10 – Exemple d’un processus faisant appel à 4 services........................................ 27
Figure 11 – Eléments de BPEL (Architecture).................................................................... 29
Figure 12 –Modélisation d’un connecteur PodBridge1.2 (Cas généra l) ............................ 36
Figure 13 - Table « etudiant » ............................................................................................ 37
Figure 14 - Classe BDetu (Connecteur PodBridge de l’établissement) .............................. 39
Figure 15 – Modélisation de la logique métier (Connecteur BDetu) ................................. 42
Figure 16 - Classe FTPAccount (Connecteur PodBridge de l’établissement) ..................... 44
Figure 17 - Modélisation de la logique métier (Connecteur FTPAccount)......................... 49
Figure 18 – Classe APACLManager (Connecteur PodBridge de l’établissement) .............. 50
Figure 19 - Modélisation de la logique métier (Connecteur APACLManager)................... 53
Figure 20 – Classe IPPService (Connecteur PodBridge de l’établissement) ...................... 54
Figure 21 - Modélisation de la logique métier (Connecteur IPPService) ........................... 56
Figure 22 – Classe wwwsubscr (Connecteur PodBridge de l’établissement) .................... 57
Figure 23 - Modélisation de la logique métier (Connecteur wwwsubscr) ......................... 59
Figure 24 – Classe SMSService (Connecteur PodBridge de l’établissement)..................... 60
Figure 25 - Modélisation de la logique métier (Connecteur SMSService) ......................... 63
Figure 26 – Classe MailAccount (Connecteur PodBridge 1.2)............................................ 65
Figure 27 - Modélisation de la logique métier (Connecteur MailAccount) ....................... 70
Figure 28 – Connecteurs PodBridge (de l’établissement).................................................. 72
Figure 29 - Connecteur PodBridge (du RNU) ..................................................................... 73
Figure 30 - diagramme d'activité « ProcessRUById » ........................................................ 76
Figure 31 - diagramme d'activité « BatchProcessRU » ...................................................... 78
Figure 32 - Arborescence du projet PodBridge - Netbeans IDE ......................................... 84
Figure 33 –1ère phase de l’urbanisation des deux réseaux (Services Web) ....................... 88
Figure 34 –Déploiement de ProcessRUById et BatchProcessRU ....................................... 90
Figure 35 - SI après urbanisation........................................................................................ 96
Figure 36 - Architecture de PodBridge 1.2 ....................................................................... 104
ISET Djerba | TriTux PAGE 7
‘ Ce document représente le rapport de projet de fin d’étude effectué
par l’étudiant au 5ème niveau informatique réseaux Walid Karray, de l’Institut Supérieur des Etudes Technologiques de Djerba, au sein de
l’entreprise Tritux, pendant la période Septembre 2009 - Janvier 2010.’ Adresse électronique: [email protected]
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 1 : Introduction
ISET Djerba | TriTux PAGE 8
1. Chapitre 1 : Introduction
1.1. Introduction générale
Des systèmes informatiques qui sont réunis pour exécuter une tâche, peuvent tous êtres
considérés comme étant un seul système, toute cette force peut être due à un échange
d’une faible quantité d’informations entre les différents systèmes. On peut déduire ainsi
que ces systèmes sont dépendantes les unes des autres, et si à un moment donné deux
systèmes parmi l’ensemble n’arrivent pas à s’échanger d’informations, ça engendrera alors
le dysfonctionnement de la totalité du système.
Malheureusement, à chaque fois qu’on se lance à la conception d’une application
composite on découvre toujours des problèmes d’intégration avec des systèmes qui à la
base ne sont pas pensées pour fonctionner ensemble utilisant des technologies différentes
et des protocoles propriétaires.
Pour remédier à ce genre de problèmes on utilise souvent des logiciels intermédiaires
appelées (intergiciels), le plus souvent appelé middlewares (en anglais) qui servent
d’intermédiaire de communication entre plusieurs applications, généralement complexes
ou distribuées sur un réseau informatique.
1.2. Entreprise d’accueil
Tritux, SARL1 est une SSII2 Tunisienne née par le regroupement, au sein d'un réseau
professionnel, des compétences provenant de divers horizons et partageant la même
conviction : que les nouvelles technologies de l'information et de la communication (NTIC)
basées sur les logiciels libres, constitueront le choix fondamental face aux exigences de la
société future, société de l'information.
Dynamique, rapide et accompagnant les changements et bouleversements induits par
l'émergence de nouvelles techniques et des nouveaux besoins des usagers, Tritux a repensé
1 Société Anonyme à Responsabilité Limitée
2 Société de service et d’ingénierie de l’informatique
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 1 : Introduction
ISET Djerba | TriTux PAGE 9
l'approche des activités liées aux NTIC par l'adaptation du choix "Open Source " garantissant
la sécurité, fiabilité, flexibilité, et surtout, une évolution quotidienne vers le top de la
technologie.
Les domaines d’activités de Tritux s’étendent sur plusieurs disciplines à savoir :
- Bases de données libres,
- Logiciels libres,
- Développement de solutions avec des outils/ressources libres,
- Annuaires LDAP3,
- Messageries mail,
- Messageries courtes (SMS4) et Multimédia (MMS5),
- Systèmes GNU6 Linux,
- Supervision et monitoring,
- Réseaux complexes,
- Sécurité et optimisation,
- …
Références de Tritux:
- Tunisie Telecom,
- Assurances BIAT,
- Mobile Services,
- Nouvelair,
- Alva,
3 Lightweight Directory Access Protocol
4 Short Message Service
5 Multimedia Messaging Service
6 Gnu’s Not Unix
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 1 : Introduction
ISET Djerba | TriTux PAGE 10
- Sameteam,
- PixelJ,
- Attijari Bank,
- Groupe Délice Tunisie,
- …
Diagramme hiérarchique de l’entreprise:
Figure 1 - Diagramme hiérarchique de l’entreprise
CEO : Acronyme anglais pour « Chief Executive Officer », en français le chef de direction
et tient le rang le plus élevé dans la hiérarchie de l’entreprise son rôle est de superviser
tout les projets en cours de développement et leurs état d’avancement, maintenir le
contact avec les clients, en contact avec les chefs de projet, le recrutement etc.….
Les chefs de projets : Les chefs de projets sont chargées de guider les équipes de
développements et de mener les projets et de contrôler leur bon déroulement.
Secrétaire : Elle s'occupe pour les comptes, des communications téléphoniques, de la
rédaction des comptes rendus de réunions, etc.….
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 1 : Introduction
ISET Djerba | TriTux PAGE 11
Service Technique : Sa fonction et de bien veiller sur le bon fonctionnement du réseau
local de l’entreprise ainsi ses différents équipements, installer et mettre à jour les
logiciels, achat de nouveau matériel et la réparation des équipements informatiques en
cas de panne.
Equipe de développement : Représente la force motrice de l’entreprise, l’équipe est
constituée d’une dizaine de développeurs et d’ingénieurs qualifiés pour exécuter des
tâches sous la responsabilité des chefs de projets.
Chargé de la documentation : C’est une personne chargé de la rédaction et la mise à jour
des documents techniques et des manuels d’utilisation pour les produits réalisés.
1.3. Contexte et objectif du projet
Notre projet de fin d’étude consiste à urbaniser un SI (Système d’Information)
universitaire. Il est noté que les différents systèmes informatiques visés du SI universitaire,
les différentes procédures d’urbanisation ainsi que les applications réalisées dans ce projet
ont été virtualisés dans un environnement local.
La quasi-totalité des établissements d’enseignement supérieurs en Tunisie disposent de
systèmes informatiques hétérogènes (matériel et applicatif) déjà performants pour répondre
à des besoins très élémentaires, tel que:
- L’SGBD permet la gestion des informations sur chaque étudiant,
- le point d’accès sans fil permet l’accès au réseau,
- le serveur FTP 7permet l’hébergement de comptes pour les étudiants,
- le serveur d’impression permet d’envoyer un ordre d’impression à une
imprimante distante partagée,
- le site web d’inscription en ligne permet de consulter les reçus de payements de
chaque étudiant,
- le serveur Mail permet d’envoyer un message à un groupe d’étudiants,
7 File Transfer Protocol
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 1 : Introduction
ISET Djerba | TriTux PAGE 12
- et encore plus…
Existe-il un système informatique aussi performent qui peut répondre à plusieurs besoins
à la foi ? Comme par exemple, un système pouvant à partir des informations stockés sur
chaque étudiant de gérer automatiquement leurs comptes FTP, leurs comptes Mail, leurs
accès au réseau sans fil, les notifiés par SMS, leurs envoyer les calendriers et des documents
numériques, etc...
Par les moyens présents, si un établissement pense à offrir ces différents services à ses
quelques milliers d’étudiant, il faudra compter des semaines de travails pour arriver à un
résultat presque satisfaisant !
Certainement que l’informatisation (automatisation) des différentes procédures cités
précédemment est sans aucun doute quelque chose d’indispensable ; il faudra donc un
système qui à la foi capable de gérer les différentes ressources et de coordonner l’échange
d’informations d’une façon autonome entre les différents systèmes informatiques qu’on
dispose. Mais avant de penser à une solution on se pose ces deux questions :
- Comment des systèmes de technologies et de protocoles de communications
différents puissent s’interagir ?
- Par quel moyen sera assuré l’échange de flux d’information entre les différents
systèmes ?
C’est pour cette raison que le concept SOA8 et le BPM9 sont les choix les plus appropriés
pour résoudre notre problématique.
Pour pouvoir répondre à cette problématique l’étude conceptuelle de ce projet va être
divisé sur deux phases :
1) La première phase consiste à l’exposition d’un protocole de communication ouvert
(unifié) pour chacun des systèmes à travers un middleware. (migration aux services
web)
8 Service Oriented Architecure
9 Business Process Management
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 1 : Introduction
ISET Djerba | TriTux PAGE 13
2) La deuxième phase consiste à la conception des processus métier à travers un
workflow / orchestration10 de services web
10
Processus de coordination d'un échange d'information à travers l 'interaction de services web. « Source
Wikipedia – http://fr.wikipedia.org/wiki/Orchestration_(informatique) »
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 2 : Etat de l’art
ISET Djerba | TriTux PAGE 14
2. Chapitre 2 : Etat de l’art
2.1. Introduction au concept SOA
L’architecture orientée services AOS, ou plus souvent appelé SOA acronyme anglais pour
« Services Oriented Architecture » est un moyen d’interaction applicatif qui met en œuvres
une collection de services (des composant logiciels) qui peuvent être exécutés sur n’importe
quelle plateforme.
Par définition un service est une tâche exécuté par un individu (un fournisseur) à
l’attention d’un autre individu (un consommateur), le principe est le même dans le jargon
informatique.
Fournisseur / Prestataire
de service
Demandeur / Consommateur
de service
Demande
RéponseMessage
Message
Figure 2 – Requête / Réponse (SOA)
Par analogie avec le concept objet, un service ressemble beaucoup à une méthode d’une
classe, il permet de recevoir des données et de renvoyer le résultat. Disposant plus
d’avantages qu’une méthode un service est distingué par le fait qu’il peut être invoqué à
distance et par n’importe quelle plateforme.
Au terme d’interopérabilité, l’architecture SOA repose sur des normes décrites à travers
WS-I11.
Un service peut être une activité (suite d’appels à d’autres services), appelé autrement
service de large granularité ou service composite.
11
Un consortium industriel initié pour la promotion de l’interopérabilité entre plateformes par la rédaction
des spécifications des Services Web WS-*
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 2 : Etat de l’art
ISET Djerba | TriTux PAGE 15
La figure de ci-dessous décrit l’architecture SOA d’une façon globale:
Service X
Service Z
Service Y
Service W
Service U
Architecture SOA
Service composite
Demandeur 1
Demandeur 2
Orchestration
Service V
Figure 3 – L’architecture SOA
Un service est l’unité atomique de l’architecture SOA
L’architecture SOA est représentée par un modèle en couches, voir la figure de ci-
dessous.
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 2 : Etat de l’art
ISET Djerba | TriTux PAGE 16
Application
WebTerminal
Appareil
Mobile
OrchestrationWORKFLOW
BPEL, BPM
PrésentationConsommateur
Application
ServicesServices
Services web
Composants,
MéthodesMéthodes de classes
bibliothèques,drivers...
Systèmes &
RessourcesServeurs,
Bases de données..
DBDBI0II0I0I0I0
II0III00I0I
0I0III0I0I0
I0I0I0
I0II0I0I0I0
II0III00I0I
0I0III0I0I0
I0I0I0
Func () {
----
---
}
Func () {
----
---
}
Func () {
----
---
}
Func () {
----
---
}
5
4
3
2
1
Figure 4 - Le modèle en couches de l’architecture SOA
Couche 1 (Les systèmes et les ressources): Englobe des systèmes informatiques (logiciels
et matériels) hétérogènes et différentes types de ressources telle que les bases de
données et des fichiers.
Couche 2 (Composants et méthodes) : Représente des méthodes (fonctions) qui
tiennent la logique métier, ainsi que les composants d’applications qui sont utilisés pour
dialoguer avec différents systèmes et ressources.
Couche 3 (Services) : C’est à ce niveau que la logique métier est devenu caché à
l’utilisateur ainsi que le dialogue avec les différentes systèmes et ressources est devenu
au moyen d’un protocole ouvert (standard).
Couche 4 (Orchestration): Vient juste au dessus de la couche services, l’orchestration de
services est définit par l’interaction et l’échange des flux d’information métier entre
plusieurs services d’une façon autonome.
Couche 5 (Présentation): Elle représente l’interface par laquelle les utilisateurs finaux
(consommateurs de services) peuvent consumer les différents services et interagir
indirectement avec les différents systèmes existant.
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 2 : Etat de l’art
ISET Djerba | TriTux PAGE 17
2.2. Les services web
2.2.1. Introduction
Les services web représentent un ensemble de fonctionnalités distribués sur intranet ou
internet qui peuvent être exécutés à distance à travers les protocoles d’internet tel que
HTTP12/HTTPS 13et SMTP14.
2.2.2. Les différents types de services web
Il existe différents types de services web :
2.2.2.1. XML-RPC
XML-RPC est un protocole RPC (Remote procedure call), une spécification simple et un
ensemble de codes qui permettent à des processus s'exécutant dans des environnements
différents de faire des appels de méthodes à travers un réseau.
Les processus d'invocation à distance utilisent le protocole HTTP pour le transport des
données et la norme XML 15 pour le codage des données.
XML-RPC est conçu pour permettre à des structures de données complexes d'être
transmises, exécutées et renvoyées très facilement.
Voici un exemple d’une requête/réponse XML-RPC :
Requête XML-RPC :
POST /xmlrpc HTTP 1.0
User-Agent: myXMLRPCClient/1.0
Host: 192.168.1.2
Content-Type: text/xml
Content-Length: 169
<?xml version="1.0"?>
<methodCall>
12
HyperText Transfer Protocol 13
HTTP Secure 14
Simple Mail Transfer Protocol 15
Extensible Markup Language
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 2 : Etat de l’art
ISET Djerba | TriTux PAGE 18
<methodName>calculeSurfaceCercle</methodName>
<params>
<param>
<value><double>2.41</double></value>
</param>
</params>
</methodCall>
Réponse XML-RPC :
HTTP/1.1 200 OK
Date: Sat, 02 Jan 2010 23:20:04 GMT
Server: Apache.1.3.12 (Unix)
Connection: close
Content-Type: text/xml
Content-Length: 124
<?xml version="1.0"?>
<methodResponse>
<params>
<param>
<value><double>18.24668429131</double></value>
</param>
</params>
</methodResponse>
Réponse ‘fault’ (Erreur) XML-RPC :
<?xml version="1.0"?>
<methodResponse>
<fault>
<value><string>No such method!</string></value>
</fault>
</methodResponse>
2.2.2.2. Les services web SOAP
Les services web de type SOAP 16 se basent aussi sur l’échange de messages XML et se
reposent sur le standard SOAP pour l’échange de message et WSDL 17 pour décrire les
services web.
Structure d’un document WSDL :
16
Simple Object Access Protocol 17
Web Services Description Language
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 2 : Etat de l’art
ISET Djerba | TriTux PAGE 19
Un document WSDL (basé sur XML) permet la description d’un service, il décrit les
paramètres d’entrés du service et le format et le type des données retournées.
Voici quelques éléments d’un document WSDL :
- portType : définissant le service web, en particulier les opérations qu’il réalise et
le type de messages échangés.
- message : comprend une ou plusieurs parties représentant les paramètres
d’entrés.
- types : définissant les types de données utilisés par le service web.
- binding : précisant le protocole utilisé et le format de message.
2.2.2.3. Un exemple de service web (type SOAP) :
L’exemple qui suit démontre comment il est possible de récupérer des informations
depuis une base de données PostgreSQL à travers un service web SOAP via le protocole
HTTP.
Avant de passer au service web, la figure de ci-dessous explique les différentes
procédures à effectuer au moyen d’un client PostgreSQL pour récupérer les informations sur
un étudiant donné par son identifiant (id).
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 2 : Etat de l’art
ISET Djerba | TriTux PAGE 20
Figure 5 – Connexion à PostgreSQL en ligne de commande
Les inconvénients :
- Il faut avoir une idée sur les structures des différentes tables pour pouvoir
exécuter des requêtes,
- Il faut savoir utiliser les différentes fonctionnalités fournis par le client de
PostgreSQL,
- Cette opération ne peut être exécutée que depuis le réseau de l’établissement
tant que le port 5432 n’est pas autorisé depuis l’extérieur,
- Lors de développement d’une application, le langage de programmation à utiliser
doit supporter une extension qui lui permet de se connecter au serveur
PostgreSQL.
- Le développeur de l’application doit obligatoirement maitriser le langage SQL
ainsi les syntaxes spécifiques pour PostgreSQL.
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 2 : Etat de l’art
ISET Djerba | TriTux PAGE 21
- Communiquer des informations sur l’SGBD tel que son adresse IP, le port qu’il
utilise, nom des tables… peuvent aider les pirates pour accéder illégalement aux
données confidentielles.
Maintenant, si on reprend le même exemple, mais cette fois en se basant sur les services
web SOAP. (Après une procédure d’urbanisation)
On suppose que les informations suivantes sont déjà communiquées :
- La clé d’authentification (Key): 691292877050480f54b5 (Doit être passé en
paramètres à chaque invocation d’un service, permettant de sécurisé l’accès au
service ainsi d’identification de son consommateur)
- L’emplacement/adresse (URL) du document WSDL qui sert à décrire le service
getStudentById :
http://podbridge12.intranet/projects/unstable/podbridge/web/index.php/wsdl/auto
/691292877050480f54b5/getStudentById
Les deux figures suivantes représentent des extraits du même document WSDL décrivant
le service getStudentById :
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 2 : Etat de l’art
ISET Djerba | TriTux PAGE 22
Figure 6 – Premier extrait du document WSDL
Figure 7 – Deuxième extrait du document WSDL
Grâce au document WSDL on a pu :
- Identifier les paramètres nécessaires ainsi que leurs types pour pouvoir générer le
message XML SOAP (requête) approprié pour notre service.
- Savoir d’avance la structure du message de retour XML SOAP (réponse).
- Identifier l’emplacement (URL) du service web.
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 2 : Etat de l’art
ISET Djerba | TriTux PAGE 23
Invoquer un service web SOAP est le faite d’envoyer à travers HTTP-POST un message au
format XML (Requête) à l’adresse URL (SOAP Address) indiquée dans le document WSDL.
Requête (Message XML SOAP envoyé par le client):
Figure 8 – Message XML SOAP – Requête
Réponse (Message XML SOAP Renvoyé par le serveur):
Figure 9 – Message XML SOAP - Réponse
Les avantages :
- Consulter la BD sans la moindre requête SQL,
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 2 : Etat de l’art
ISET Djerba | TriTux PAGE 24
- la logique métier est caché à l’utilisateur (procédures d’authentification au SGBD,
les différentes requêtes…)
- aucune information n’est communiquée sur le serveur de base de données (Type,
IP, Port, nom des tables, utilisateur...),
- l’invocation du service est sécurisée par une clé (key) d’authentification,
- grâce au WSDL, on connait les différents paramètres, les variables, les types… du
service.
- tout les services web peuvent êtres consumer/tester par le même client.
- Le port 80 est toujours ouvert parce qu'il est employé par le protocole HTTP
utilisé par les navigateurs Web, donc l’invocation d’un service web peut être
possible de n’importe quel emplacement et par n’importe quel plateforme.
- La quasi-totalité des langages de programmation supportent des bibliothèques ou
des extensions lui permettant d’invoquer les services web SOAP ou d’envoyer des
requêtes HTTP-Post.
2.2.3. Résumé
On peut dire que les services web :
- communiquent en utilisant des protocoles ouverts,
- sont souvent réutilisables,
- sont des composants d'application,
- sont autonomes et auto-descriptif,
- peuvent être utilisés par d'autres applications,
- se basent sur XML.
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 2 : Etat de l’art
ISET Djerba | TriTux PAGE 25
2.3. Orchestration de Services web
2.3.1. Introduction
Dans le concept SOA, l’orchestration s’explique par un enchainement d’invocation de
services web de fines granularités obéissant à un chef d’orchestre : WS-BPEL18 est un langage
d’orchestration de services web.
Dans un service composite les services web sont reliés à travers des standards (Messages
XML). Ces standards assurent le découplage, c’est-à-dire la réduction des dépendances ;
(Couplage faible).
2.3.2. Exemple
Dans cet exemple, on se propose de réaliser un processus pour une gamme d’appareils
mobile, qui renseigne son utilisateur sur les salons de thé les plus proches en les indiquant
sur la carte de Google Maps.
Notre process aura besoin de faire appel à 4 services partenaires (correspondent aux
rectangles colorés en verts dans le diagramme qui suit).
Voici une description sur le rôle de chacun de ces services :
1) Service embarqué: Un service embarqué dans l’appareil mobile, à son invocation, il
renvoi toutes les informations confidentielles à propos son utilisateur (profil
utilisateur) tel que son nom, prénom, numéro de sa carte crédit, code….
2) Internet Banking Web Service : Service web fournit par la banque de l’utilisateur de
l’appareil qui lui permet de consulter son solde en tout sécurité.
3) GSM Tracking Web Servie : Service web de géolocalisation fournit par l’opérateur de
téléphonie mobile. Il permet de renvoyer la longitude et la latitude de l’emplacement
de l’appareil.
18
(Business Process Execution Language)
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 2 : Etat de l’art
ISET Djerba | TriTux PAGE 26
4) Google maps API : Service web fournit par Google permettant de renvoyer des
informations (tel que : sa nature, son nom, longitude, latitude…) sur les endroits qui
entourent un point donné par sa longitude et latitude.
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 2 : Etat de l’art
ISET Djerba | TriTux PAGE 27
Service partenaire (Internet
Banking Service)
Services partenaire (Google Maps
API)
Service partenaire (GSM Tracking) L'appareil Mobile
Quelles sont les espaces
qui m’entourent ?
Quelle est ma géoposition
(longitude & latitude)
Quel est mon solde ?
[Solde >= 10 Dinars]
[Nombre > 0]
Indiquer les salons de thé
sur la carte.
Afficher message
« Ce n’est pas le moment
pour aller au salon de thé !!! »
[Solde < 10 Dinars]
Afficher message « Désolé !
Aucun salon de thé trouvé
dans votre position. »
[Nombre = 0]
Entrée:
- Cherche (string) = "Salon de thé"
- Rayon en KM (real)
- Longitude (string)
- Lattitude (string)
Sortie:
- Nombre (integer)
- Liste des salons de thé (string XML)
Enrée:
- numéro de compte (number)
- code (string)
Sortie:
- Solde (real)
Entrée:
- SN (Subscriber Number) (number)
Sortie:
- Logitude (string)
- Lattitude (string)
Quel est son numéro de tel
et le numéro de sa carte de crédit ?
Saisir le rayon (zone de recherche
- Valeur en km)
Entrée: (Aucun)
Sortie:
- SN (Subscriber number) (number)
- numéro de compte (number)
{Donnée:
Rayon (real)
min=0.1
max=10.0}
HTTPS (SSL)
Saisir code confidentiel
Figure 10 – Exemple d’un processus faisant appel à 4 services
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 2 : Etat de l’art
ISET Djerba | TriTux PAGE 28
En examinant le diagramme précédent on constate que les différents services dépendent
les uns des autres. La longitude et la latitude renvoyées par le service de géolocalisation
fournis par l’opérateur ont étés utilisées dans les paramètres d’entrées du service Google
Maps.
2.3.3. Le langage BPEL
BPEL est l’acronyme de « Business Process Execution Language », qui est un langage
de programmation destiné à l’exécution des procédures d’entreprises .
BPEL4WS « Business Process Execution Language For Web Services », devenu WS-
BPEL est un standard de l’orchestration de services web.
Ce langage a été défini dans sa version 2.0 par une spécification du consortium OASIS 19
en 2007.
BPEL : Architecture
Les trois principaux éléments de BPEL sont :
- Editeur graphique BPEL (BPEL Designer) : Outil permettant la génération du code
BPEL à travers une interface graphique.
- Process flow template : code source (BPEL) du processus métier générer par
l’éditeur graphique BPEL.
- Moteur BPEL (BPEL Engine) : Le moteur BPEL agissant comme une machine
virtuelle, permet l’exécution du code BPEL (ça inclus l’invocation des servies web,
le mapping de donnés, les transactions, la sécurité, et encore plus…)
19
Organization for the Advancement of Structured Information
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 2 : Etat de l’art
ISET Djerba | TriTux PAGE 29
Process
flow
template
GeneratesBPEL
Designer
Executes BPEL
Engine
Design Time Run Time
Business Expert End User / Application
Figure 1120
– Eléments de BPEL (Architecture)
Fichier BPEL :
C’est un fichier dont le contenu est basé sur XML et qui porte dans la plus part des cas
l’extension (.bpel), qui représente le code source de l’application qui va constituer le
processus décrivant la logique des actions à exécuter par le moteur d’orchestration.
Le code BPEL (syntaxe) :
BPEL est un langage d’orchestration de services web basé sur langage XML , comme
n’importe quel langage de programmation il possède un vocabulaire propre à lui.
- La balise <process> :
Représente l’élément racine du document BPEL, dans la quel se trouve la description du
processus. Par exemple l’attribut name pour donner un nom au processus.
<process name="processRUById" targetNamespace="http://enterprise.netbeans.org/bpel/processRUById/processRUById"
xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
[…]
- La balise <import> :
Permet d’importer un fichier WSDL
20 Figure - Référence: http://www.developer.com/services/article.php/3609381/An-
Introduction-to-BPEL.htm
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 2 : Etat de l’art
ISET Djerba | TriTux PAGE 30
<import namespace="urn:tns" location="services_rnu.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
- La balise <partenerLinks> :
Permet de lier des actions définies dans le fichier WSDL (via partnerLinkType) au process
BPEL.
<partnerLinks>
[…]
<partnerLink name="pbServicesLocalPL" xmlns:tns="http://enterprise.netbeans.org/bpel/servicesWrapper" partnerLinkType="tns:PodBridgeLinkType" partnerRole="PodBridgeRole"/>
[…]
</partnerLinks>
- La balise <variables> :
Permet de définir les variables utilisées par le processus.
<variable name="KEY" type="xsd:string"/>
- La balise <sequence> :
Pour réunir une suite d’actions à exécuter dans le processus.
<sequence name="main_seq">
[Actions]
</ sequence>
- La balise <receive> :
Permet de recevoir un signal de l’extérieur d’un processus, ce qui permettra d’instancier
le processus, ou d’attendre qu’un événement se termine avant de continuer le processus.
<receive name="Receive" createInstance="yes" partnerLink="processRUByIdPL"
operation="processRUByIdOperation" xmlns:tns="http://j2ee.netbeans.org/wsdl/processRUById/processRUById" portType="tns:processRUByIdPortType" variable="processRUByIdOperationIn"/>
- La balise <reply> :
Permet de renvoyer une réponse à un partnerLink qui en attend une.
<reply name="Reply" partnerLink="processRUByIdPL" operation="processRUByIdOperation"
xmlns:tns="http://j2ee.netbeans.org/wsdl/processRUById/processRUById" portType="tns:processRUByIdPortType" variable="processRUByIdOperationOut"/>
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 2 : Etat de l’art
ISET Djerba | TriTux PAGE 31
- La balise <invoke> :
Permet d’appeler un service web.
<invoke name="CREATE_FTP" partnerLink="pbServicesLocalPL" operation="doCreateFTPUserAccount" portType="pbns:PodBridgePortType" inputVariable="DoCreateFTPUserAccountIn" outputVariable="DoCreateFTPUserAccountOut"/>
- La balise <if> :
Condition
<if name="ifhastel">
<condition>$GetStudentByIdOut.body/ns1:response/ns1:tel != ''</condition>
[…]
</if>
- La balise <flow> :
Permet l’exécution en parallèle de plusieurs actions.
<flow name="Flow1">
[…]
</flow>
- La balise <forEach> :
<forEach name="ForEach1" parallel="no" counterName="ForEach1Counter">
<startCounterValue>0</startCounterValue>
<finalCounterValue>$variable</finalCounterValue>
[…]
</ forEach >
- La balise <while> :
<while name="While1">
<condition>$variable != true()</condition>
[…]
</while>
- La balise <repeatUntil> :
<repeatUntil name="RepeatUntil1">
[…]
<condition>$GetNextIdOut.body/ns0:response/ns0:last = true()</condition>
</repeatUntil>
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 2 : Etat de l’art
ISET Djerba | TriTux PAGE 32
2.3.4. Résumé
Avantages de BPEL
- Séparer le logique processus de la logique application,
- Possibilité de changer le processus sans impact sur les applications,
- Agilité de l’entreprise ou l’organisme,
- Présenter le processus comme un service,
- Portable : supporté par plusieurs serveurs (moteurs BPEL),
- Basé sur XML,
- Supporte plusieurs fonctionnalités tel que (Exécution asynchrone, fonction
XSLT21, exécution en parallèle, validation, exceptions …).
21
eXtensible Stylesheet Language Transformation
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 2 : Etat de l’art
ISET Djerba | TriTux PAGE 33
2.4. Résumé sur le concept SOA
Les avantages :
- Se base sur des standards (Exemple : SOAP/WSDL pour les services web et BPEL
pour orchestration)
- interopérabilité : ne différencie pas les plateformes (matérielles et logicielles),
- une réutilisabilité possible de services,
- améliore la rapidité ainsi que la productivité des développements,
- une modularité permettant de remplacer facilement un service par un autre,
- de meilleures possibilités d’évolution,
- une plus grande tolérance aux pannes,
- une maintenance facilitée.
Les inconvénients :
- Le temps de réponse est plus long en le comparant avec le temps de réponse du
système final, cet alourdissement est à l’origine du protocole utilisé et du
système d’intermédiation (middlewares) : analyse des messages,
ordonnancement, le Framework, sécurité, logging…,
- Si le niveau de granularité d’un service augmente, le temps de réponse lui aussi
augmente.
- La sécurité dépends de l’infrastructure elle-même ; les logiciels d’intermédiation,
les équipements de routage, les protocoles utilisés (pour le cas des services web,
il est conseiller d’utiliser HTTPS)…
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 34
3. Chapitre 3 : Etude conceptuelle
3.1. Introduction
Maîtriser des langages de programmation orientée objet tel que PHP, C++ ou Java est
aujourd’hui quelque chose fondamentale pour la réalisation des applications complexes, en
plus grâce à la programmation objet, on apprendra à savoir décomposés les grands
problèmes en des sous-problèmes, et par suite ça permet à des équipes indépendantes de
les résoudre aisément. Malgré ça une question qui se pose toujours : comment va-t-on
présenter notre application à des individus ne maitrisant pas le langage par lequel a été
développé?
Pour cela, il nous faut :
1) un langage (pour s'exprimer clairement à l'aide des concepts objets), qui doit
permettre de :
- représenter des concepts abstraits (graphiquement par exemple),
- limiter les ambiguïtés (parler un langage commun, au vocabulaire précis,
indépendant des langages orientés objet),
- faciliter l'analyse (simplifier la comparaison et l'évaluation de solutions).
2) une démarche d'analyse et de conception objet, pour :
- ne pas effectuer une analyse fonctionnelle et se contenter d'une implémentation
objet, mais penser objet dès le départ,
- définir les vues qui permettent de décrire tous les aspects d'un système avec des
concepts objets.
UML est notre choix !
UML est avant tout un support de communication performant, qui facilite la
représentation et la compréhension de solutions objet :
- Sa notation graphique permet d'exprimer visuellement une solution objet, ce qui
facilite la comparaison et l'évaluation de solutions.
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 35
- L'aspect formel de sa notation, limite les ambiguïtés et les incompré hensions.
- Son indépendance par rapport aux langages de programmation, aux domaines
d'application et aux processus, en font un langage universel.
Comme UML n'impose pas de méthode de travail particulière, il peut être intégré à
n'importe quel processus de développement logiciel de manière transparente. UML est une
sorte de boîte à outils, qui permet d'améliorer progressivement nos méthodes de travail,
tout en préservant nos modes de fonctionnement.
Intégrer UML par étapes dans un processus, de manière pragmatique, est tout à fait
possible. La faculté d'UML de se fondre dans le processus courant, tout en véhiculant une
démarche méthodologique, facilite son intégration et limite de nombreux risques (rejet des
utilisateurs, coûts...).
3.2. Phase 1 : Conception des Services Web
3.2.1. Introduction
Cette première phase de l’étude conceptuelle s’intéresse au 3 premiers couches du
Concept SOA. Dans notre étude on s’intéressera à la modélisation des connecteurs
PodBridge 1.2, à travers lesquels on va intégrer les différentes systèmes et protocoles
présents. Ces connecteurs servent d'interface entre le middleware (PodBridge) et les
différents systèmes applicatifs présents.
Les connecteurs de PodBridge sont des classes qui dérivent tous de la même classe mère
PodBridgeConnector et qui implémentent l’interface PodBridgeConnectorInterface.
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 36
+connect() : boolean
+disconnect() : boolean
«interface»
PodBridgeConnectorInterface
+getLastErrorMsg() : string
+setLastError()
+setParam()
+getSessionLog()
+setSessionLog() : array
+getSessionLogCounter() : integer
#params : array
#error : array
#sessionLog : array
#sessionLogCounter : integer = 0
PodBridgeConnector
NOM_DU_CONNECTEUR
Figure 12 –Modélisation d’un connecteur PodBridge1.2 (Cas général)
Les différents systèmes et ressources visés par notre projet sont répartis sur deux réseaux
géographiquement distants, le premier est un réseau local d’un établissement
d'enseignement supérieur et l’autre est celui du Réseau National Universitaire (RNU).
Les systèmes informatiques visés de l’établissement supérieur:
1) Le serveur de base de données dans lequel sont centralisées les informations sur
chaque étudiant.
2) Le serveur FTP dédié aux étudiants du département informatique. Chaque étudiant à
le droit d’avoir un seul compte dans le quel il peut stocker ses documents, comme il
peut ainsi s’en servir même de chez lui.
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 37
3) Le point d’accès sans fil du département informatique qui permet une connexion
sans fil au réseau local de l’établissement et à internet, la connexion est sécurisé
grâce au filtrage MAC ainsi par une clé.
4) Une imprimante partagée sur le réseau de l’établissement.
5) Un Modem GSM permettant l’envoi des SMS en masse.
Les systèmes informatiques visés du RNU:
1) Le serveur web d’inscription universitaire « inscription.edu.demo ».
2) Le serveur mail « rnu.edu.demo » pour héberger les comptes de messageries
électronique des étudiants et des enseignants.
3.2.2. Urbanisation du SI de l’établissement
3.2.2.1. Le serveur de base de données PostgreSQL
Dans ce projet, on a supposé que toutes les informations sur les étudiants sont stockées
dans une seule table appelée « etudiant ».
Description de la table « etudiant » :
etudiant
id : character varying(8) <<PK>>
nom : character varying(25)
prenom : character varying(25)
dep : character varying(5)
spec : character varying(5)
niveau : integer
tel : character varying(8)
email : character varying(255)
loginftp : character varying(255)
adrmac : character varying(17)
refrecu : character varying(16)
process : character varying(3)
Figure 13 - Table « etudiant »
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 38
Description des attributs :
Champ Description
id Identifiant de l’étudiant
nom Nom de l’étudiant.
prenom Prénom de l’étudiant.
dep Code de département
spec Code de spécialité
niveau Niveau
Tel Numéro de téléphone personnel (GSM).
email Adresse email.
loginftp Login du compte FTP sur le réseau de l’institut.
adrmac Adresse MAC de l’interface réseau sans fil de l’ordinateur portable de
l’étudiant.
refrecu Référence de l’accusé de payement.
process Code d’état du process.
Objectif : Avoir 3 services web qui permettent de :
1) Récupérer toutes les informations sur un étudiant,
2) Mettre à jours une ou plusieurs informations sur un étudiant,
3) Connaitre l’identifiant de l’étudiant suivant.
Note : En cas d’erreur (identifiant non existant, serveur déconnecté…) chaque service
web doit le signaler en renvoyant au client la description et le code de l’erreur.
La figure suivante représente la modélisation de la classe BDetu :
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 39
+connect() : boolean
+disconnect() : boolean
«interface»
PodBridgeConnectorInterface
+getLastErrorMsg() : string
+setLastError()
+setParam()
+getSessionLog()
+setSessionLog() : array
+getSessionLogCounter() : integer
#params : array
#error : array
#sessionLog : array
#sessionLogCounter : integer = 0
PodBridgeConnector
+getStudentById() : array
+updateStudentById() : boolean
+getNextId() : array
-executeSQL() : array
+connect() : boolean
+disconnect() : boolean
-conn : ressource = null
BDetu
Figure 14 - Classe BDetu (Connecteur PodBridge de l’établissement)
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 40
Description des attributs de la classe BDetu:
Nom de l’attribut Description Valeur initiale
conn Ressource PostgreSQL Client null
Description des méthodes de la classe BDetu :
Nom de la méthode Description Entrée Sortie
Serv
ice
getStudientById
Renvoi les informations sur un étudiant depuis la base de données.
id : Identifiant. String
Informations sur l’étudiant (id,nom, prénom,
dep,spec,niveau,tel,email,loginftp,adr
mac,refrecu,process). Array
Serv
ice
updateStudentById
Met à jour une ou plusieurs informations sur un étudiant tel que, son email,
tel, login ftp…
id :Identifiant. String
Vrai si succès de la mis à jour. boolean
Tel String
adrmac String
ftp String
refrecu String
process String
Serv
ice
getNextId
Renvoi l’identifiant de l’étudiant suivant.
id : Identifiant. (Optionnel) -’Si elle prend null c’est pour récupérer le premier identifiant’ String
Identifiant. String
Code état du process (Filtre)
executeSQL
Envoi la requête SQL au SGBD et revoie le résultat.
sql : Requête SQL String
Résultat de la requête. Array
Numrows :
Nombre de ligne retournées integer
connect Se connecter au serveur Vrai si succès de la
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 41
PostgreSQL (initialise la ressource conn)
connexion. boolean
disconnect Se déconnecter du serveur PostgreSQL et libère la
ressource conn.
Vrai en cas de succès de la
déconnexion. boolean
Les méthodes suivantes: getStudentById(), updateStudentById() et getNextId() seront
choisis pour êtres exposées en tant que services web SOAP à travers PodBridge.
La figure suivante fournit une description étendue sur la logique métier caché derrière
chaque service allant du consommateur de service au système final.
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 42
postgresql (5432)PodBridge 1.2 SOA Middleware
HTTP (80)
PB1.2 Core
SOAP web service API
PB1.2 Connector
« Bdetu.connector.php »
End system
PostgreSQL DBMS
SQL Execute :
SELECT
.. FROM .. WHERE ..
Invoke WS :
getSudentByID
Authenticate and
check privilege
Handle request
<< Include >>
Invoke WS :
updateStudentById
Call method :
updateStudentById()
Call method :
getStudentById()
Call method :
executeSQL()
Service
Consumer
<< Include >>
<< Include >>
Get response from
cache
<< Include >>
SQL Execute :
UPDATE
.. SET .. WHERE ..
Tell PostgreSQL Server
to perform the
operation
<< Include >>
if cached
Trace requests and
responses
<< Include >>
Invoke WS :
getNextId
Call method :
getNextId()
<< Include >>
Frontend
Get WSDL
Setup PB1.2
Monitor
transactions log
PodBridge
admin
DBA
Figure 15 – Modélisation de la logique métier (Connecteur BDetu)
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 43
3.2.2.2. Le serveur FTP dédié aux étudiants
Objectif : Avoir 7 services web qui permettent de :
1) Créer un nouveau compte FTP,
2) Modifier la date d’expiration d’un compte FTP,
3) Modifier le message de bienvenu affiché lors de la connexion au compte FTP,
4) Désactiver le message de bienvenu affiché lors de la connexion au compte FTP,
5) Modifier le mot de passe d’un compte FTP,
6) Supprimer un compte FTP,
7) Transférer des fichiers ou répertoires vers n’importe quel compte FTP.
Note : En cas d’erreur (utilisateur déjà existant, serveur FTP déconnecté…) chaque service
web doit le signaler en renvoyant au client la description et le code de l’erreur.
La figure suivante représente la modélisation de la classe FTPAccount :
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 44
+connect() : boolean
+disconnect() : boolean
«interface»
PodBridgeConnectorInterface
+getLastErrorMsg() : string
+setLastError()
+setParam()
+getSessionLog()
+setSessionLog() : array
+getSessionLogCounter() : integer
#params : array
#error : array
#sessionLog : array
#sessionLogCounter : integer = 0
PodBridgeConnector
-generateRandomPasswd() : string
+ifUserExists() : boolean
-getUnixDate() : string
+doCreateFTPUserAccount() : array
+setFTPUserAccountExpiryDate() : boolean
+setFTPUserWelcomeMsg() : boolean
+doDisableFTPUserWelcomeMsg() : boolean
+doChangeFTPUserPassword() : boolean
-doCheckPassword() : boolean
+doDeleteFTPUserAccount() : boolean
+doFTPsendFile() : boolean
-ssh2Exec() : stream
+connect() : boolean
+disconnect() : boolean
-sshCon : ressource = null
-authenticated : boolean = false
-regexValidator : array
FTPAccount
Figure 16 - Classe FTPAccount (Connecteur PodBridge de l’établissement)
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 45
Description des attributs de la classe FTPAccount :
Nom de l’attribut Description Valeur initiale
sshCon Ressource sshclient null
authenticated Pour identifier si la connexion au serveur SSH est établit et en cours.
False
regexValidator Renferme différentes expressions régulières.
Expression régulière d’un nom d’utilisateur.
Description des méthodes de la classe FTPAccount :
Nom de la méthode Description Entrée Sortie
generateRandomPasswd
Génère un mot de passe aléatoire.
len : Longueur du mot de passe (optionnel)
5 par défaut
Integer
Mot de passe. String
ifUserExists
Vérifie si un utilisateur existe déjà sur le système.
user : Nom d’utilisateur String
Vrai si l’utilisateur est déjà existant. boolean
getUnixDate
Converti une date au
format JJ/MM/AAAA en une date au format
MM/JJ/AAAA.
date : Une date
(JJ/MM/AAAA) String
Une date
(MM/JJ/AAAA) String
SER
VIC
E
doCreateFTPUserAccount
Créer un nouveau compte d’utilisateur FTP.
user : Nom d’utilisateur
String
(login, mot de passe, nom de
domaine et n° port ftp) Array
expiry_date : Date
d’expiration boolean
use_welcome : Utiliser le message de bienvenu par défaut (Vrai par
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 46
défaut) boolean
SER
VIC
E
setFTPUserAccountExpiryDate
Modifie la date d’expiration d’un compte utilisateur FTP.
user : Nom d’utilisateur String
Vrai si la date d’expiration du compte à été modifiée avec succès. boolean
expiry_date : Date d’expiration
String
SER
VIC
E
setFTPUserWelcomeMs
g
Modifie le fichier « welcome.msg » qui existe dans la racine du compte utilisateur FTP.
user : Nom d’utilisateur. String
Vrai si le contenu du fichier « welcome.msg à été modifier. boolean
message : Message de
bienvenu. String
SER
VIC
E
doDisableFTPUserW
elcomeMsg
Supprime le fichier « welcome.msg » qui
existe dans la racine du compte utilisateur FTP.
user : Nom d’utilisateur.
String
Vrai si le fichier « welcome.msg
à été supprimer. boolean
SER
VIC
E
doChangeFTPUserPassword
Modifie le mot de passe d’un compte utilisateur FTP.
user : Nom d’utilisateur. String
Vrai si le mot de passe a été changé avec
succès. boolean password : Ancien mot de
passe. String
new_password : Nouveau mot de
passe. String
doCheckPassword
Vérifie si le mot de passe passé en paramètre est
correct.
user : Nom d’utilisateur.
String
Vrai si la vérification est
positive et faux dans le cas
contraire. boolean
password : Mot de passe String
SER
VIC
E
doDeleteFTPUserAccount
Supprime un compte utilisateur FTP du système.
user : Nom d’utilisateur. String
Vrai si le compte d’utilisateur a été supprimé avec succès. boolean
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 47
SER
VIC
E
doFTPsendFile
Fait une copie des fichiers ou dossiers d’une source à un compte utilisateur FTP.
file : Chemin du fichier ou du répertoire source. String
Vrai si la copie de fichiers est terminée avec succès. boolean
user : Nom d’utilisateur. String
ssh2Exec
Demande au serveur SSH d’exécuter une commande Shell.
cmd : La commande. String
Le résultat d’exécution de la commande. String
exception : Lever une exception
dans le cas où le résultat retourné
par la commande est
une erreur. (Vrai par défaut)
boolean
readResponse : si elle prend vrai,
on récupère le résultat retourné
par la commande (Faux
par défaut) boolean
connect
Se connecter au serveur
SSH (initialise la ressource sshCon).
Vrai en cas de
succès de la connexion.
boolean
disconnect
Se déconnecter du serveur SSH et libère la ressource
sshCon.
Vrai en cas de succès de la
déconnexion. boolean
Les méthodes suivantes: doCreateFTPUserAccount (), setFTPUserAccountExpiryDate
(), setFTPUserWelcomeMsg (), doDisableFTPUserWelcomeMsg (),
doDisableFTPUserWelcomeMsg (), doDeleteFTPUserAccount () et doFTPsendFile ()
seront choisis pour êtres exposées en tant que services web SOAP à travers PodBridge.
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 48
La figure de la page suivante fournit une description étendue sur la logique métier caché
derrière chaque service allant du consommateur de service au système final.
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 49
Figure 17 - Modélisation de la logique métier (Connecteur FTPAccount)
S S H (2 2 )
F T P (2 1 )
P o d B r id g e 1 .2 S O A M id d le w a r e
H T T P (8 0 )
P B 1 .2 C o r e
S O A P w e b s e r v ic e A P I
P B 1 .2 C o n n e c t o r
« F T P A c c o u n t .c o n n e c t o r .p h p »
E n d s y s t e m
O p e n S S H a n d
p r o F T P d o n U b u n t u
s e r v e r
S h e ll e x e c u te :
u s e ra d d … -g F T P . . .
A u th e n t ic a te a n d
c h e c k p r iv i le g e
H a n d le re q u e s t
< < In c lu d e > > C a ll m e th o d :
s e tF T P U s e r
W e lc o m e M s g ( )
C a ll m e th o d :
d o C re a te F T P
U s e rA c c o u n t ( )
C a ll m e th o d :
s s h 2 E x e c ( )
S e rv ic e
C o n s u m e r
< < In c lu d e > >
< < In c lu d e > >
G e t re s p o n s e f ro m
c a c h e
< < In c lu d e > >
S h e ll E x e c u te : c p …T e ll S S H S e rv e r to
p e r fo rm th e o p e ra t io n
< < In c lu d e > >
if c a c h e d
T ra c e re q u e s ts a n d
re s p o n s e s
< < In c lu d e > >
F T P S e rv e r
a d m in
C a ll m e th o d :
s e tF T P U s e rA c c o u n t
E x p ir y D a te ( )
< < In c lu d e > >
F r o n t e n d
G e t W S D LP B a d m in
S e tu p P B 1 .2
M o n ito r
t ra n s a c t io n s lo g
In v o k e W S :
d o C re a te F T P
U s e rA c c o u n t
In v o k e W S :
s e tF T P U s e rW e lc o m e M s g
In v o k e W S :
s e tF T P U s e r
A c c o u n tE x p ir y D a te
In v o k e W S :
d o F T P s e n d F ile
C a ll m e th o d :
d o F T P s e n d F ile ( )
< < In c lu d e > >
C a ll m e th o d :
g e tU n ix D a te ( )
< < In c lu d e > >
C a ll m e th o d :
g e n e ra te
R a n d o m P a s s w d ( )
< < In c lu d e > >
C a ll m e th o d :
i fU s e rE x is ts ( )
< < In c lu d e > >
S h e ll e x e c u te :
u s e rm o d -e . . . .
< < In c lu d e > >
S h e ll E x e c u te :
c h o w n . . .
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 50
3.2.2.3. Le point d’accès sans fil
Objectif : Avoir 3 services web qui permettent de :
1) Ajouter une adresse dans le filtre MAC du point d’accès sans fil (autorisation
d’accès).
2) Supprimer une adresse du filtre MAC du point d’accès sans fil. (interdiction
d’accès)
3) Récupérer des informations sur le point d’accès sans fil.
Note : En cas d’erreur (format adresse MAC incorrecte, connexion impossible au Point
d’accès…) chaque service web doit le signaler en renvoyant au client la description et le code
de l’erreur.
La figure ci-dessous représente la modélisation de la classe APACLManager :
+connect() : boolean
+disconnect() : boolean
«interface»
PodBridgeConnectorInterface
+getLastErrorMsg() : string
+setLastError()
+setParam()
+getSessionLog()
+setSessionLog() : array
+getSessionLogCounter() : integer
#params : array
#error : array
#sessionLog : array
#sessionLogCounter : integer = 0
PodBridgeConnector
+doForwardMACaddr() : array
+doRomoveForwordedMACaddr() : boolean
+getAccesPointInfo() : array
+connect() : boolean
+disconnect() : boolean
-regexValidator : array
APACLManager
Figure 18 – Classe APACLManager (Connecteur PodBridge de l’établissement)
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 51
Description des attributs de la classe APACLManager :
Nom de l’attribut Description Valeur initiale
regexValidator Renferme différentes expressions régulières.
Expression régulière d’une adresse MAC.
Description des méthodes de la classe APACLManager :
Nom de la méthode Description Entrée Sortie
SER
VIC
ES
doForwardMACaddr
Ajoute une adresse MAC
dans l’ACL du point d’accès sans fil. (Autorise l’accès au réseau)
macaddr :
Adresse MAC. String
Vrai si adresse à
été ajoutée à la liste de contrôle du point d’accès. boolean
doRomoveForwordedM
ACaddr
Supprime une adresse
MAC depuis l’ACL du point d’accès sans fil. (Interdit
l’accès au réseau)
macaddr :
Adresse MAC. String
Vrai si adresse à
été supprimer de la liste de
contrôle du point d’accès. boolean
getAccesPointInfo
Renvoi des informations sur le point d’accès (l’SSID et la clé d’authentification).
(clé d’authentification, SSID). Array
connect
Se connecter au serveur
TELNET.
Vrai en cas de
succès de la connexion.
boolean
disconnect
Se déconnecter du serveur TELNET.
Vrai en cas de succès de la déconnexion. boolean
Les méthodes suivantes: doForwardMACaddr (), doRomoveForwordedMACaddr () et
getAccesPointInfo () seront choisis pour êtres exposées en tant que services web SOAP à
travers PodBridge.
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 52
La figure de la page suivante fournit une description étendue sur la logique métier caché
derrière chaque service allant du consommateur de service au système final.
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 53
TELNET (23)PodBridge 1.2 SOA Middleware
HTTP (80)
PB1.2 Core
SOAP web service API
PB1.2 Connector
« APACLManager.connector.php »
End system
Wireless Access Point
Add mac address to
ACL
Invoke WS :
doRomoveForworded
MACaddr
Authenticate and
check privilege
Handle request
<< Include >>
Invoke WS :
doForwardMACaddr
Call method :
getAccesPointInfo()
Call method :
doForwardMACaddr()
Call method :
SocketSend()
Service
Consumer
<< Include >>
Get response from
cache
<< Include >>
Remove mac address
from ACLTell Telnet Server to
perform the operation
<< Include >>
if cached
Trace requests and
responses
<< Include >>
Invoke WS :
getAccesPointInfo
Call method :
doRomoveForworded
MACaddr()
<< Include >>
Frontend
Get WSDL
Setup PB1.2
Monitor
transactions log
PodBridge
admin
Network
admin
Figure 19 - Modélisation de la logique métier (Connecteur APACLManager)
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 54
3.2.2.4. Le serveur d’impression CUPS
Objectif : Avoir 2 services web qui permettent de :
1) Imprimer une page du web sur une imprimante partagée via CUPS,
2) Retourner une liste de noms des imprimantes partagées par le serveur CUPS.
Note : En cas d’erreur (page web introuvable, serveur CUPS déconnecté…) chaque service
web doit le signaler en renvoyant au client la description et le code de l’erreur.
La figure ci-dessous représente la modélisation de la classe IPPService :
+connect() : boolean
+disconnect() : boolean
«interface»
PodBridgeConnectorInterface
+getLastErrorMsg() : string
+setLastError()
+setParam()
+getSessionLog()
+setSessionLog() : array
+getSessionLogCounter() : integer
#params : array
#error : array
#sessionLog : array
#sessionLogCounter : integer = 0
PodBridgeConnector
+doPrintWebPage() : boolean
-doPrintInternalDocument() : boolean
+connect() : boolean
+disconnect() : boolean
-ipp : CupsPrintIPP Object = null
IPPService
Figure 20 – Classe IPPService (Connecteur PodBridge de l’établissement)
Description des attributs de la classe IPPService :
Nom de l’attribut Description Valeur initiale
ipp Objet de la classe CupsPrintIPP. null
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 55
Description des méthodes de la classe IPPService :
Nom de la méthode Description Entrée Sortie
SER
VIC
ES doPrintWebPage
Envoyer un ordre
d’impression d’une page web à une imprimante
partagée.
url : URL de la
page web. String
Vrai si l’ordre
d’impression à été envoyé.
boolean jobname : Nom du job
d’impression (optionnel)
String
getPrinters
Renvoie les adresses (URI)
des imprimantes partagées par CUPS
Des URI
délimités par des points virgules. String
doPrintInternalDocument
Envoyer un ordre d’impression à une
imprimante partagée d’un document présent sur le serveur.
filepath : Chemin d’accès à un
document présent sur le serveur. String
Vrai si l’ordre d’impression à
été envoyé. boolean
jobname : Nom du job d’impression (optionnel) String
connect
Se connecter au serveur CUPS.
Vrai en cas de succès de la
connexion. boolean
disconnect
Se déconnecter du serveur CUPS.
Vrai en cas de succès de la déconnexion. boolean
Les méthodes suivantes: doPrintWebPage () et getPrinters () seront choisis pour êtres
exposées en tant que services web SOAP à travers PodBridge.
La figure de la page suivante fournit une description étendue sur la logique métier caché
derrière chaque service allant du consommateur de service au système final.
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 56
cups (631)PodBridge 1.2 SOA Middleware
HTTP (80)
PB1.2 Core
SOAP web service API
PB1.2 Connector
« IPPService.connector.php »End system
CUPS Server
Scan for available
printers
Invoke WS :
doPrintWebPage
Authenticate and
check privilege
Handle request
<< Include >>
Invoke WS :
doPrintInternalDocument
Call method :
getPrinters()
Call method :
doPrintWebPage()
Service
Consumer
<< Include >>
<< Include >>
Get response from
cache
<< Include >>
start print job
Tell CUPS Server to
perform the operation
if cached
Trace requests and
responses
<< Include >>
Invoke WS :
getPrinters
Call method :
doPrintInternalDocument()
<< Include >>
Frontend
Get WSDL
Setup PB1.2
Monitor
transactions log
PodBridge
admin
Network
admin
<< Include >>
Figure 21 - Modélisation de la logique métier (Connecteur IPPService)
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 57
3.2.2.5. Le serveur web (inscription.rnu.demo)
Objectif : Avoir 1 service web qui permet de :
- Renvoyer la référence et l’URL de l’accusé de payement d’inscription
universitaire d’un étudiant depuis le site d’inscription inscription.edu.demo.
Note : En cas d’erreur (identifiant incorrecte, site web indisponible …) ce service web doit
le signaler en renvoyant au client la description et le code de l’erreur.
La figure ci-dessous représente la modélisation de la classe wwwsubscr :
+connect() : boolean
+disconnect() : boolean
«interface»
PodBridgeConnectorInterface
+getLastErrorMsg() : string
+setLastError()
+setParam()
+getSessionLog()
+setSessionLog() : array
+getSessionLogCounter() : integer
#params : array
#error : array
#sessionLog : array
#sessionLogCounter : integer = 0
PodBridgeConnector
-getAccuseRef() : string
+getAccuse() : array
+ssh2Exec() : stream
+connect() : boolean
+disconnect() : boolean
-curl_handle : ressource = null
wwwsubscr
Figure 22 – Classe wwwsubscr (Connecteur PodBridge de l’établissement)
Description des attributs de la classe wwwsubscr :
Nom de l’attribut Description Valeur initiale
curl_handle ressource curl null
Description des méthodes de la classe wwwsubscr :
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 58
Nom de la méthode Description Entrée Sortie
getAccuseRef
Renvoi la référence de l’accusé de paiement pour une année universitaire donnée. (si paiement effectué)
studentident : Identifiant de l’étudiant. String
Référence de l’accusé de paiement. String
au : Année universitaire
(AAAA/AAAA). String
SER
VIC
E
getAccuse
Renvoi la référence et
l’URL de l’accusé de paiement pour une année
universitaire donnée. Si getAccuseRef renvoie la
référence de l’accusé.
studentident :
Identifiant de l’étudiant. String
Référence et url
de l’accusé de paiement. Array
au : Année
universitaire (AAAA/AAAA).
String
connect
Initialisation de la
ressource
Vrai si la
ressource à été initialisée.
boolean
disconnect Ressource libérée Vrai si la
ressource à été
libérée. boolean
La méthode getAccuse ( ) sera choisi pour êtres exposée en tant que service web SOAP à
travers PodBridge.
La figure de la page suivante fournit une description étendue sur la logique métier caché
derrière ce service allant du consommateur de service au système final.
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 59
HTTP (80)PodBridge 1.2 SOA Middleware
HTTP (80)
PB1.2 Core
SOAP web service API
PB1.2 Connector
« wwwsubscr.connector.php »End System
HTTP Server
(inscription.edu.demo
)
Get page of
requested URL
Invoke WS :
getAccuse
Authenticate and
check privilege
Handle request
<< Include >>
Call method :
getAccuseRef()
Service
Consumer
<< Include >>
Get response from
cache
<< Include >>
Authenticate
Tell WEB Server
To
perform the operation
if cached
Trace requests and
responses
<< Include >>
Call method :
getAccuse()
<< Include >>
Frontend
Get WSDL
Setup PB1.2
Monitor
transactions log
PodBridge
admin
Web user
<< Include >>
Figure 23 - Modélisation de la logique métier (Connecteur wwwsubscr)
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 60
3.2.2.6. Le modem SMS
Objectif : Avoir 1 service web qui permet de :
- Envoyer un message court (SMS) à numéro de téléphone particulier.
Note : En cas d’erreur (format du numéro de téléphone incorrecte, serveur déconnecté
…) ce service web doit le signaler en renvoyant au client la description et le code de l’erreur.
La figure ci-dessous représente la modélisation de la classe SMSService :
+doSendSMS() : boolean
-stripSpaces() : boolean
-ssh2Exec() : stream
+connect() : boolean
+disconnect() : boolean
-sshCon : ressource = null
-authenticated : boolean = false
-regexValidator : array
SMSService
+connect() : boolean
+disconnect() : boolean
«interface»
PodBridgeConnectorInterface
+getLastErrorMsg() : string
+setLastError()
+setParam()
+getSessionLog()
+setSessionLog() : array
+getSessionLogCounter() : integer
#params : array
#error : array
#sessionLog : array
#sessionLogCounter : integer = 0
PodBridgeConnector
Figure 24 – Classe SMSService (Connecteur PodBridge de l’établissement)
Description des attributs de la classe SMSService :
Nom de l’attribut Description Valeur initiale
sshCon Ressource client ssh null
authenticated Pour identifier si la connexion au serveur SSH est établit et en cours.
False
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 61
regexValidator Renferme différentes expressions régulières.
Expression régulière d’un numéro de téléphone de 8 chiffres.
Description des méthodes de la classe SMSService :
Nom de la méthode Description Entrée Sortie
SER
VIC
E
doSendSMS
Envoyer un SMS. destinataire :
numéro de téléphone du
destinataire.
String
Vrai si l’SMS a
été envoyé au destinataire
boolean
message :
Message texte court à envoyer
String
stripSpaces
Supprimer des espaces qui existent dans le numéro de téléphone et valider son format.
phonenumber : Numéro de téléphone String
Numéro de téléphone sans espaces blanc String
ssh2Exec
Demande au serveur SSH d’exécuter une commande Shell.
cmd : La commande. String
Le résultat d’exécution de la commande.
String exception : Lever une exception
dans le cas où le résultat retourné
par la commande est une erreur. (Vrai par défaut) boolean
readResponse : si elle prend vrai, on récupère le résultat retourné par la commande (Faux par défaut)
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 62
boolean
connect
Se connecter au serveur
SSH (initialise la ressource sshCon).
Vrai en cas de
succès de la connexion.
boolean
disconnect
Se déconnecter du serveur SSH et libère la ressource
sshCon.
Vrai en cas de succès de la
déconnexion. boolean
La méthode doSendSMS () sera choisi pour être exposée en tant que service web SOAP à
travers PodBridge.
La figure de la page suivante fournit une description étendue sur la logique métier caché
derrière ce service allant du consommateur de service au système final.
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 63
SSH (22)
PodBridge 1.2 SOA Middleware ( podbridge-12.intranet.demo)
HTTP (80)
PB1.2 Core
SOAP web service API
PB1.2 Connector
«SMSService.connector.php »
End System
Server
Send SMS
command
Invoke WS :
doSendSMS
Authenticate and
check privilege
Handle request
<< Include >>
Call method :
stripSpaces()
Service
Consumer
Get response from
cache
<< Include >>
Tell SSH Server to
perform the operation
if cached
Trace requests and
responses
<< Include >>
Call method :
doSendSMS()
<< Include >>
Frontend
Get WSDL
Setup PB1.2
Monitor
transactions log
PodBridge
admin
Server
Admin
<< Include >>
Figure 25 - Modélisation de la logique métier (Connecteur SMSService)
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 64
3.2.3. Urbanisation du SI du RNU
3.2.3.1. Serveur Mail
Objectif : Avoir 7 services web qui permettent de :
1) Créer un nouveau compte mail (1ère version - nom d’utilisateur est au choix),
2) Créer un nouveau compte mail (2ème version - le nom d’utilisateur doit être auto-généré à partir du nom et le prénom de son propriétaire),
3) Changer le mot de passe d’un compte mail,
4) Supprimer un compte mail,
5) Désactive un compte mail,
6) Active un compte mail,
7) Envoyer un message à n’importe quelle adresse électronique.
Note : En cas d’erreur (compte utilisateur déjà existant, problème de connexion au
serveur…) chaque service web doit le signaler en renvoyant au client la description et le
code de l’erreur.
La figure ci-dessous représente la modélisation de la classe MailAccount :
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 65
+connect() : boolean
+disconnect() : boolean
«interface»
PodBridgeConnectorInterface
+getLastErrorMsg() : string
+setLastError()
+setParam()
+getSessionLog()
+setSessionLog() : array
+getSessionLogCounter() : integer
#params : array
#error : array
#sessionLog : array
#sessionLogCounter : integer = 0
PodBridgeConnector
-generateRandomPasswd() : string
-ifUserExists() : boolean
-generateUserName() : string
-doStripAtDomain() : string
+doCreateMailUserAccount2() : array
+doCreateMailUserAccount() : array
+doChangeMailUserPassword() : boolean
-doCheckPassword() : boolean
+doDeleteMailUserAccount() : boolean
+doUnlockMailUserAccount() : boolean
+doLockMailUserAccount() : boolean
+doSendMail() : boolean
-ssh2Exec() : stream
+connect() : boolean
+disconnect() : boolean
-sshCon : ressource = null
-authenticated : boolean = false
-regexValidator : array
MailAccount
Figure 26 – Classe MailAccount (Connecteur PodBridge 1.2)
Description des attributs de la classe MailAccount :
Nom de l’attribut Description Valeur initiale
sshCon Ressource sshclient null
authenticated
Pour identifier si la
connexion au serveur SSH est établit et en cours.
False
regexValidator Renferme différentes
expressions régulières.
Expression régulière pour
un nom d’utilisateur (mail), prénom et adresse email.
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 66
Description des méthodes de la classe MailAccount :
Nom de la méthode Description Entrée Sortie
generateRandomPasswd
Génère un mot de passe aléatoire.
len : Longueur du mot de passe (optionnel) Integer
Mot de passe. String
ifUserExists
Vérifie si un utilisateur existe déjà sur le système.
user : Nom d’utilisateur String
Vrai si l’utilisateur est déjà existant. boolean
generateUserName
Génère un nom d’utilisateur à partir du
nom et prénom passés en paramètres.
fstname : prénom. String
Nom d’utilisateur.
String lstname : nom.
String
doStripAtDomain
Extrait le nom
d’utilisateur à partir d’une adresse email du domaine (rnu.edu.demo).
emailaddr :
adresse email. String
Nom
d’utilisateur.
String
SER
VIC
E
doCreateMailUserAcco
unt
Créer un nouveau
compte mail (1)
user : Nom
d’utilisateur String
(adresse email,
mot de passe, port POP3, port
SMTP, adresse url du webmail
‘SquirrelMail’) Array
genpswd: vrai
pour auto générer le mot
de passe. boolean
password: mot
de passe (si genpswd reçoit
faux). String
SER
VIC
E
doCreateMailUserAccount2
Créer un nouveau compte mail (2)
fstname : prénom. String
(adresse email, mot de passe, port POP3, port
SMTP, adresse url du webmail ‘SquirrelMail’)
lstname : nom. String
genpswd: vrai
pour auto
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 67
générer le mot de passe.
boolean
Array
password: mot
de passe (si genpswd reçoit
faux). String
SER
VIC
E
doDeleteMailUserAccount
Supprime un compte
mail.
emailaddr :
adresse mail. String
Vrai si le compte
mail a été supprimé avec
succès. boolean
SER
VIC
E
doUnlockMailUserAccount
Active un compte mail. emailaddr : adresse mail.
String
Vrai si le compte mail a été activé.
boolean
SER
VIC
E
doLockMailUserAccoun
t
Désactive un compte
mail.
emailaddr :
adresse mail.
String
Vrai si le compte
mail a été
désactivé. boolean
SER
VIC
E
doChangeMailUserPassword
Modifie le mot de passe d’un compte
mail.
emailaddr: adresse email.
String
Vrai si le mot de passe a été
changé avec succès. boolean
password : Ancien mot de
passe. String
new_password Nouveau mot de
passe. String
SER
VIC
E
doSendMail
Permet (à un administrateur) l’envoi de messages à n’importe quelle adresse électronique.
from: adresse email de l’envoyeur.
String
Vrai si le message à été envoyé avec succès. boolean
to : adresse email du destinataire.
String
message : Corps du message
String
subject : Sujet du
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 68
message
String
doCheckPassword
Vérifie si le mot de passe passé en
paramètre est correct.
user : Nom d’utilisateur.
String
Vrai si la vérification est
positive et faux dans le cas
contraire. boolean
password : Mot de passe String
ssh2Exec
Demande au serveur
SSH d’exécuter une commande Shell.
cmd : La
commande. String
Le résultat
d’exécution de la commande.
String exception : Lever
une exception dans le cas où le
résultat retourné par la
commande est une erreur. (Vrai
par défaut) boolean
readResponse :
si elle prend vrai, on récupère le
résultat retourné par la
commande (Faux par défaut)
boolean
connect
Se connecter au serveur SSH (initialise la ressource sshCon).
Vrai en cas de succès de la connexion. boolean
disconnect
Se déconnecter du serveur SSH et libère la ressource sshCon.
Vrai en cas de succès de la déconnexion. boolean
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 69
Les méthodes suivantes: doCreateMailUserAccount (), doCreateMailUserAccount2 (),
doDeleteMailUserAccount (), doUnlockMailUserAccount (), doLockMailUserAccount (),
doChangeMailUserPassword () et doSendMail () seront choisis pour êtres exposées en
tant que services web SOAP à travers PodBridge.
La figure de la page suivante fournit une description étendue sur la logique métier caché
derrière chaque service allant du consommateur de service au système final.
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 70
SSH (22)
POP (110)
SMTP (25)
HTTP (80)
PodBridge 1.2 SOA Middleware
HTTP (80)
PB1.2 Core
SOAP web service API
PB1.2 Connector
« MailAccount.connector.php »
End system
OpenSSH and Postfix
and Dovecot on
Ubuntu server
Shell execute :
useradd … -g mail ...
Authenticate and
check privilege
Handle request
<< Include >>
Call method :
doSendMail()
Call method :
doCreateMail
UserAccount2()
Call method :
ssh2Exec()
Service
Consumer
<< Include >>
<< Include >>
Get response from
cache
<< Include >>Shell Execute :
mail -s…Tell SSH Server to
perform the operation
<< Include >>
if cached
Trace requests and
responses
<< Include >>
Mail Server
admin
Call method :
doChangeMail
UserPassword()
<< Include >>
Frontend
Get WSDLPB admin
Setup PB1.2
Monitor
transactions log
Invoke WS :
doCreateMail
UserAccount2
Invoke WS :
doDeleteMail
UserAccount
Invoke WS :
doChangeMail
UserPassword
Invoke WS :
doSendMail
Call method :
doDeleteMail
UserAccount()
<< Include >>
Call method :
doCheckPassword()
<< Include >>
Call method :
generate
generateUserName()
<< Include >>
Call method :
ifUserExists()
<< Include >>
Shell execute :
userdel -r ....
<< Include >>
Shell Execute :
usermod -p...
Figure 27 - Modélisation de la logique métier (Connecteur MailAccount)
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 71
3.2.4. Conclusion
Finalement on est arrivé à la fin de cette première phase par la conception des
connecteurs PodBridge 1.2. Chaque connecteur englobe une logique métier lui permettant
de s’adapter et dialoguer avec le système informatique dont il est conçu pour.
PodBridge se chargera de la génération des services web SOAP et des WSDL.
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 72
+connect() : boolean
+disconnect() : boolean
«interface»
PodBridgeConnectorInterface
+getLastErrorMsg() : string
+setLastError()
+setParam()
+getSessionLog()
+setSessionLog() : array
+getSessionLogCounter() : integer
#params : array
#error : array
#sessionLog : array
#sessionLogCounter : integer = 0
PodBridgeConnector
+getStudentById() : array
+updateStudentById() : boolean
+getNextId() : array
-executeSQL() : array
+connect() : boolean
+disconnect() : boolean
-conn : ressource = null
BDetu
+doForwardMACaddr() : array
+doRomoveForwordedMACaddr() : boolean
+getAccesPointInfo() : array
+connect() : boolean
+disconnect() : boolean
-regexValidator : array
APACLManager
-generateRandomPasswd() : string
+ifUserExists() : boolean
-getUnixDate() : string
+doCreateFTPUserAccount() : array
+setFTPUserAccountExpiryDate() : boolean
+setFTPUserWelcomeMsg() : boolean
+doDisableFTPUserWelcomeMsg() : boolean
+doChangeFTPUserPassword() : boolean
-doCheckPassword() : boolean
+doDeleteFTPUserAccount() : boolean
+doFTPsendFile() : boolean
-ssh2Exec() : stream
+connect() : boolean
+disconnect() : boolean
-sshCon : ressource = null
-authenticated : boolean = false
-regexValidator : array
FTPAccount
+doPrintWebPage() : boolean
-doPrintInternalDocument() : boolean
+connect() : boolean
+disconnect() : boolean
-ipp : CupsPrintIPP Object = null
IPPService
-getAccuseRef() : string
+getAccuse() : array
+ssh2Exec() : stream
+connect() : boolean
+disconnect() : boolean
-curl_handle : ressource = null
wwwsubscr
+doSendSMS() : boolean
-stripSpaces() : boolean
-ssh2Exec() : stream
+connect() : boolean
+disconnect() : boolean
-sshCon : ressource = null
-authenticated : boolean = false
-regexValidator : array
SMSService
Figure 28 – Connecteurs PodBridge (de l’établissement)
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 73
+connect() : boolean
+disconnect() : boolean
«interface»
PodBridgeConnectorInterface
+getLastErrorMsg() : string
+setLastError()
+setParam()
+getSessionLog()
+setSessionLog() : array
+getSessionLogCounter() : integer
#params : array
#error : array
#sessionLog : array
#sessionLogCounter : integer = 0
PodBridgeConnector
-generateRandomPasswd() : string
-ifUserExists() : boolean
-generateUserName() : string
-doStripAtDomain() : string
+doCreateMailUserAccount2() : array
+doCreateMailUserAccount() : array
+doChangeMailUserPassword() : boolean
-doCheckPassword() : boolean
+doDeleteMailUserAccount() : boolean
+doUnlockMailUserAccount() : boolean
+doLockMailUserAccount() : boolean
+doSendMail() : boolean
-ssh2Exec() : stream
+connect() : boolean
+disconnect() : boolean
-sshCon : ressource = null
-authenticated : boolean = false
-regexValidator : array
MailAccount
Figure 29 - Connecteur PodBridge (du RNU)
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 74
3.3. Phase 2 : Processus métier et orchestration de services
3.3.1. Introduction
Finalement, on est arrivés au niveau de la couche orchestration de services. Dans cette
phase 2ème phase de l’étude conceptuelle on s’intéressera à la conception des processus de
coordination d’un échange d’information à travers l’interaction des services web
précédemment conçus.
Notre objectif est de concevoir à travers de diagrammes d’activité (workflows) deux
processus métiers (ProcessRUById et BatchProcessRU).
3.3.2. Conception du 1er processus métier : ProcessRUById
Ce processus doit exécuter quelques procédures pour offrir à un étudiant donné par son
identifiant les différents services que proposent les systèmes informatiques de
l’établissement en se référant sur ses informations stockés dans la base de données.
Avant d’exécuter ces différentes procédures, ce processus doit automatiquement vérifier
depuis le site (inscription.edu.demo) si l’étudiant a déjà payé les frais d’inscription de
l’année en cours.
Quelques remarques :
Etats du processus :
- EXE : Processus en cours d’exécution.
- PAI : Renvoyé à la fin d’exécution. dans le cas où l’étudiant n’a pas encore
effectué le paiement des frais d’inscription.
- OK : Renvoyé à la fin d’exécution ; Succès de l’exécution de toutes les procédures.
Voici les différentes procédures que doit exécuter notre processus (ProcessRUById) :
- Mettre à jours la valeur du champ process par EXE (dans la table etudiant) pour
l’identifiant passé en paramètre.
- vérifier depuis le site inscription.edu.demo, si l’étudiant a effectué le paiement
des frais d’inscription. Si les frais d’inscription n’ont pas été payés, un message
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 75
d’alerte doit lui être envoyé par mail et SMS, ensuite le processus doit finir son
exécution et renvoyer le message ‘PAI’,
- envoyer à une imprimante partagée un job d’impression pour l’accusé de
paiement de l’étudiant (pour le service de la scolarité de l’établissement),
- si l’étudiant ne possède pas un compte mail, un nouveau compte mail doit donc
lui être créé sur le domaine RNU, ensuite les paramètres de son nouveau compte
doivent lui être envoyés par SMS.
- si l’étudiant est en informatique et ne possède pas déjà un compte FTP, alors un
nouveau compte FTP doit lui être créé, ensuite les paramètres de son nouveau
compte FTP doivent lui être envoyés sur son mail et par SMS.
- dans le cas où l’étudiant possède déjà un compte FTP, la date d’expiration de son
compte doive être étendue d’une année,
- envoyer sur son compte FTP son calendrier, ses cours et TP (en s’appuyant sur les
informations : département, spécialité et niveau).
- si l’étudiant a déjà fourni l’adresse MAC de la carte réseau sans fil de son
ordinateur portable, alors son ordinateur doit être autorisé à se connecté au
réseau sans fil de l’établissement à traves l’interface Wifi, ainsi qu’il doit être
informé par SMS et mail des paramètres du réseau Sans fil tel que (SSID, Clé),
- envoyer à l’étudiant un message de bienvenu par mail & SMS,
- mettre à jour les données de l’étudiant sur la base de donnée par les nouvelles
informations telles que : la référence de son accusé de paiement de l’année
universitaire en cours, son nouveau login FTP, sa nouvelle adresse mail et le code
(process state code) renvoyé par le process à sa fin d’exécution,
- renvoyer le message ‘OK’ (code sucés d’exécution).
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 76
Donner l’identifiant de l'étudiant
RECEIVE: ProcessRUByIdIn
Récupérer les informations
de l’étudiant depuis
la base de données
INVOKE: « getStudentById »
Récupérer la référence de l’accusé
de paiement et son URL
depuis le site inscription.edu.demo
INVOKE: « getReceipt »
[Paiement effectué]
Lancer un nouveau job d’impression
pour l’accusé de paiement
INVOKE: « doPrintWebPage »Mettre à jour la BD,
état process PAI
INVOKE: « updateStudentById »
[Paiement non effectué]
Son département
est-il ‘TI’ ?
A-t-il donné son
adresse MAC ?
Possède-il un compte FTP ?
[oui]
[non] [oui]
Crée un message welcome
pour ce compte FTP
INVOKE: « setFTPUserWelcomeMsg »
Envoyer le calendrier
,les cours & TP
INVOKE: « doFTPsendFile »
Envoyer le cour d’UML2
INVOKE: « doFTPsendFile »
Est-il niveau 2 ou plus ?
[oui] [non]
Mettre à jour le filtre MAC du
point d’accès Sans fil (Ajout)
INVOKE: «doForwardMACaddr »
[oui]
[non]
Possède-il un
compte e-mail ?
Créer un nouveau compte e-mail
INVOKE:
«doCreateMailUserAccount »
[non]
[oui]
Mettre à jour la BD
(login FTP, e-mail,refrecu et état process ‘OK’)
INVOKE: « updateStudentById »
Renvoyer OK
REPLY: ProcessRUByIdOut
[non]
Renvoyer PAI
REPLY: ProcessRUByIdOut
Envoyer les paramètres du nouveau
compte mail par SMS
INVOKE: « doSendSMS »
Envoyer les paramètres du
point d’accès par SMS
INVOKE: « doSendSMS »
Envoyer les paramètres du
point d’accès par mail
INVOKE: « doSendMail »Envoyer les paramètres du
nouveau compte FTP par SMS
INVOKE: « doSendSMS »
Envoyer les paramètres du
nouveau compte FTP par mail
INVOKE: « doSendMail »
Etendre le délai d’expiration
INVOKE:
«setFTPUserAccountExpiryDate »
Créer un compte FTP
INVOKE: « doCreateFTPUserAccount »
Envoyer un SMS de bienvenue
INVOKE: « doSendSMS »
Envoyer un mail de bienvenue
INVOKE: « doSendMail »
Mettre à jour la BD,
état process EXE
INVOKE: « updateStudentById »
Appel service web
Figure 30 - diagramme d'activité « ProcessRUById »
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 77
3.3.3. Conception du processus : BatchProcessRU
Objectif: Concevoir un processus métier permettant d’exécuter les mêmes procédures du
processus ProcessRUById sur un grand nombre d’étudiants, et de notifier l’administrateur
(celui qui lance le processus) par Mail & SMS à la fin d l’exécution.
Paramètres d’entrés :
Un paramètre filtre (chaine de caractère) doit être spécifié avant l’exécution du processus
et doit prendre l’une des valeurs suivantes : ATT22, PAI ou * (signifie ATT et PAI).
Les différents cas :
- Si filtre prend ATT : le processus parcoure seulement les identifiants possédants
un champ process égale à ATT.
- Si filtre prend PAI : le processus parcoure seulement les identifiants possédants
un champ process égale à PAI.
- Si filtre prend * : le processus parcoure seulement les identifiants possédants un
champ process égale à ATT ou PAI.
Information renvoyées :
A la fin de l’exécution du processus, les informations suivantes doivent êtres renvoyés :
- Message (Chaine de caractères) : Succes, fail.
- Code (Entier) : 0 pour Succes, 2 pour fail.
- Date et heure de lacement du processus. (DATETIME).
- Date et heure de fin d’exécution du process. (DATETIME).
22
Indique que dans la table étudiant l’identifiant possédant le champ process égale à ATT n’a été traité aucune fois par le processus ProcessRUById. (ATT est la valeur initiale du champ process à chaque nouvelle
insertion dans la table etudiant).
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 78
Donner le filtre (soit ‘PAI’, ‘ATT’ ou ‘ * ‘)
RECEIVE: BatchProcessRUIn
Renvoyer (Etat process,
date de début et de fin d’exécution)
REPLY: BatchProcessRUOut
Récupérer l’indentifiant
Suivant
INVOKE: « getNextId »
Dernier identifiant ?
[oui]
[non]
Invoquer le service (ProcessRUById)
pour l’identifiant courant
INVOKE: « ProcessRUById »
renvoie le premier identifiant
à la première itération
Notifier l’administrateur
par SMS
INVOKE: « doSendSMS »
Notifier l’administrateur
par Mail
INVOKE: « doSendMail »
Appel service web
Figure 31 - diagramme d'activité « BatchProcessRU »
3.3.4. Conclusion
Finalement on est arrivé à la fin de la 2ème phase par la conception de deux processus
métiers ProcessRUById et BatchProcessRU permettant l’orchestration des services conçus
dans la première phase.
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 79
Chapitre 4 : Réalisation
3.4. Installation & Configuration
3.4.1. Serveur FTP : ftp-etu.intranet.demo
- Ajout du domaine ftp-etu.intranet.demo dans /etc/hosts (Voir documentation
technique - 1.1)
3.4.2. Serveur CUPS : cups.intranet.demo
- Ajout du domaine cups.intranet.demo dans /etc/hosts (Voir documentation
technique - 1.1)
- Installation de CUPS Serveur et Client :
$ sudo apt-get cups cups-client
- Démarrage du serveur CUPS :
$ sudo /etc/init.d/cups start
Voir l’interface web de configuration de serveur CUPS dans la section (3.2) -
documentation technique
3.4.3. Serveur de BD PostgreSQL : postgres-83.intranet.demo
- Ajout du domaine postgres-83.intranet.demo dans /etc/hosts (Voir
documentation technique - 1.1)
- Installation de PostgreSQL :
$ sudo apt-get install postgresql-8.3
- Démarrage de PostgreSQL :
$ sudo /etc/init.d/postgresql-8.3 start
- Etapes de création du nouvel utilisateur (bdetuadmin) et schéma (bdetu) :
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 80
$ sudo -u postgres psql –h postgres-83.intranet.demo -p 5432
postgres=# create user bdetuadmin;
postgres=# create database bdetu owner bdetuadmin;
postgres=# \q
Création de la structure de la table etudiant et insertion des données de test. Voir
Documentation technique (2.1.1 pour le script de création) et (2.1.2 pour le script
d’insertion).
-- Connexion
…
postgres=# \i /home/walid/sql/create.sql
postgres=# \i /home/walid/sql/insert.sql
postgres=# \q
Lister le contenu de la table après l’insertion des données de test.
-- Connexion
…
postgres=# select * from etudiant;
Resultat :
3.4.4. Serveur web d’inscription en ligne : inscription.edu.demo
- Ajout du domaine ftp-etu.intranet.demo dans /etc/hosts (Voir documentation
technique - 1.1)
Création d’un virtualhost (Apache) dans le fichier /etc/apache2/sites-
enabled/inscription.edu.demo :
<VirtualHost *:80>
ServerName inscription.edu.demo
DocumentRoot "/var/www/projects/unstable/inscription.edu.demo"
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 81
DirectoryIndex index.php
<Directory "/var/www/projects/unstable/inscription.edu.demo">
AllowOverride All
Allow from All
</Directory>
</VirtualHost>
- redémarrage du serveur HTTP:
$ sudo /etc/init.d/apache2 restart
3.4.5. Point d’accès sans fil : ap-21. intranet.demo
- Ajout du domaine ap-21.intranet.demo dans /etc/hosts (Voir documentation
technique - 1.1)
Configuration :
- Fonction : Accès Point
- SSID : ETUDIANTS_WIRELESS
- Norme de sécurité : WPA2
- Clé de chiffrement : soaetbpm
3.4.6. Serveur mail : (ws.rnu.edu.demo)
- Ajout du domaine ws.rnu.edu.demo dans /etc/hosts (Voir documentation technique
- 1.1)
- Installation du serveur POP3/IMAP :
$ sudo apt-get install dovecot
- Démarrage du serveur POP3/IMAP :
$ sudo /etc/init.d/dovecot start
- Installation du serveur SMTP :
$ sudo apt-get install postfix
- démarrage du serveur SMTP :
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 82
$ sudo /etc/init.d/postfix start
- Installation du webmail:
$ sudo apt-get install squirrelmail
Création d’un virtualhost (Apache) dans le fichier /etc/apache2/sites-enabled/
webmail.rnu.edu.demo:
<VirtualHost *:80>
ServerName webmail.rnu.edu.demo
DocumentRoot "/usr/share/squirrelmail"
DirectoryIndex index.php
<Directory "/usr/share/squirrelmail">
AllowOverride All
Allow from All
</Directory>
</VirtualHost>
- redémarrage du serveur HTTP:
$ sudo /etc/init.d/apache2 restart
Voir capture écran de squirrelmail (écran de connexion) dans la documentation technique.
3.4.7. Modem GSM connecté au serveur Lenny : debian5-
02.intranet.demo
- Ajout du domaine debian5-02.intranet.demo dans /etc/hosts (Voir documentation
technique - 1.1)
3.4.8. PodBridge 1.2
- Ajout du domaine podbridge.intrant.demo et ws.rnu.edu.demo dans /etc/hosts
(Voir documentation technique - 1.1)
- Déploiement de PodBridge 1.2 :
$ mkdir –p /var/www/projects/unstable/podbridge && cd /var/www/projects/unstable
$ svn co https://svn.tweety.tux/podbridge/trunk podbridge
$ ./pbadmin pb-fix-perms
$ sudo -u postgres psql –h podbridge.intrant.demo
postgres=# create user podbridge;
postgres=# create database podbridge owner podbridge;
postgres=# \q
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 83
$ ./pbadmin pb-build-all-load
3.4.9. Installation de GlassFish ESB 2.1
Voir document accompagné (Glass Fish ESB 2.1 & Netbeans 6.7.1 BPEL Designer
Installation & Sample tutorial )
3.4.10. Installation des plugins SOA & BPEL pour NetBeans
Voir document accompagné (Glass Fish ESB 2.1 & Netbeans 6.7.1 BPEL Designer
Installation & Sample tutorial )
3.5. Réalisation des connecteurs
3.5.1. Exemple de réalisation d’un connecteur :
pbFTPAccountConnector
Le connecteur pbFTPAccountConnector doit êtres copié sous le répertoire :
Podbridge/plugins.
Les fichiers sous pbFTPAccountConnector/data/fixtures sont au format yml23, destinés
pour stocker la configuration (pour la génération du WSDL) ainsi que les paramètres par
défaut du connecteur.
pbFTPAccountConnector/lib/connector contient la classe « FTPAccount.connector.php »
qui implémente les différentes méthodes qui seront exposées par PodBridge en tant que
services web.
23
Extension pour les fichiers basés sur Yaml (Yaml Ain’ t Markup Language)
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 84
Figure 32 - Arborescence du projet PodBridge - Netbeans IDE
Ajout du connecteur pbFTPAccountConnector à PodBridge (Génération des services web, et
WSDL) :
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 85
3.5.2. Test du service web doCreateFTPUserAccount par
l’utilitaire SoapUI 3.0.1
Invocation du service web doCreateFTPUserAccount – XML SOAP Request Message :
doCreateFTPUserAccount Réponse - XML SOAP Response Message:
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 86
Accès au nouveau compte FTP:
Re-Invocation du même service web doCreateFTPUserAccount utilisant les mêmes
paramètres – XML SOAP Request Message :
Réponse (Utilisateur déjà existant / Code erreur : 804) – SOAP Faut Message:
Tentative d’invocation du service web doCreateFTPUserAccount (Avec une clé erronée):
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 87
Réponse (Erreur d’authentification) – SOAP Faut Message:
L’illustration de la page suivante donne une vue générale sur l’intégration de chacun des
systèmes visés au moyen de PodBridge1.2
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 88
Réseau National Universitaire (WAN)
IPP : 631 SSH : 22SSH : 22 Telnet : 23 Pgsql : 5432
BD
étu
dia
nts
Po
stg
reS
QL
po
stg
res-8
3.in
tra
ne
t.d
em
o
Réseau local de l’établissement (LAN)
AP
AC
LM
an
ag
er
AP
AC
LM
an
ag
er.
co
nn
ec
tor.
ph
p
IPP
Se
rvic
e
IPP
Se
rvic
e.c
on
ne
cto
r.p
hp
BD
be
tu
BD
etu
.co
nn
ec
tor.
ph
p
SM
SS
erv
ice
SM
SS
erv
ice.c
on
ne
cto
r.p
hp
FT
PA
cc
ou
nt
FT
PA
cc
ou
nt.
co
nn
ec
tor.
ph
p
Po
int
d’a
cc
ès
Sa
ns
Fil
ap
-21
.in
tra
ne
t.d
em
o
Serveurs d’application,
Ressources
Systèmes hétérogènes
SSH : 22
Ma
ilA
cc
ou
nt
Ma
ilA
cc
ou
nt.
co
nn
ec
tor.
ph
p
Operation
X
Operation
Y
Operation
Z
WS
SOAP
Operation
X
Operation
Y
Operation
Z
WS
SOAP
Operation
X
Operation
Y
Operation
Z
WS
SOAP
Operation
X
Operation
Y
Operation
Z
WS
SOAP
Connecteurs PodBridge
Logique métier
Middleware SOA – PodBridge1.2Intermédiation entre serveurs d’application et
consommateurs de services
WSDL & Services Web SOAPSOAP endpoint, description, XML,
XSD..
Protocoles de
communication
Règles de communication
HTTP : 80
ww
ws
ub
sc
r
ww
ws
ub
sc
r.c
on
ne
cto
r.p
hp
Operation
X
Operation
Y
Operation
Z
WS
SOAP
PodBridge 1.2 (Middleware SOA) – podbridge.intranet.demo PodBridge 1.2
ws.rnu.edu.demo
Se
rve
ur
CU
PS
cu
ps.in
tra
ne
t.d
em
o
Mo
de
m G
SM
co
nn
ec
té
à u
n s
erv
eu
r D
eb
ian
Le
nn
y
de
bia
n5
-02
.in
tra
ne
t.d
em
o
Operation
X
Operation
Y
Operation
Z
WS
SOAP
Ad
min
. P
od
Bri
dg
e
Ad
min
. P
od
Bri
dg
e
Se
rve
ur
Ma
il –
SM
TP
& P
OP
3
rnu
.ed
u.d
em
o
Se
rve
ur
We
b d
u s
ite
d’in
sc
rip
tio
n u
niv
ers
ita
ire
inscrip
tio
n.e
du
.de
mo
Ad
min
. S
ys
tèm
e
Ad
min
istr
ate
ur
Sy
stè
me
Se
rve
ur
FT
P
ftp
-etu
.in
tra
ne
t.d
em
o
Consommateur
de service
Operation
X
Operation
Y
Operation
Z
WS
SOAP
Consommateur
de service
Figure 33 –1ère
phase de l’urbanisation des deux réseaux (Services Web)
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 89
3.6. Réalisation des processus métiers - phase 2
Déploiement de ProcessRUById et BatchProcessRU :
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 90
ProcessRUById
WS
SOAP
GlassFish ESB 2.1composant sun-bpel-engine
bpel-engine.intranet.demo
BatchProcessRU
WS
SOAP
Operation
X
Operation
Y
Operation
Z
WS
SOAP
Operation
X
Operation
Y
Operation
Z
WS
SOAP
Operation
X
Operation
Y
Operation
Z
WS
SOAP
Operation
X
Operation
Y
Operation
Z
WS
SOAP
Operation
X
Operation
Y
Operation
Z
WS
SOAP
Operation
X
Operation
Y
Operation
Z
WS
SOAP
Operation
X
Operation
Y
Operation
Z
WS
SOAP
Receive
invoke
Invoke
Processinvoke
invoke
Reply
BP
EL
BatchProcessRU
Receive
invoke
invoke
invoke
Reply
BP
EL
ProcessRUById
invoke
invoke
Messages XML SOAP
(Requête et réponse)
Figure 34 –Déploiement de ProcessRUById et BatchProcessRU
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 91
3.6.1. Test de ProcessRUById (Invocation du service composite)
Requête :
POST http:// sun-bpel-engine.intranet.demo:9080/processRUByIdService HTTP/1.1 Accept-Encoding: gzip,deflate Content-Type: application/soap+xml;charset=UTF-8
User-Agent: Jakarta Commons-HttpClient/3.1 Host: sun-bpel-engine.intranet.demo:9080 Content-Length: 281
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:proc="processRUByIdCA">
<soap:Header/>
<soap:Body>
<proc:processRUByIdOperation>
<identifiant>12345678</identifiant>
</proc:processRUByIdOperation>
</soap:Body>
</soap:Envelope>
Réponse :
HTTP/1.1 200 OK Content-Type: application/soap+xml;charset="utf-8" Transfer-Encoding: chunked Date: Thu, 14 Jan 2010 13:58:02 GMT <?xml version="1.0" ?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
<env:Body>
<processRUByIdOperationResponse>
<statut xmlns:msgns="http://j2ee.netbeans.org/wsdl/processRUById/processRUById">OK</statut>
</processRUByIdOperationResponse>
</env:Body>
</env:Envelope>
Voici les informations de l’étudiant ayant l’identifiant ‘12345678’ après l’exécution du
processus. (Depuis BD – table étudiant)
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 92
Lancement d’un job d’impression pour l’accusé de paiement :
Boite de réception :
Paramètres du compte FTP (reçu par mail) :
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 93
Notification par SMS – Message de bienvenu :
Compte FTP :
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 94
La connexion au réseau sans fil (ETUDIANT_WIRELESS) est autorisée :
3.6.2. Test de BatchProcessRU (Invocation du service
composite)
Requête :
POST http://sun-bpel-engine.intranet.demo:9080/BatchProcessRUService HTTP/1.1
Accept-Encoding: gzip,deflate Content-Type: application/soap+xml;charset=UTF-8 User-Agent: Jakarta Commons-HttpClient/3.1 Host: sun-bpel-engine.intranet.demo:9080
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 95
Content-Length: 382
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:bat="BatchProcessRUCA" xmlns:bat1="http://xml.netbeans.org/schema/BatchProcessRUTypes.xsd">
<soap:Header/>
<soap:Body>
<bat:BatchProcessRUOperation>
<part1>
<bat1:filter>PAI</bat1:filter>
</part1>
</bat:BatchProcessRUOperation>
</soap:Body>
</soap:Envelope>
Réponse :
HTTP/1.1 200 OK Content-Type: application/soap+xml;charset="utf-8" Transfer-Encoding: chunked Date: Thu, 14 Jan 2010 13:48:19 GMT
<?xml version="1.0" ?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
<env:Body>
<BatchProcessRUOperationResponse>
<part1 xmlns:msgns="http://j2ee.netbeans.org/wsdl/BatchProcessRU/BatchProcessRU">
<ns0:message xmlns:ns0="http://xml.netbeans.org/schema/BatchProcessRUTypes.xsd">success</ns0:message>
<ns0:statecode xmlns:ns0="http://xml.netbeans.org/schema/BatchProcessRUTypes.xsd">0</ns0:statecode>
<ns0:date xmlns:ns0="http://xml.netbeans.org/schema/BatchProcessRUTypes.xsd">
<ns0:start>2010-01-14T14:41:08.34+01:00</ns0:start>
<ns0:end>2010-01-14T14:48:19.76+01:00</ns0:end>
</ns0:date>
</part1>
</BatchProcessRUOperationResponse>
</env:Body>
</env:Envelope>
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 96
3.7. Développement des applications
Réseau National Universitaire (WAN)
ProcessRUById
WS
SOAP
GlassFish ESB 2.1composant sun-bpel-engine
bpel-engine.intranet.demo
BatchProcessRU
WS
SOAP
IPP : 631 SSH : 22SSH : 22 Telnet : 23 Pgsql : 5432
BD
étu
dia
nts
Po
stg
reS
QL
po
stg
res-8
3.in
tra
ne
t.d
em
o
Réseau local de l’établissement (LAN)
AP
AC
LM
an
ag
er
AP
AC
LM
an
ag
er.
co
nn
ec
tor.
ph
p
IPP
Se
rvic
e
IPP
Se
rvic
e.c
on
ne
cto
r.p
hp
BD
be
tu
BD
etu
.co
nn
ec
tor.
ph
p
SM
SS
erv
ice
SM
SS
erv
ice
.co
nn
ec
tor.
ph
p
FT
PA
cc
ou
nt
FT
PA
cc
ou
nt.
co
nn
ec
tor.
ph
p
Po
int
d’a
cc
ès
Sa
ns
Fil
ap-2
1.in
tra
ne
t.d
em
oServeurs d’application,
Ressources
Systèmes hétérogènes
SSH : 22
Ma
ilA
cc
ou
nt
Ma
ilA
cc
ou
nt.
co
nn
ec
tor.
ph
p
Operation
X
Operation
Y
Operation
Z
WS
SOAP
Operation
X
Operation
Y
Operation
Z
WS
SOAP
Operation
X
Operation
Y
Operation
Z
WS
SOAP
Operation
X
Operation
Y
Operation
Z
WS
SOAP
Connecteurs PodBridge
Logique métier
WSDL & Services Web
SOAPSOAP endpoint, description,
XML, XSD..
Protocoles de
communication
Règles de communication
SSH : 80
ww
ws
ub
sc
r
ww
ws
ub
sc
r.c
on
ne
cto
r.p
hp
Operation
X
Operation
Y
Operation
Z
WS
SOAP
PodBridge 1.2 (Middleware SOA) – podbridge.intranet.demo PodBridge 1.2
ws.rnu.edu.demo
Se
rve
ur
CU
PS
cu
ps.in
tra
ne
t.d
em
o
Mo
de
m G
SM
co
nn
ec
té
à u
n s
erv
eu
r D
eb
ian
Le
nn
y
de
bia
n5
-02
.in
tra
ne
t.d
em
o
Operation
X
Operation
Y
Operation
Z
WS
SOAP
Se
rve
ur
Ma
il –
SM
TP
& P
OP
3
rnu.e
du.d
em
o
Se
rve
ur
We
b d
u s
ite
d’in
sc
rip
tio
n u
niv
ers
ita
ire
inscrip
tio
n.e
du.d
em
o
Se
rve
ur
FT
P
ftp
-etu
.in
tra
ne
t.d
em
o
Operation
X
Operation
Y
Operation
Z
WS
SOAP
Receive
invoke
Invoke
Processinvoke
invoke
Reply
BP
EL
BatchProcessRU
Receive
invoke
invoke
invoke
Reply
BP
EL
ProcessRUById
invoke
invoke
start-pru-09-
10-att.shdeleteftp.pl
ping.java
formulaire.php
Messages XML SOAP
(Requête et réponse)
Middleware SOA –
PodBridge1.2Intermédiation entre serveurs
d’application et consommateurs
de services
Figure 35 - SI après urbanisation
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 97
3.7.1. Appel web-service SOAP en PHP5
Exemple :
1 <?php
2
3 //init
4 $client = new SoapClient("http://podbridge.intranet.demo/projects/unstable/podbridge/web/index.php/wsdl/auto/691292877050480f54b5/getStudentById");
5
6 try {
7
8 //Arguements (paramètres d'entrées)
9 $arguments=array(
10 'key'=>'691292877050480f54b5',
11 'sync'=>'1',
12 'id'=>'12345678'
13 ) ;
14
15 //Apel de la méthode getStudentById
16 $result = $client->getStudentById($arguments);
17
18 //Affiche toute la réponse - Type: stdClass Object
19 print_r ($result);
20 //Affiche status - Type: stdClass Object
21 print_r ($result->status);
22
23
24 //Affiche le message renvoyé par podBridge (reponse)
25 echo $result->status->message ."\n";
26 //Affiche le prénom
27 echo $result->response->prenom."\n";
28 //Affiche l'adresse email
29 echo $result->response->email."\n";
30
31 }
32 catch (SoapFault $e) {
33 echo '['.$e->getCode().']';
34 echo $e->getMessage();
35 }
36
37 ?>
Voir source et capture d’écran de l’application web PHP (formulaire info etudiant) dans la
documentation technique.
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 98
3.7.2. Exemple d’appel web-service SOAP en Perl (Suppression
d’un compte FTP)
#!/usr/bin/perl -w
#
# Ce code permet d’appeler le service web (doDeleteFTPUserAccount) exposé par podbridge
#
use SOAP::Lite;
my $soap = SOAP::Lite
-> uri ('urn:ftpacntns')
-> proxy ('http://podbridge.intranet.demo/projects/unstable/podbridge/web/api/index.php?wsdl');
my $res = $soap ->doDeleteFTPUserAccount(SOAP::Data->name('key' => '691292877050480f54b5'),SOAP::Data->name('user' => 'etu_12345678'));
unless ($res->fault) {
print $res->result(),"\n";
}else{
print 'FAULT CODE : ',$res->faultcode,"\n",'FAULT MESSAGE : ',$res->faultstring,"\n";
}
3.7.3. Appel web-service SOAP en JAVA SE – Swing (Invocation
du service Ping (test PodBridge))
66 ………
67 ………
68 pbns.PodBridgePingService service = new pbns.PodBridgePingService();
69
70 QName portQName = new QName("urn:pbns" , "PodBridgePingPort");
71 String req = "<ping xmlns=\"urn:pbns\"><key>691292877050480f54b5</key><sync>1</sync></ping>";
72
73 try { // Call Web Service Operation
74 Dispatch<Source> sourceDispatch = null;
75 sourceDispatch = service.createDispatch(portQName, Source.class, Service.Mode.PAYLOAD);
76 Source result = sourceDispatch.invoke(new StreamSource(new StringReader(req)));
77 String resultString = sourceToXMLString(result);
78 System.out.println("Received xml: \n" + resultString);
79 } catch (Exception ex) {
80 System.out.println("An error has occured: \n" + ex.getMessage());
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 99
81 }
82
83 ………
84 ………
3.7.4. Appel web-service SOAP en Shell (Invocation du service
composite BatchProcessRU)
Fichier (soap-request.xml) :
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:bat="BatchProcessRUCA" xmlns:bat1="http://xml.netbeans.org/schema/BatchProcessRUTypes.xsd">
<soap:Header/>
<soap:Body>
<bat:BatchProcessRUOperation>
<part1>
<bat1:filter>ATT</bat1:filter>
</part1>
</bat:BatchProcessRUOperation>
</soap:Body>
</soap:Envelope>
Fichier script Shell (start-pru-09-10-att.sh) :
#!/bin/bash
curl http://sun-bpel-engine.intranet.demo/projects/unstable/podbridge/web/api/index_dev.php -d @soap-request.xml
3.8. Environnement de travail
3.8.1. Matériel utilisé
Ordinateur portable (Toshiba A210-16C) :
- Microprocesseur : 2x1.8 GHz, AMD Athlon X2 - Architecture 64 bits,
- Mémoire vivre : 3 Go DDR2,
- Disque dur : 12O Go SATA,
- Contrôleur graphique : ATI X1200 ~320 Mo,
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 100
- Carte réseau : Ethernet LAN 10/100Mbps (interface RJ45).
Imprimante Laser (Lexmark E120)
3.8.2. Logiciels utilisés :
SquirrelMail 1.4.15 (Client mail sur navigateur web) :
Site web officiel : http://squirrelmail.org
SquirrelMail est un webmail écrit en PHP4. Il supporte les
protocoles POP, IMAP et SMTP, et toutes les pages générées le
sont en pur HTML (sans aucun JavaScript),ceci afin d'être
compatible avec le maximum de navigateurs.
Dovecot 1.1.11 (Serveur POP3/IMAP) :
Site web officiel : http://squirrelmail.org
Postfix (Serveur SMTP) :
Site web officiel : http://squirrelmail.org
Apache 2.2.11 (Serveur HTTP) :
Site web officiel : http://www.apache.org
Apache HTTP Server, est un logiciel de serveur HTTP produit par
l'Apache Software Foundation. C'est le serveur HTTP le plus populaire du
Web. C'est un logiciel libre avec un type spécifique de licence, nommée
licence Apache.
PostgreSQL 8.3 (Serveur & Client) :
Site web officiel : http://www.postgresql.org
PostgreSQL est un système de gestion de base de données
relationnelle et objet(SGBDRO). C'est un outil libre disponible selon les
termes d'une licence de type BSD. PostgreSQL n'est pas contrôlé par une
seule entreprise, mais est fondé sur une communauté mondiale de
développeurs et d'entreprises.
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 101
proFTPD 1.3.1 (Serveur FTP) :
Site web officiel : http://www.proftpd.org
ProFTPd est un serveur FTP libre. Il est puissant et parfaitement
sécurisé. Il est distribué selon les termes de la licence GNU GPL.
Son architecture est modulaire, ce qui a permis d'écrire des extensions pour le support de
la cryptographie SSL/TLS (protocole FTPS) et l'extension de l'authentification via des bases
RADIUS, LDAP ou SQL.
OpenSSH (Serveur SSH) :
Site web officiel : http://www.openssh.com
OpenSSH (OpenBSD Secure Shell) est un ensemble d'outils informatiques
libres permettant des communications sécurisées sur un réseau informatique
en utilisant le protocole SSH.
Créé comme alternative Open Source à la suite logicielle proposée par la société SSH
Communications Security, OpenSSH est développé par l'équipe d'OpenBSD, dirigée par son
fondateur.
CUPS (Serveur ….) :
Site web officiel : http://www.cups.org
CUPS est l’acronyme de (Common Unix Printing System) est un système
modulaire d'impression informatique pour les systèmes d'exploitation Unix et
assimilés. Tout ordinateur qui utilise CUPS peut se comporter comme un serveur
d'impression ; il peut accepter des documents envoyés par d'autres machines
(ordinateurs clients), les traiter, et les envoyer à l'imprimante qui convient.
Ubuntu 9.04 (Jaunty Jackalope) :
Site web officiel : http://www.ubuntu.com
Ubuntu est une distribution Linux libre fondé sur Debian (basé sur GNU/Linux)
et commandité par la société Canonical. Ubuntu Server est une version pour
serveur.
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 102
SoapUI 3.0.1 :
Site web officiel : http://www.soapui.org
SoapUI est outils de test de services web pour l’architecture SOA
écris en java et distribué sous licence LGPL, il offre une multitude de
fonctionnalité sue les services web tel que les inspecter, les invoquer, simuler...
Netbeans IDE 6.8 :
Site web officiel : http://www.netbeans.org
NetBeans est un environnement de développement intégré (IDE)
pour Java, placé en open source par Sun sous licence CDDL et GPLv2.
En plus de Java, NetBeans permet également de supporter différents
autres langages, comme Python, C, C++, XML, Ruby, PHP et HTML. Il comprend toutes les
caractéristiques d'un IDE moderne (éditeur en couleur, projets multi -langage, refactoring,
éditeur graphique d'interfaces et de pages web). Conçu en Java, NetBeans est disponible
sous Windows, Linux, Solaris (sur x86 et SPARC), Mac OS X et Open VMS.
PHP 5.2.6 :
Site web officiel : http://www.php.net
PHP (sigle de PHP: Hypertext Preprocessor), est un langage de scripts
libre principalement utilisé pour produire des pages Web dynamiques via un
serveur HTTP, mais pouvant également fonctionner comme n'importe quel langage
interprété de façon locale, en exécutant les programmes en ligne de commande. PHP est un
langage impératif disposant depuis la version 5 de fonctionnalités de modèle objet
complètes. En raison de la richesse de sa bibliothèque, on désigne parfois PHP comme une
plate-forme plus qu'un simple langage.
Symfony 1.0.22-PRE (Framework) :
Site web officiel : http://symfony-project.org
Symfony est un Framework MVC « Modèle-Vue-Contrôleur » libre
entièrement écrit en PHP 5. En tant qu’un Framework, il facilite et
accélère le développement des sites et d'applications Internet et Intranet.
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 103
Symfony intègre Proprel qui est lui aussi un Framework de mapping objet relationnel «
ORM » offrant une technique de programmation informatique qui crée l'illusion d'une base
de données orientée objet à partir d'une base de données relationnelle en définissant des
correspondances entre cette base de données et les objets du langage utilisé. On pourrait le
désigner par « correspondance entre monde objet et monde relationnel ».
Les fichiers de configuration employés par Symfony sont au format YAML qui est un
langage de sérialisation de données comme XML mais plus humain et facile interpréter.
GlassFish ESB 2.1 :
Site web officiel : http://glassfish.java.net
PodBridge 1.2 :
Site web officiel : http://www.tritux.com
PodBridge est un middleware qui favorise une évolutivité
des systèmes, applications et données, qui permet
d'étendre, d'augmenter ou de réallouer les ressources
conformément aux contraintes et à la croissance du marché par plusieurs fonctions : Mettre
en place un écosystème composé d'applications hétérogènes, assurant la sécurité d’échange
d'informations et l’enregistrement complet d’un suivi/traçabilité des flux de données et de
gestion de processus, pour renforcer la connaissance des mouvements d'entrée/sortie.
Développer des connecteurs centralisés ou distribués permettant d'interfacer des
applications utilisant des protocoles de communication différents. En effet, un seul
connecteur suffit pour communiquer plusieurs informations.
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle
ISET Djerba | TriTux PAGE 104
Figure 36 - Architecture de PodBridge 1.2
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Perspective
ISET Djerba | TriTux PAGE 105
4. Perspective
De nombreuses perspectives peuvent être envisagées comme suites à ce travail .
Par le manque de temps, on n’a pu se concentrer que sur un seul système d’information,
mais il est plus intéressant si on s’intéresse à urbaniser d’autres systèmes informatiques
géographiquement répartis et de nature de services différents. On peut même imaginer une
multitude d’applications suite à l’interaction entre les différents services qui peuvent êtres
fournis par l’office des services universitaires (hébergement, restaurants, inscription..), la
Poste (service de paiement en ligne), le site du CNS (Conseil National de la Statistique), et
encore d’autres…
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Liste des abréviations
ISET Djerba | TriTux PAGE 106
5. Liste des abréviations
ACL............................................................................................................ Access Control List
AOS ........................................................................................ Architecture Orientée Services
API ..................................................................................Application Programming Interface
BD ................................................................................................................Base de Données
BPEL ............................................................................ Business Process Execution Language
BPEL4WS........................................ Business Process Execution Language For Web Services
BPM .......................................................................................Business Process Management
BSD ........................................................................................ Berkeley Software Distribution
CEO ..................................................................................................... Chief Executive Officer
CLI ................................................................................................... Command Line Interface
CNS .................................................................................... Conseil National de la Statistique
CUPS ..................................................................................... Common UNIX Printing System
DB .......................................................................................................................... Data Base
EJB .......................................................................................................... Enterprise JavaBean
FTP ........................................................................................................ File Transfer Protocol
GNU ................................................................................................................ Gnu’s Not Unix
GPL...................................................................................................... General Public License
GSM ............................................................................................... Global System for Mobile
HTTP ..........................................................................................HyperText Transfer Protocol
HTTPS............................................................................. HyperText Transfer Protocol Secure
IDE .............................................................................Integrated Development Environment
IIP ................................................................................................... Internet Printing Protocol
JDK ........................................................................................................Java Development Kit
LDAP .......................................................................... Lightweight Directory Access Protocol
MAC .................................................................................................. Medium Access Control
MMS ...................................................................................... Multimedia Messaging Service
MVC .................................................................................................... Model View Controller
NTIC ................................Nouvelles Technologies de l'Information et de la Communication
OASIS ....................................Organization for the Advancement of Structured Information
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Bibliographie
ISET Djerba | TriTux PAGE 107
ORM............................................................................................. Object Relational Mapping
PHP ............................................................................................PHP Hypertext Preprocessor
POP ......................................................................................................... Post Office Protocol
POP3 ........................................................................................Post Office Protocol version 3
RMI ............................................................................................. Remote Method Invocation
RNU......................................................................................... Réseau National Universitaire
RPC..................................................................................................... Remote Procedure Call
SARL .................................................................... Société Anonyme à Responsabilité Limitée
SGBD ......................................................................Système de Gestion de Base de Données
SI .........................................................................................................Système d'Information
SMS .................................................................................................. Short Messaging Service
SMTP....................................................................................... Simple Mail Transfer Protocol
SOA ......................................................................................... Service Oriented Architecture
SOAP .......................................................................................Simple Object Access Protocol
SQL.............................................................................................. Structured Query Language
SSH.......................................................................................................................Secure SHell
SSID........................................................................................................Service Set IDentifier
SSII ....................................................... Société de Service et d’Ingénierie de l’Informatique
SVN .......................................................................................................................SubVersioN
UDDI ........................................................ Universal Description, Discovery and Integration
UML ............................................................................................ Unified Modeling Language
URI ............................................................................................. Uniform Resource Identifier
URL ............................................................................................... Uniform Resource Locator
WS ...................................................................................................................... Web Service
WSDL ............................................................................. Web Services Description Language
WS-I .........................................................................................Web Services Interoperability
XML...........................................................................................eXtensible Markup Language
XSD .................................................................................................... XML Schema Definition
XSLT ........................................................... eXtensible Stylesheet Language Transformation
YAML........................................................................................ Yaml Ain’ t Markup Language
Rapport PFE Urbanisation d’un SI universitaire SOA & BPM Walid KARRAY | 2009 - 2010 Bibliographie
ISET Djerba | TriTux PAGE 108
6. Bibliographie
SOA and WS-BPEL par Yuli Vasiliev et packt publishing - ISBN 13 978-1-847192-70-7
Architecture Orientée Services : Démystification – Khaled BEN DRISS
http://www.tritux.com/index.php?option=com_content&task=view&id=21
http://www.softwareagility.gr/index.php?q=node/22
http://www.developer.com/services/article.php/3609381/An-Introduction-to-BPEL.htm
http://fr.wikipedia.org/wiki/XML-RPC
http://es.wikipedia.org/wiki/WS-BPEL
http://en.wikipedia.org/wiki/Web_service
http://en.wikipedia.org/wiki/Web_Services_Description_Language
http://fr.wikipedia.org/wiki/Urbanisation_(système_d'information)
http://en.wikipedia.org/wiki/System_integration
http://fr.wikipedia.org/wiki/Soa
http://fr.wikipedia.org/wiki/SOAP
http://fr.wikipedia.org/wiki/Proc%C3%A9dure_d%27entreprise
http://fr.wikipedia.org/wiki/Middlewares
Urbanisation d’un système d’information universitaire
SOA & BPM
M. WALID KARRAY
RRééssuumméé :: Ce rapport s'inscrit dans la préparation du Projet de Fin d' Etudes à l’Institut Supérieur
des Etudes Technologiques - ISET Djerba - 2009/2010. Le Projet a été réalisée dans la Société
''Tritux''- Tunis et vise à urbaniser les systèmes d'information académique et la gestion des données
sous les architectures de S.O.A et du B.P.M.
La migration vers l'Architecture Orientée Services ainsi qu'avec Business Process Management
permet la réorganisation des systèmes d'information de l'entreprise et la conformité rapide et
constante avec l'environnement évolutif.
Le projet est consacré totalement aux axes de l'architecture S.O.A pour générer une
fonctionnalité d'un ensemble de fonctions de base (Services) avec des composants afin de créer un
schéma d'interactions entre ces services.
Avec S.O.A et B.P.M, des efforts considérables ont été déployés pour garantir enfin un système
évolutif de l'information basée sur des composants connectés, sécurisé, facile à maintenir et à se
conformer aux normes standards.
MMoottss ccllééss :: Urbanisation, intergiciel, AOS, BPM, Services web, BPEL, orchestration.
AAbbssttrraacctt :: The present report comes within the preparation of the Final Project Studies at the
Higher Institute of Technological Studies - I.S.E.T Djerba - 2009/2010. It was carried at Tritux
Company - Tunis and aims at urbanizing the academic information systems and data management
under S.O.A architecture and B.P.M.
The migration to Service Oriented Architecture altogether with Business Process Management
helps reorganize the information systems of the company and enable for quick and constant
conformity with the changing environment.
The project makes total use of S.O.A paradigms to generate functionality into a set of basic
functions, called Services with definite components to finally create pattern of interactions between
those services. Within S.O.A and B.P.M, considerable attempts have been made to finally guarantee a
scalable Information System based on connected components, secure, easy to maintain and conform
to standards norms.
KKeeyywwoorrddss :: Urbanization, middleware, SOA, BPM, Web services, BPEL, orchestration.
DOCUMENTATION TECHNIQUE
Fichiers de configuration
Codes sources
Captures d’écran
Intitulé du rapport PFE :
Urbanisation d’un Système d’information universitaire SOA & BPM (AU. 2009/2010)
Effectué à : Tritux Réaliser par : Walid Karray
Table des matières TABLE DES MATIERES....................................................................................................................................................... 2
1. FICHIERS DE CONFIGURATION.................................................................................................................. 3
1.1. ETC/HOSTS (RESOLUTION D'ADRESSE) ................................................................................................................. 4
1.2. ETC/POSTFIX/MAIN.CF (CONFIGURATION DE POSTFIX - SMTP SERVER)............................................................... 5
1.3. ETC/APACHE2/APACHE2.CONF (CONFIGURATION D’APACHE) ............................................................................. 6
1.4. ETC/PHP5/APACHE2/PHP.INI (CONFIGURATION DE PHP) .................................................................................. 8
2. CODES SOURCES ........................................................................................................................................ 12
2.1. SCRIPTS SQL ................................................................................................................................................... 13
2.1.1. Création (create.sql) ............................................................................................................................. 13
2.1.2. Insertion (insert.sql) .............................................................................................................................. 15
2.2. CODES SOURCES DES CONNECTEURS PODBRIDGE 1.2........................................................................................ 16
2.2.1. Classe du connecteur : APACLManager ............................................................................................ 16
2.2.2. Classe du connecteur : BDetu.............................................................................................................. 18
2.2.3. Classe du connecteur : pbFTPAccountConnector ............................................................................ 24
2.2.4. Classe du connecteur : pbIPPServiceConnector ............................................................................... 34
2.2.5. Classe du connecteur : pbMailA ccountConnector........................................................................... 37
2.2.6. Classe du connecteur : pbSMSServiceConnector ............................................................................. 49
2.2.7. Classe du connecteur : pbwwwsubscrConnector............................................................................. 50
2.3. FICHIERS WSDL .............................................................................................................................................. 53
2.3.1. WSDL exposé par PodBridge1.2 sur « podbridge.intranet.demo » .............................................. 53
2.3.2. WSDL exposé par PodBridge1.2 sur « ws.rnu.edu.demo » ............................................................ 74
2.3.3. WSDL du service « ProcessRUById » .................................................................................................. 85
2.3.4. WSDL du service « BatchProcessRU » ............................................................................................... 86
2.4. FICHIER XSD (DEFINITION DES PARAMETRES D’E/S DU PROCESSUS BATCHPROCESSRU).................................... 87
2.5. FICHIERS BPEL ................................................................................................................................................ 88
2.5.1. Fichier source : ProcessRUById.bpel .................................................................................................. 88
2.5.2. Fichier Source : BatchProcessRU.bpel .............................................................................................. 110
2.6. CODE SOURCE DE L’APPLICATION PHP (FORMULAIRE INFO ETUDIANT) ............................................................. 116
3. CAPTURES D’ECRAN ................................................................................................................................ 119
3.1. SQUIRRELMAIL (HTTP://WEBMAIL.RNU.EDU.DEMO) ...................................................................................... 120
3.2. CUPS WEB ADMINISTRATION (HTTP://CUPS.INTRANET.DEMO:631) .............................................................. 120
3.3. SITE WEB D’INSCRIPTION UNIV. EN LIGNE - (HTTP://INSCRIPTION.EDU.DEMO) .................................................. 121
3.4. SOAPUI 3.0.1............................................................................................................................................... 121
3.5. PODBRIDGE 1.2 (INTERFACES D’ADMINISTRATION)......................................................................................... 122
3.6. PROJET PROCESSRUBYID (QUELQUES CAPTURES D’ECRANS)........................................................................... 128
3.7. PROJET BATCHPROCESSRU (QUELQUES CAPTURES D’ECRANS) ........................................................................ 132
3.8. APPLICATION WEB PHP (FORMULAIRE INFO ETUDIANT) .................................................................................. 133
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 3
1. FICHIERS DE
CONFIGURATION
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 4
1.1. /etc/hosts (résolution d'adresse)
#Par défaut
127.0.0.1 localhost.localdomain localhost
# ~~~~~~~ LAN de l'établissement
#Serveur FTP
127.0.0.1 etu-ftp.intranet.demo
#Serveur PostgreSQL
127.0.0.1 postgres-83.intranet.demo
#Point d'accès sans fil
127.0.0.1 ap21.intranet.demo
#Middleware SOA : PodBridge
127.0.0.1 podbridge.intranet.demo
#Glassfish ESB 2.1 Server
127.0.0.1 sun-bpel-engine.intranet.demo
#Serveur Cups
127.0.0.1 cups.intranet.demo
#SMS
127.0.0.1 sms.intranet.demo
#Formulaire (App PHP)
formulaire.intranet.demo
# ~~~~~~~ WAN - RNU (Réseau National Universitaire)
#Site web d'inscription en ligne
127.0.0.1 inscription.edu.demo
#SMTP & POP3
127.0.0.1 rnu.edu.demo
#Webmail (client mail)
127.0.0.1 webmail.rnu.edu.demo
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 5
#Middleware SOA : PodBridge
127.0.0.1 ws.rnu.edu.demo
1.2. /etc/postfix/main.cf (Configuration de Postfix - SMTP Server)
myhostname = rnu.edu.demo
mydomain = rnu.edu.demo
mydestination = $mydomain $myhostname localhost.$mydomain
masquerade_domains = $mydomain
# See /usr/share/postfix/main.cf.dist for a commented, more complete version
# Debian specific: Specifying a file name will cause the first
# line of that file to be used as the name. The Debian default
# is /etc/mailname.
myorigin = rnu.edu.demo
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
# appending .domain is the MUA's job.
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
readme_directory = no
# TLS parameters
smtpd_tls_cert_file = /etc/ssl/certs/ssl-mail.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-mail.key
smtpd_use_tls = yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 6
recipient_delimiter = +
default_transport = error
relay_transport = error
home_mailbox = Maildir/
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/dovecot-auth
smtpd_sasl_authenticated_header = yes
smtpd_sasl_local_domain = $myhostname
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = reject_unknown_sender_domain reject_unknown_recipient_domain reject_unauth_pipelining permit_mynetworks permit_sasl_authenticated reject_unauth_destination
smtpd_sender_restrictions = reject_unknown_sender_domain
mailbox_command = /usr/lib/dovecot/deliver -c /etc/dovecot/dovecot-postfix.conf -n -m "${EXTENSION}"
smtp_use_tls = yes
smtpd_tls_received_header = yes
smtpd_tls_mandatory_protocols = SSLv3, TLSv1
smtpd_tls_mandatory_ciphers = medium, high
smtpd_tls_auth_only = yes
tls_random_source = dev:/dev/urandom
1.3. /etc/apache2/apache2.conf (Configuration d’Apache)
ServerRoot "/etc/apache2"
LockFile /var/lock/apache2/accept.lock
PidFile ${APACHE_PID_FILE}
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 7
</IfModule>
<IfModule mpm_worker_module>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
AccessFileName .htaccess
<Files ~ "^\.ht">
Order allow,deny
Deny from all
</Files>
DefaultType text/plain
HostnameLookups Off
ErrorLog /var/log/apache2/error.log
LogLevel warn
Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf
Include /etc/apache2/httpd.conf
Include /etc/apache2/ports.conf
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
CustomLog /var/log/apache2/other_vhosts_access.log vhost_combined
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 8
Include /etc/apache2/conf.d/
Include /etc/apache2/sites-enabled/
1.4. /etc/php5/apache2/php.ini (Configuration de PHP)
engine = On
zend.ze1_compatibility_mode = Off
short_open_tag = On
asp_tags = Off
precision = 12
y2k_compliance = On
output_buffering = Off
zlib.output_compression = Off
implicit_flush = Off
unserialize_callback_func=
serialize_precision = 100
allow_call_time_pass_reference = On
safe_mode = Off
safe_mode_gid = Off
safe_mode_include_dir =
safe_mode_exec_dir =
safe_mode_allowed_env_vars = PHP_
safe_mode_protected_env_vars = LD_LIBRARY_PATH
disable_functions =
disable_classes =
expose_php = On
max_execution_time = 30 ; Maximum execution time of each script, in seconds
max_input_time = 60 ; Maximum amount of time each script may spend parsing request data
memory_limit = 128M
error_reporting = E_ALL & ~E_NOTICE
display_errors = On
display_startup_errors = Off
log_errors = Off
log_errors_max_len = 1024
ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = On
track_errors = Off
variables_order = "EGPCS"
register_globals = Off
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 9
register_long_arrays = On
register_argc_argv = On
auto_globals_jit = On
post_max_size = 8M
magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off
auto_prepend_file =
auto_append_file =
default_mimetype = "text/html"
doc_root =
user_dir =
enable_dl = Off
file_uploads = On
upload_max_filesize = 2M
allow_url_fopen = On
allow_url_include = Off
default_socket_timeout = 60
define_syslog_variables = Off
SMTP = localhost
smtp_port = 25
sql.safe_mode = Off
odbc.allow_persistent = On
odbc.check_persistent = On
odbc.max_persistent = -1
odbc.max_links = -1
odbc.defaultlrl = 4096
odbc.defaultbinmode = 1
mysql.allow_persistent = On
mysql.max_persistent = -1
mysql.max_links = -1
mysql.default_port =
mysql.default_socket =
mysql.default_host =
mysql.default_user =
mysql.default_password =
mysql.connect_timeout = 60
mysql.trace_mode = Off
mysqli.max_links = -1
mysqli.default_port = 3306
mysqli.default_socket =
mysqli.default_host =
mysqli.default_user =
mysqli.default_pw =
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 10
mysqli.reconnect = Off
msql.allow_persistent = On
msql.max_persistent = -1
msql.max_links = -1
pgsql.allow_persistent = On
pgsql.auto_reset_persistent = Off
pgsql.max_persistent = -1
pgsql.max_links = -1
pgsql.ignore_notice = 0
pgsql.log_notice = 0
sybase.allow_persistent = On
sybase.max_persistent = -1
sybase.max_links = -1
sybase.min_error_severity = 10
sybase.min_message_severity = 10
sybase.compatability_mode = Off
sybct.allow_persistent = On
sybct.max_persistent = -1
sybct.max_links = -1
sybct.min_server_severity = 10
sybct.min_client_severity = 10
bcmath.scale = 0
ifx.default_host =
ifx.default_user =
ifx.default_password =
ifx.allow_persistent = On
ifx.max_persistent = -1
ifx.max_links = -1
ifx.textasvarchar = 0
ifx.byteasvarchar = 0
ifx.charasvarchar = 0
ifx.blobinfile = 0
ifx.nullformat = 0
session.save_handler = files
session.use_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly =
session.serialize_handler = php
session.gc_divisor = 100
session.gc_maxlifetime = 1440
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 11
session.bug_compat_42 = 1
session.bug_compat_warn = 1
session.referer_check =
session.entropy_length = 0
session.entropy_file =
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = 0
session.hash_bits_per_character = 4
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=,fieldset="
mssql.allow_persistent = On
mssql.max_persistent = -1
mssql.max_links = -1
mssql.min_error_severity = 10
mssql.min_message_severity = 10
mssql.compatability_mode = Off
mssql.secure_connection = Off
tidy.clean_output = Off
soap.wsdl_cache_enabled=1
soap.wsdl_cache_dir="/tmp"
soap.wsdl_cache_ttl=86400
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 12
2. CODES SOURCES
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 13
2.1. Scripts SQL
2.1.1. Création (create.sql)
--
-- PostgreSQL database dump
--
SET client_encoding = 'UTF8';
SET standard_conforming_strings = off;
SET check_function_bodies = false;
SET client_min_messages = warning;
SET escape_string_warning = off;
SET search_path = public, pg_catalog;
ALTER TABLE ONLY public.etudiant DROP CONSTRAINT tel_uniq;
ALTER TABLE ONLY public.etudiant DROP CONSTRAINT refrecu_uniq;
ALTER TABLE ONLY public.etudiant DROP CONSTRAINT loginftp_uniq;
ALTER TABLE ONLY public.etudiant DROP CONSTRAINT id_primary;
ALTER TABLE ONLY public.etudiant DROP CONSTRAINT email_uniq;
ALTER TABLE ONLY public.etudiant DROP CONSTRAINT adrmac_uniq;
DROP TABLE public.etudiant;
SET search_path = public, pg_catalog;
SET default_tablespace = '';
SET default_with_oids = false;
--
-- Name: etudiant; Type: TABLE; Schema: public; Owner: bdetuadmin; Tablespace:
--
CREATE TABLE etudiant (
id character varying(8) NOT NULL,
nom character varying(25) NOT NULL,
prenom character varying(25) NOT NULL,
dep character varying(5) NOT NULL,
spec character varying(5) NOT NULL,
niveau integer NOT NULL,
tel character varying(8) DEFAULT NULL::character varying,
email character varying(255) DEFAULT NULL::character varying,
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 14
loginftp character varying(255) DEFAULT NULL::character varying,
adrmac character(17) DEFAULT NULL::bpchar,
refrecu character varying(16) DEFAULT NULL::character varying,
process character varying(3) NOT NULL
);
ALTER TABLE public.etudiant OWNER TO bdetuadmin;
--
-- Name: adrmac_uniq; Type: CONSTRAINT; Schema: public; Owner: bdetuadmin; Tablespace:
--
ALTER TABLE ONLY etudiant
ADD CONSTRAINT adrmac_uniq UNIQUE (adrmac);
--
-- Name: email_uniq; Type: CONSTRAINT; Schema: public; Owner: bdetuadmin; Tablespace:
--
ALTER TABLE ONLY etudiant
ADD CONSTRAINT email_uniq UNIQUE (email);
--
-- Name: id_primary; Type: CONSTRAINT; Schema: public; Owner: bdetuadmin; Tablespace:
--
ALTER TABLE ONLY etudiant
ADD CONSTRAINT id_primary PRIMARY KEY (id);
--
-- Name: loginftp_uniq; Type: CONSTRAINT; Schema: public; Owner: bdetuadmin; Tablespace:
--
ALTER TABLE ONLY etudiant
ADD CONSTRAINT loginftp_uniq UNIQUE (loginftp);
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 15
--
-- Name: refrecu_uniq; Type: CONSTRAINT; Schema: public; Owner: bdetuadmin; Tablespace:
--
ALTER TABLE ONLY etudiant
ADD CONSTRAINT refrecu_uniq UNIQUE (refrecu);
--
-- Name: tel_uniq; Type: CONSTRAINT; Schema: public; Owner: bdetuadmin; Tablespace:
--
ALTER TABLE ONLY etudiant
ADD CONSTRAINT tel_uniq UNIQUE (tel);
--
-- PostgreSQL database dump complete
--
2.1.2. Insertion (insert.sql)
--
-- PostgreSQL database dump
--
SET client_encoding = 'UTF8';
SET standard_conforming_strings = off;
SET check_function_bodies = false;
SET client_min_messages = warning;
SET escape_string_warning = off;
SET search_path = public, pg_catalog;
--
-- Data for Name: etudiant; Type: TABLE DATA; Schema: public; Owner: bdetuadmin
--
delete from etudiant ;
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 16
insert into etudiant values ('12345678','Ben Salah','Mohamed','TI','IR',3,'99999999',NULL::character varying,NULL::character varying,'00:16:44:a0:f9:50',NULL::character varying,'ATT');
insert into etudiant values ('11111111','Ayari','Imed', 'TI','TI',1,NULL,NULL::character varying,NULL::character varying,'b9:aa:28:20:00:f7',NULL::character varying,'ATT');
insert into etudiant values ('22222222','El mehdi','Youssef','TI','IR',2,NULL,NULL::character varying,NULL::character varying,NULL::character varying,NULL::character varying,'ATT');
insert into etudiant values ('33333333','Tounsi','Eya', 'TI','IG',3,NULL,'[email protected]',NULL::character varying, NULL::character varying,NULL::character varying,'ATT');
insert into etudiant values ('44444444','Mhamdi','Nozha','GM','GM',1,NULL,NULL::character varying,NULL::character varying,'12:11:5a:3e:88:72', NULL::character varying,'ATT');
insert into etudiant values ('55555555','Ben Abdallah','Sonda','GE','GE',1,NULL,NULL::character varying,NULL::character varying,NULL::character varying,NULL::character varying,'ATT');
insert into etudiant values ('66666666','Ben Yahia','Sami','TI','II',2,NULL,NULL::character varying,NULL::character varying,'a4:f5:c0:81:23:e1',NULL::character varying,'ATT');
2.2. Codes sources des connecteurs PodBridge 1.2
2.2.1. Classe du connecteur : APACLManager
Code source : APACLManager.connector.php
1 <?php
2 class APACLManager extends PodBridgeConnector implements PodBridgeConnectorInterface {
3
4 private $regexValidator = array (
5 'macaddr'=>'/^([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}$/');
6
7 /**
8 * Add adress to MAC filter (forwording) // Method not yet implemented
9 *
10 * @service
11 * @cacheable false
12 *
13 * @param string macaddr address
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 17
14 *
15 * @type (ssid:string,auth_key:string) doForwardMACaddrOut
16 * @return doForwardMACaddrOut information about the Wireless AP
17 */
18 public function doForwardMACaddr($macaddr) {
19
20 if ( ! preg_match($this->regexValidator['macaddr'],$macaddr))
21 Throw new Exception('Wrong Mac address format !', 805);
22
23
24 // Method not yet implemented
25
26 $doForwardMACaddrOut = array();
27 $doForwardMACaddrOut['ssid']=$this->params['ssid'];
28 $doForwardMACaddrOut['auth_key']=$this->params['auth_key'];
29 return $doForwardMACaddrOut;
30 }
31
32 /**
33 * Remove adress from MAC filter // Method not yet implemented
34 *
35 * @service
36 * @cacheable false
37 *
38 * @param string macaddr address
39 *
40 * @return boolean true if MAC address was removed from ACL
41 */
42 public function doRomoveForwordedMACaddr($macaddr) {
43
44 if ( ! preg_match($this->regexValidator['macaddr'],$macaddr))
45 Throw new Exception('Wrong Mac address format !', 805);
46
47 // Method not yet implemented
48
49 return true;
50 }
51
52 /*
53 * Make connection to the Server and authenticate
54 *
55 * @return bool true on connection success, false if not
56 */
57 public function connect() {
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 18
58 return true;
59 }
60
61 /*
62 * Disconnect from the server by executing a logout command
63 *
64 * @return bool true (allways)
65 */
66 public function disconnect() {
67 return true;
68 }
69
70 }
71
2.2.2. Classe du connecteur : BDetu
Code source : BDetu.connector.php
1 <?php
2 class BDetu extends PodBridgeConnector implements PodBridgeConnectorInterface {
3
4 private $conn=null;
5
6 /**
7 * Returns all information about a student by his id
8 *
9 * @service
10 * @cacheable false
11 *
12 * @param string id student identifier
13 *
14 * @type (id:string,nom:string,prenom:string,dep:string,spec:string,niveau:integer,tel:string,email:string,loginftp:string,adrmac:string,refrecu:string,process:string) getStudentByIdOut
15 * @return getStudentByIdOut information a student
16 */
17 public function getStudentById($id) {
18
19 if (! preg_match("/^[0-9]{8}$/", $id) )
20 throw new Exception ("Student id should be 8 digit number", 800
);
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 19
21
22 $res = $this->executeSQL("select * from etudiant where id='".$id."' limit 1",$numrows);
23
24 if (! $numrows)
25 throw new Exception ("This identifier (".$id.") seems inexistant in database !", 820 );
26
27 $getStudentByIdOut['id']=$res['id'];
28 $getStudentByIdOut['nom']=$res['nom'];
29 $getStudentByIdOut['prenom']=$res['prenom'];
30 $getStudentByIdOut['dep']=$res['dep'];
31 $getStudentByIdOut['spec']=$res['spec'];
32 $getStudentByIdOut['niveau']=$res['niveau'];
33 $getStudentByIdOut['tel']=$res['tel'];
34 $getStudentByIdOut['email']=$res['email'];
35 $getStudentByIdOut['loginftp']=$res['loginftp'];
36 $getStudentByIdOut['adrmac']=$res['adrmac'];
37 $getStudentByIdOut['refrecu']=$res['refrecu'];
38 $getStudentByIdOut['process']=$res['process'];
39
40 return $getStudentByIdOut;
41 }
42
43
44 /**
45 * Update information about a Student in the database
46 *
47 * @service
48 * @cacheable false
49 *
50 * @param string id student identifier
51 * @param string* tel personal phone number
52 * @param string* email email address
53 * @param string* loginftp ftp login (user name)
54 * @param string* adrmac mac address
55 * @param string* refrecu receipt identifier
56 * @param string* process process execution out state
57 *
58 * @return boolean true always
59 */
60 public function updateStudentById($id,$tel,$email,$loginftp,$adrmac,$refrecu,$process) {
61
62 //Validate phone number
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 20
63 if ($tel!=null) {
64 if (! preg_match("/^[0-9]{8}$/", $tel) )
65 throw new Exception ("Wrong phone number - should be 8 char length", 821 );
66
67 $rows['tel']=$tel;
68 }
69
70 //Validate identifier
71 if (! preg_match("/^[0-9]{8}$/", $id) )
72 throw new Exception ("Student id should be 8 digit number", 822 );
73
74 //Validate Mac address
75 if ($email!=null) {
76 if (! preg_match("/^[^0-9][A-z0-9_]+([.][A-z0-9_]+)*[@][A-z0-9_]+([.][A-z0-9_]+)*[.][A-z]{2,4}$/", $email) )
77 throw new Exception ("Wrong email address !", 823 );
78
79 $rows['email']=$email;
80 }
81
82 //Validate ftp login
83 if ($loginftp!=null) {
84 if (! preg_match("/^[^0-9][A-z0-9_]+([.][A-z0-9_]+)*$/", $loginftp) )
85 throw new Exception ("Wrong ftp login !", 824 );
86
87 $rows['loginftp']=$loginftp;
88 }
89
90 //Validate mac address
91 if ($adrmac!=null) {
92 if (! preg_match("/^[0-9a-fA-F]{2}[:-][0-9a-fA-F]{2}[:-][0-9a-fA-F]{2}[:-][0-9a-fA-F]{2}[:-][0-9a-fA-F]{2}[:-][0-9a-fA-F]{2}$/", $adrmac) )
93 throw new Exception ("Wrong mac address !", 825 );
94
95 $rows['adrmac']=$adrmac;
96 }
97
98 //Validate receipt identifier
99 if ($refrecu!=null) {
100 if (! preg_match("/^[0-9]{16}$/", $refrecu) )
101 throw new Exception ("Receipt identifier should be a 16 digit number", 826 );
102
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 21
103 $rows['refrecu']=$refrecu;
104 }
105
106 //Validate process state code
107 if ($process!=null) {
108 if (! preg_match("/^[A-Z]{2,3}$/", $process) )
109 throw new Exception ("Process state value should be composed from 2 to 3 capital letters", 827 );
110
111 $rows['process']=$process;
112 }
113
114
115 $cols_to_update=null;
116 foreach ($rows as $rowname=>$value) {
117 if ($cols_to_update!='') $cols_to_update.=',';
118 $cols_to_update.=$rowname."='".$value."'";
119 }
120
121 if (!$cols_to_update)
122 throw new Exception ("Null value not permitted !", 828 );
123
124 //Check if the id exists
125 $this->executeSQL("select id from etudiant where id ='".$id."'",$numrows);
126 if (! $numrows)
127 throw new Exception ("This identifier (".$id.") seems inexistant in database !", 820 );
128
129 //Execute update statement
130 if ($this->executeSQL("UPDATE etudiant SET ".$cols_to_update." WHERE id='".$id."'"))
131 return true;
132 }
133
134
135
136
137
138 /**
139 * Returns the next identifier of the given one (if exists)
140 * If $id param is set to null this method will return the first identifier
141 *
142 * @service
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 22
143 * @cacheable false
144 *
145 * @param string* id identifier
146 * @param string filter filter
147 *
148 * @type (nextid:string,last:boolean) retArray
149 * @return retArray blabla
150 */
151 public function getNextId($id,$filter) {
152
153 if ( !preg_match("/^(ATT|PAI|\*)$/", $filter) )
154 throw new Exception ("Filter value should be ATT or PAI (*)", 851 );
155
156 if ( !preg_match("/^[0-9]{8}$/", $id) && $id!=null )
157 throw new Exception ("id should be either an 8 digit number OR EMPTY (no value)", 852 );
158
159 if ($filter!='*')
160 $filter_sql="and process in ('".$filter."') ";
161
162 $res = $this->executeSQL("select id from etudiant where id > '".$id."' ".$filter_sql." order by id asc limit 2",$numrows);
163 if (!$numrows)
164 throw new Exception ("No result" , 853 );
165
166 $retArray = array();
167 $retArray['nextid']=$res['id'];
168 //$numrows can be 1 or 2
169 $retArray['last']=($numrows==1);
170
171 return $retArray;
172
173 }
174
175
176
177
178
179 /*
180 * Executes an sql statement in pgsql server
181 * and returns results as array
182 *
183 * @param string sql sql query
184 *
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 23
185 * @return Array
186 */
187 private function executeSQL($sql,&$numrows) {
188
189 $result = pg_query($this->conn, $sql);
190 if (!$result)
191 throw new Exception ("Error in SQL query: " . pg_last_error(), 870 );
192 $numrows = pg_numrows($result);
193
194 $resultArray = pg_fetch_array($result);
195 pg_free_result($result);
196 return $resultArray;
197
198 }
199
200
201
202
203 /*
204 * Make connection to the Server and authenticate
205 *
206 * @return boolean true on connection success, false if not
207 */
208 public function connect() {
209 try {
210 $connect="host=".$this->params['host']." port=".$this->params['port']." dbname=".$this->params['dbname']." user=".$this->params['username'];
211
212 if (!empty($this->params['password']))
213 $connect.=" password=".$this->params['password'];
214
215 $this->conn=pg_connect ($connect);
216
217 if (!$this->conn)
218 throw new Exception ( "Cannot connect to database: " . $this->params ['dbname'], 201 );
219
220 return true;
221 } catch ( Exception $e ) {
222 $this->setLastError ( $e->getCode (), $e->getMessage() );
223 return false;
224 }
225 }
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 24
226
227 /*
228 * Disconnect from the server by executing a logout command
229 *
230 * @return boolean true (allways)
231 */
232 public function disconnect() {
233 pg_close($this->conn);
234 $this->conn=null;
235 return true;
236 }
237
238
239 }
240
2.2.3. Classe du connecteur : pbFTPAccountConnector
Code source : FTPAccount.connector.php
1 <?php
2
3 class FTPAccount extends PodBridgeConnector implements PodBridgeConnectorInterface {
4
5
6 private $sshCon = null;
7 private $authenticated = false;
8 private $regexValidator = array (
9 'username'=>'/^[^0-9][A-z0-9_]+([.][A-z0-9_]+)*$/');
10
11 /*
12 * Generate random password from a set of chars ($pool)
13 *
14 * @param integer $len Password length
15 * @return string Rand password
16 */
17 private function generateRandomPasswd ( $len = 10 ) {
18 $string = '';
19 $pool = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
20 for($i = 1; $i <= $len; $i ++) {
21 $string .= substr ( $pool, rand ( 0, 61 ), 1 );
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 25
22 }
23
24 return $string;
25 }
26
27 /*
28 * Check if the user exists in host
29 *
30 * @param string user User name
31 * @return boolean True if user exist
32 */
33 private function ifUserExists($user) {
34 $this->ssh2Exec ( 'grep "^'.$user.':" /etc/passwd',true,true,$response);
35 if ($response==null)
36 return false;
37 return true;
38 }
39
40
41 /*
42 * Convert dd/mm/yyyy format dates to unix date format
43 *
44 * @param string date
45 *
46 * @throws Exception 770 Date error
47 *
48 * @return string Unix date
49 */
50 private function getUnixDate($date) {
51
52 $datearray=explode('/',$date);
53 $dd=$datearray[0];
54 $mm=$datearray[1];
55 $yyyy=$datearray[2];
56
57 if ( ! checkdate($mm, $dd, $yyyy) )
58 Throw new Exception('Date error ('.$date.')', 770);
59
60 //Convert to unix date format mm/dd/yyyy
61 $unixdate=$mm.'/'.$dd.'/'.$yyyy;
62 return $unixdate;
63 }
64
65 /**
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 26
66 * Create a new FTP account
67 *
68 * @service
69 * @cacheable false
70 *
71 * @param string user The FTP user login
72 * @param string expiry_date Expiry date
73 * @param boolean use_welcome If use welcome message when user connect
74 *
75 * @throws Exception 803 Pattern matching error in user name
76 * @throws Exception 804 User already exists
77 *
78 * @type (UserLogin:string,Password:string,ServerDomain:string,FTPPort:integer) doCreateFTPUserAccountOut
79 * @return doCreateFTPUserAccountOut information about the created ftp account
80 */
81 public function doCreateFTPUserAccount($user,$expiry_date,$use_welcome=true) {
82
83 if ( ! preg_match($this->regexValidator['username'],$user))
84 Throw new Exception('Pattern matching error in user name', 803);
85
86 if ( $this->ifUserExists($user) )
87 Throw new Exception('User ('.$user.') already exists', 804);
88
89 //Convert dd/mm/yyyy expiry date to unix date
90 if ( $expiry_date != 0 )
91 $unix_expdate = $this->getUnixDate($expiry_date);
92
93 $userhome = $this->params ['ftp_users_path'].'/'.$user;
94 // Generate a random password
95 $password = $this->generateRandomPasswd ( $this->params ['autogen_pswd_length'] );
96
97 $cryptedPassword = crypt ( strip_tags ( $password ) );
98
99 // Create the user
100 $this->ssh2Exec ( 'useradd -d '.$userhome.' -m -g '.$this->params ['ftp_group_name'].' -e '.$unix_expdate.' -s /bin/false -p \''.$cryptedPassword.'\' '.$user);
101
102 if ($use_welcome) {
103 //Set default welcome message
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 27
104 $this->setFTPUserWelcomeMsg($user,$this->params ['welcome_message']);
105 }
106
107 $doCreateFTPUserAccountOut = array ();
108 $doCreateFTPUserAccountOut ['UserLogin'] = $user;
109 $doCreateFTPUserAccountOut ['Password'] = $password;
110 $doCreateFTPUserAccountOut ['ServerDomain'] = $this->params ['domain'];
111 $doCreateFTPUserAccountOut ['FTPPort'] = $this->params ['ftp_port'];
112 return $doCreateFTPUserAccountOut;
113 }
114
115 /**
116 * Set Ftp account expiry date
117 *
118 * @service
119 * @cacheable false
120 *
121 * @param string user The FTP user login
122 * @param string expiry_date Expiry date
123 *
124 * @throws Exception 850 User seems inexistant
125 *
126 * @return boolean True when the expiry dates is updated
127 */
128 public function setFTPUserAccountExpiryDate($user,$expiry_date) {
129
130 if ( ! $this->ifUserExists($user) )
131 Throw new Exception('User ('.$user.') seems inexistant', 850);
132 //Convert dd/mm/yyyy expiry date to unix date
133 if ( $expiry_date != 0 )
134 $unix_expdate = $this->getUnixDate($expiry_date);
135
136 $this->ssh2Exec ( 'usermod -e '.$unix_expdate.' '. $user );
137 return true;
138
139 }
140
141
142
143 /**
144 * Set or Update user login welcome message
145 *
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 28
146 * @service
147 * @cacheable false
148 *
149 * @param string user user name
150 * @param string message message to display
151 *
152 * @throws Exception 850 User seems inexistant
153 * @throws Exception 849 Cannot set empty message
154 *
155 * @return boolean True when the message is set
156 */
157 public function setFTPUserWelcomeMsg($user,$message) {
158
159 if ( ! $this->ifUserExists($user) )
160 Throw new Exception('User ('.$user.') seems inexistant', 850);
161
162 if ($message==null)
163 Throw new Exception('Cannot set an empty message !', 849);
164
165 $userhome = $this->params ['ftp_users_path'].'/'.$user;
166 $this->ssh2Exec ( 'echo -e "'.$message.'">' . $userhome . '/welcome.msg');
167
168
169 return true;
170
171 }
172
173
174 /**
175 * Disable user welcome message while ftp connection
176 *
177 * @service
178 * @cacheable false
179 *
180 * @param string user user name
181 *
182 * @throws Exception 850 User seems inexistant
183 *
184 * @return boolean True when the message is set
185 */
186 public function doDisableFTPUserWelcomeMsg($user) {
187
188 if ( ! $this->ifUserExists($user) )
189 Throw new Exception('User ('.$user.') seems inexistant', 850);
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 29
190
191 $userhome = $this->params ['ftp_users_path'].'/'.$user;
192 $this->ssh2Exec ( 'rm -f ' . $userhome . '/welcome.msg');
193
194 return true;
195 }
196
197
198 /**
199 * Change an FTP User account password
200 *
201 * @service
202 * @cacheable false
203 * @param string user User name
204 * @param string oldpassword The old user password
205 * @param string newpassword The new user password
206 *
207 * @throws Exception 840 Password verification failed
208 * @throws Exception 841 Your password must be between {RANGE} characters in length
209 * @throws Exception 842 Password should be different from the old one
210 *
211 * @return boolean True when password changed
212 */
213 public function doChangeFTPUserPassword($user,$password,$new_password) {
214
215 if ( ! $this->doCheckPassword($user,$password) )
216 Throw new Exception("Password verification failed", 840);
217
218 if ( strlen($new_password) < $this->params ['minimum_pswd_length'] || strlen($new_password) > $this->params ['maximum_pswd_length'])
219 Throw new Exception("Your password must be between ".$this->params ['minimum_pswd_length']."-".$this->params ['maximum_pswd_length']." characters in length", 841);
220
221 if ($password == $new_password)
222 Throw new Exception("New password should be different from the old one", 842);
223
224 $cryptedNewPassword = crypt ( strip_tags ( $new_password ) );
225 //Change the user password
226 $this->ssh2Exec ( 'usermod -p \''.$cryptedNewPassword.'\' '.$user);
227
228 return true;
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 30
229 }
230
231
232 /*
233 * Check if the user password is correct
234 *
235 * @param string user User name
236 * @param string password User password
237 *
238 * @throws Exception 850 Entered user name seems inexistant
239 * @throws Exception 851 Unexpected error while checking password
240 *
241 * @return boolean True If password check success and False otherwise
242 */
243 private function doCheckPassword($user,$password) {
244
245 //Check if the user exist
246 if ( ! $this->ifUserExists($user) )
247 Throw new Exception('User ('.$user.') seems inexistant', 850);
248
249 //Retrieve crypted user password from /etc/shadow
250 $this->ssh2Exec ( 'grep ^'.$user.': /etc/shadow | cut -d":" -f2',true,true,$refpswd);
251 if ($refpswd==null)
252 Throw new Exception("Unexpected error while checking password", 851);
253
254 $cryptedReferencePassword = trim($refpswd);
255 //Comparing passwords
256 if ( crypt( strip_tags ( $password ),$cryptedReferencePassword ) != $cryptedReferencePassword )
257 return false;
258
259 return true;
260 }
261
262
263 /**
264 * Delete FTP user account
265 *
266 * @service
267 * @cacheable false
268 * @param string user FTP user name
269 * @throws Exception 850 Entered user name seems inexistant
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 31
270 * @throws Exception 860 Cannot do such operation on a non ftp user
271 * @return boolean True When user is deleted
272 */
273 public function doDeleteFTPUserAccount($user) {
274
275 //Check if the user exist
276 if ( ! $this->ifUserExists($user) )
277 Throw new Exception('User ('.$user.') seems inexistant', 850);
278
279 //Verify if FTP user
280 $this->ssh2Exec ( 'groups '.$user,true,true,$groupname);
281 if (trim($groupname)!=$this->params ['ftp_group_name'])
282 Throw new Exception("Cannot do such operation on a non FTP user", 860);
283
284 // Delete the user
285 $this->ssh2Exec ( 'userdel -r '.$user);
286 return true;
287 }
288
289
290
291 /**
292 * Transfer files/directories to an FTP account root directory
293 *
294 * @service
295 * @cacheable false
296 *
297 * @param string file Source file or directory inside {files_source_root}
298 * @param string user FTP user name
299 *
300 * @return boolean True copy complete
301 */
302 public function doFTPsendFile($file,$user) {
303
304 $recursive=null;
305 $dest=$this->params ['ftp_users_path'].'/'.$user.'/'.$file;
306
307 $srcfile = $this->params ['files_source_root'].'/'.$file;
308
309 if ( ! is_file($srcfile) ) {
310 if (! is_dir($srcfile) ) {
311 Throw new Exception("File not found !", 860);
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 32
312 } else {
313 $recursive='-R';
314 }
315 }
316
317 $this->ssh2Exec ( 'cp '.$recursive.' '.$srcfile.' '.$dest);
318 $this->ssh2Exec ( 'chown '.$recursive.' '.$user.':'.$this->params ['ftp_group_name'].' '.$dest);
319
320 return true;
321 }
322
323
324 /*
325 * Executes a $cmd on the SSH connection and return $readable response on-demand
326 *
327 * @param string $cmd Command to execute
328 * @param bool $exception Whether to throw exception on error or return false
329 * @param bool $readResponse Whether to return a readable response or not
330 * @param pointer $response The readable response if requested will be here
331 * @throws Exception 200 If ($exception) AND we got an error while executing the command
332 * @return ressource The ssh2_exec return
333 */
334 private function ssh2Exec($cmd, $exception = true, $readResponse = false, &$response = null) {
335 $this->setSessionLog ( 'sent', $cmd );
336 $stream = ssh2_exec ( $this->sshCon, $cmd );
337
338 //get the content of ssh2 stderr
339 $stderr = ssh2_fetch_stream ( $stream, SSH2_STREAM_STDERR );
340 stream_set_blocking ( $stderr, true );
341 $response_stderr = stream_get_contents ( $stderr );
342 fclose ( $stderr );
343
344 if ($response_stderr) {
345 if ($exception) {
346 $this->setSessionLog ( 'received', $response_stderr );
347 throw new Exception ( "Error executing cmd: [$cmd]", 200 );
348 } else {
349 $this->setSessionLog ( 'received', $response_stderr );
350 return false;
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 33
351 }
352 }
353
354 if ($readResponse) {
355 stream_set_blocking ( $stream, true );
356 $response = stream_get_contents ( $stream );
357 fclose ( $stream );
358 $this->setSessionLog ( 'received', $response );
359 } else {
360 $this->setSessionLog ( 'received', '[PB:noerror]' );
361 }
362
363 return $stream;
364 }
365
366
367 /*
368 * Make connection to the Server and authenticate
369 *
370 * @return bool true on connection success, false if not
371 */
372 public function connect() {
373 try {
374 $this->sshCon = ssh2_connect ( $this->params ['host'] );
375 if (! $this->sshCon)
376 throw new Exception ( "SSH Connection failure To the Host", 200 );
377
378 if (! ssh2_auth_password ( $this->sshCon, $this->params ['login'], $this->params ['password'] ))
379 throw new Exception ( "Authentication failure To the host using username: " . $this->params ['login'], 201 );
380
381 $this->authenticated = true;
382 return true;
383 } catch ( Exception $e ) {
384 $this->setLastError ( $e->getCode (), $e->getMessage () );
385 return false;
386 }
387 }
388
389 /*
390 * Disconnect from the server by executing a logout command
391 *
392 * @return bool true (allways)
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 34
393 */
394 public function disconnect() {
395 if ($this->sshCon) {
396 if ($this->authenticated) {
397 ssh2_exec ( $this->sshCon, "logout" );
398 } else
399 $this->sshCon = null;
400 }
401
402 return true;
403 }
404
405
406
407
408 }
409
2.2.4. Classe du connecteur : pbIPPServiceConnector
Code source : IPPService.connector.php
1 <?php
2 class IPPService extends PodBridgeConnector implements PodBridgeConnectorInterface {
3
4 private $ipp = null;
5
6 /**
7 * Print Web pages
8 *
9 * @service
10 * @cacheable false
11 *
12 * @param string url web page location exemple: http://mydomain/mypage
13 * @param string* jobname new job name
14 *
15 * @return boolean always true
16 */
17 public function doPrintWebPage($url,$jobname=null) {
18 if ( ! file_get_contents($url,null,null,null,1))
19 Throw new Exception('Cannot get page contents from ('.$url.')', 700);
20 $tmpPSdoc = '/tmp/'.md5(uniqid());
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 35
21 //Convert web page to a PS document
22 system ( 'html2ps '.$url.'>'.$tmpPSdoc);
23 $this->doPrintInternalDocument($tmpPSdoc,$jobname);
24 //Cleaning
25 system ( 'rm -f '.$tmpPSdoc);
26 return true;
27 }
28
29 /**
30 *
31 * Print documents located in server
32 *
33 * @service
34 * @cacheable false
35 *
36 * @param string filepath path to file
37 * @param string* jobname new job name
38 *
39 * @return boolean always true
40 */
41 public function doPrintInternalDocument($filepath,$jobname=null) {
42
43 if ( ! file_exists($filepath))
44 Throw new Exception('File does not exists !', 705);
45
46 if ( !$jobname )
47 $jobname=$filepath;
48
49 $this->ipp->setJobName($jobname);
50
51 $this->ipp->setData($filepath); // Path to file.
52 $this->ipp->printJob();
53 return true;
54 }
55
56 /**
57 * Returns all available printers
58 *
59 * @service
60 * @cacheable false
61 *
62 *
63 * @return string Liste all printers uri delimited by ";"
64 */
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 36
65 public function getPrinters() {
66
67 $this->ipp->getPrinters();
68 $printers=null;
69 foreach( $this->ipp->available_printers as $printer) {
70 if ( $printers ) $printers.=";";
71 $printers.=$printer;
72 }
73
74 return $printers;
75 }
76
77 // Method not yet implemented
78 public function getAllJobs() {
79
80 return true;
81 }
82
83 // Method not yet implemented
84 public function killJobById($jobid) {
85
86 return true;
87 }
88
89 // Method not yet implemented
90 public function killAllJobs() {
91
92 return true;
93 }
94
95
96 // Method not yet implemented
97 public function getLastJob() {
98 //return $this->ipp->last_job;
99 }
100
101 /*
102 * Make connection to the Server and authenticate
103 *
104 * @return bool true on connection success, false if not
105 */
106 public function connect() {
107
108 // For documentation refer to ==> http://www.nongnu.org/phpprintipp/tiny_usage
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 37
109 require_once("PrintIPPclasses/CupsPrintIPP.php");
110 $this->ipp = new CupsPrintIPP;
111
112 $this->ipp->setUserName($this->params['user']);
113 $this->ipp->setAuthentication($this->params['user'],$this->params['password']); // username & password
114
115 $this->ipp->setHost($this->params['ipp_host']);
116 $this->ipp->setPort($this->params['ipp_port']);
117
118 $this->ipp->setPrinterURI($this->params['printer_uri']);
119
120 return true;
121 }
122
123 /*
124 * Disconnect from the server by executing a logout command
125 *
126 * @return bool true (allways)
127 */
128 public function disconnect() {
129 unset ($this->ipp);
130 return true;
131 }
132
133 }
134
2.2.5. Classe du connecteur : pbMailAccountConnector
Code source : MailAccount.connector.php
1 <?php
2
3 class MailAccount extends PodBridgeConnector implements PodBridgeConnectorInterface {
4
5 private $sshCon = null;
6 private $authenticated = false;
7 private $regexValidator = array (
8 'fstname_lstname'=>'/^[A-z]{2,24}$/',
9 'username'=>'/^[^0-9][A-z0-9_]+([.][A-z0-9_]+)*$/',
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 38
10 'emailaddress'=>'/^[^0-9][A-z0-9_]+([.][A-z0-9_]+)*[@][A-z0-9_]+([.][A-z0-9_]+)*[.][A-z]{2,4}$/');
11 /*
12 * Generate random password from a set of chars ($pool)
13 *
14 * @param integer $len Password length
15 * @return string Rand password
16 */
17 private function generateRandomPasswd($len = 10) {
18 $string = '';
19 $pool = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
20 for($i = 1; $i <= $len; $i ++) {
21 $string .= substr ( $pool, rand ( 0, 61 ), 1 );
22 }
23
24 return $string;
25 }
26
27 /*
28 * Check if the user exists in host
29 *
30 * @param string user User name
31 * @return boolean True if user exist
32 */
33 private function ifUserExists($user) {
34 $this->ssh2Exec ( 'grep "^'.$user.':" /etc/passwd',true,true,$response);
35 if ($response==null)
36 return false;
37 return true;
38 }
39
40
41 /*
42 * Generate an unique user name by fstname and lstname
43 *
44 * @param string fstname The user first name
45 * @param string lstname The user last name
46 *
47 * @throws Exception 895 Invalid first name
48 * @throws Exception 896 Invalid last name
49 *
50 * @return string user name
51 */
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 39
52 private function generateUserName($fstname,$lstname) {
53
54
55 $fstname = strtolower(trim($fstname));
56 $lstname = strtolower(trim($lstname));
57 $fstname=str_replace(' ', '_', $fstname);
58 $lstname=str_replace(' ', '_', $lstname);
59
60 //Check the first name
61 if ( ! preg_match($this->regexValidator['fstname_lstname'],$fstname))
62 Throw new Exception('Invalid first name', 895);
63 //Check the last name
64 if ( ! preg_match($this->regexValidator['fstname_lstname'],$lstname))
65 Throw new Exception('Invalid last name', 896);
66
67 $username=$fstname.'.'.$lstname ;
68 $suffix=null;
69
70 while ($this->ifUserExists($username.$suffix)) {
71 if (! $suffix ) $suffix=0 ;
72 $suffix++;
73 }
74
75 return ($username.$suffix);
76 }
77
78
79 /*
80 * Retrieve user name from an email address
81 *
82 * @param string emailaddr address
83 *
84 * @throws Exception 870 Invalid email address
85 * @throws Exception 890 Cannot do this operation on [domain]
86 *
87 * @return string user name
88 */
89 private function doStripAtDomain($emailaddr) {
90
91 //Check email address to local user name
92 if ( ! preg_match($this->regexValidator['emailaddress'],$emailaddr))
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 40
93 Throw new Exception('Invalid address: ('.$emailaddr.')', 870);
94
95
96 //Convert user email address to user name
97 $part=explode('@',trim(strtolower($emailaddr)));
98 $domain=$part[1];
99
100 //Check the domaine name
101 if ( $domain != $this->params['domain'] )
102 Throw new Exception('This email is not registered at '.$this->params['domain'] , 890);
103
104 $user=$part[0];
105
106 return $user;
107
108 }
109
110
111
112 /**
113 * Create new mail user Version 2
114 *
115 * @service
116 * @cacheable false
117 *
118 * @param string fstname The user first name
119 * @param string lstname The user last name
120 * @param boolean genpswd For auto generated password
121 * @param string password User defined password
122 *
123 * @type (EmailAdress:string,Password:string,WebMailUrl:string) retMailAccount2
124 * @return retMailAccount2 information about the created mail account
125 */
126 public function doCreateMailUserAccount2($fstname,$lstname,$genpswd,$password) {
127
128 $genusername=$this->generateUserName($fstname, $lstname);
129 $retMailAccount2 = $this->doCreateMailUserAccount($genusername,$genpswd,$password);
130
131 return $retMailAccount2;
132 }
133
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 41
134
135
136 /**
137 * Create new mail user Version 1
138 *
139 * @service
140 * @cacheable false
141 * @param string user The mail user logins
142 * @param boolean genpswd For auto generated password
143 * @param string password User defined password
144 *
145 * @throws Exception 803 Password verification failed
146 * @throws Exception 804 User already exists
147 * @throws Exception 841 Your password must be between {RANGE} characters in length
148 *
149 * @type (EmailAdress:string,Password:string,POP3Port:integer,SMTPPort:integer,WebMailUrl:string) retMailAccount
150 * @return retMailAccount information about the created mail account
151 */
152 public function doCreateMailUserAccount($user,$genpswd,$password) {
153
154 if ( ! preg_match($this->regexValidator['username'],$user))
155 Throw new Exception('Pattern matching error in user name', 803);
156
157 if ( $this->ifUserExists($user) )
158 Throw new Exception('User ('.$user.') already exists', 804);
159
160 $UserHomeDir = $this->params ['mail_users_path'].'/'.$user;
161
162 // Generate a random password
163 if ($genpswd) {
164 $password = $this->generateRandomPasswd ( $this->params ['autogen_pswd_length'] );
165 } else {
166 if ( strlen($password) < $this->params ['minimum_pswd_length'] || strlen($password) > $this->params ['maximum_pswd_length'])
167 Throw new Exception("Your password must be between ".$this->params ['minimum_pswd_length']."-".$this->params ['maximum_pswd_length']." characters in length", 841);
168
169 }
170
171 $cryptedPassword = crypt ( strip_tags ( $password ) );
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 42
172
173 // Create the user
174 $this->ssh2Exec ( 'useradd -d '.$UserHomeDir.' -m -g '.$this->params ['mail_group_name'].' -s /bin/false -p \''.$cryptedPassword.'\' '.$user);
175
176 $retMailAccount = array();
177 $retMailAccount ['EmailAdress'] = $user.'@'.$this->params['domain'] ;
178 $retMailAccount ['Password'] = $password;
179 $retMailAccount ['POP3Port'] = $this->params ['pop3_port'];
180 $retMailAccount ['SMTPPort'] = $this->params ['smtp_port'];
181 $retMailAccount ['WebMailUrl'] = $this->params ['web_mail_url'];
182
183 return $retMailAccount;
184
185 }
186
187
188 /**
189 * Cahnge a user password
190 *
191 * @service
192 * @cacheable false
193 * @param string emailaddr user email address
194 * @param string oldpassword The old user password
195 * @param string newpassword The new user password
196 *
197 * @throws Exception 840 Password verification failed
198 * @throws Exception 841 Your password must be between {RANGE} characters in length
199 * @throws Exception 842 Password should be different from the old one
200 *
201 * @return boolean True when password changed
202 */
203 public function doChangeMailUserPassword($emailaddr,$password,$new_password) {
204
205 //Convert user email address to user name
206 $user = $this->doStripAtDomain($emailaddr);
207
208 if ( ! $this->doCheckPassword($user,$password) )
209 Throw new Exception("Password verification failed", 840);
210
211 if ( strlen($new_password) < $this->params ['minimum_pswd_length']
|| strlen($new_password) > $this->params ['maximum_pswd_length'])
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 43
212 Throw new Exception("Your password must be between ".$this->params ['minimum_pswd_length']."-".$this->params ['maximum_pswd_length']." characters in length", 841);
213
214 if ($password == $new_password)
215 Throw new Exception("New password should be different from the old one", 842);
216
217 $cryptedNewPassword = crypt ( strip_tags ( $new_password ) );
218 //Change the user password
219 $this->ssh2Exec ( 'usermod -p \''.$cryptedNewPassword.'\' '.$user);
220
221 return true;
222 }
223
224 /*
225 * Check if the user password is correct
226 *
227 * @param string emailaddr user user login
228 * @param string password user password
229 *
230 * @throws Exception 850 Entered user name seems inexistant
231 * @throws Exception 851 Unexpected error while checking password
232 *
233 * @return boolean True If password check success and False otherwise
234 */
235 private function doCheckPassword($user,$password) {
236
237
238 //Check if the user exist
239 if ( ! $this->ifUserExists($user) )
240 Throw new Exception('User ('.$user.') seems inexistant', 850);
241
242 //Retrieve crypted user password from /etc/shadow
243 $this->ssh2Exec ( 'grep ^'.$user.': /etc/shadow | cut -d":" -f2',true,true,$refpswd);
244 if ($refpswd==null)
245 Throw new Exception("Unexpected error while checking password", 851);
246
247 $cryptedReferencePassword = trim($refpswd);
248 //Comparing passwords
249 if ( crypt( strip_tags ( $password ),$cryptedReferencePassword ) != $cryptedReferencePassword )
250 return false;
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 44
251
252 return true;
253 }
254
255 /**
256 * Delete a mail user account
257 *
258 * @service
259 * @cacheable false
260 * @param string emailaddr mail user name or full email adress
261 * @throws Exception 850 Entered user name seems inexistant
262 * @throws Exception 860 Cannot do such operation on a non mail user
263 * @return boolean True When user is deleted
264 */
265 public function doDeleteMailUserAccount($emailaddr) {
266
267 //Convert user email address to user name
268 $user = $this->doStripAtDomain($emailaddr);
269
270 //Check if the user exist
271 if ( ! $this->ifUserExists($user) )
272 Throw new Exception('User ('.$user.') seems inexistant', 850);
273
274 //Verify if mail user
275 $this->ssh2Exec ( 'groups '.$user,true,true,$groupname);
276 if (trim($groupname)!=$this->params ['mail_group_name'])
277 Throw new Exception("Cannot do such operation on a non mail user", 860);
278
279 // Delete the user
280 $this->ssh2Exec ( 'userdel -r '.$user);
281 return true;
282 }
283
284
285 /**
286 * Unlock a mail user account
287 *
288 * @service
289 * @cacheable false
290 * @param string emailaddr mail user name or full email adress
291 * @throws Exception 850 Entered user name seems inexistant
292 * @throws Exception 860 Cannot do such operation on a non mail user
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 45
293 * @return boolean True When user account is unlocked
294 */
295 public function doUnlockMailUserAccount($emailaddr) {
296
297 //Convert user email address to user name
298 $user = $this->doStripAtDomain($emailaddr);
299
300 //Check if the user exist
301 if ( ! $this->ifUserExists($user) )
302 Throw new Exception('User ('.$user.') seems inexistant', 850);
303
304 //Verify if mail user
305 $this->ssh2Exec ( 'groups '.$user,true,true,$groupname);
306 if (trim($groupname)!=$this->params ['mail_group_name'])
307 Throw new Exception("Cannot do such operation on a non mail user", 860);
308
309 // Activate the user account
310 $this->ssh2Exec ( 'passwd -u '.$user);
311 return true;
312 }
313
314 /**
315 * Lock a mail user account
316 *
317 * @service
318 * @cacheable false
319 * @param string emailaddr mail user name or full email adress
320 * @throws Exception 850 Entered user name seems inexistant
321 * @throws Exception 860 Cannot do such operation on a non mail user
322 * @return boolean True When user account is locked
323 */
324 public function doLockMailUserAccount($emailaddr) {
325
326 //Convert user email address to user name
327 $user = $this->doStripAtDomain($emailaddr);
328
329 //Check if the user exist
330 if ( ! $this->ifUserExists($user) )
331 Throw new Exception('User ('.$user.') seems inexistant', 850);
332
333 //Verify if mail user
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 46
334 $this->ssh2Exec ( 'groups '.$user,true,true,$groupname);
335 if (trim($groupname)!=$this->params ['mail_group_name'])
336 Throw new Exception("Cannot do such operation on a non mail user", 860);
337
338 // Disable the user account
339 $this->ssh2Exec ( 'passwd -l '.$user);
340 return true;
341 }
342
343
344 /**
345 * Send email (internal)
346 *
347 * @service
348 * @cacheable false
349 * @param string from Sender email address or user name
350 * @param string to Receiver email address
351 * @param string message Message body
352 * @param string subject The subject of the message
353 *
354 * @throws Exception 850 Entered user name seems inexistant
355 * @throws Exception 870 Invalid receiver email address
356 * @throws Exception 871 Cannot send empty message
357 *
358 *
359 * @return boolean True when message sent
360 */
361 public function doSendMail($from,$to,$message,$subject=null) {
362
363 //Convert sender email address to user name
364 $user_sender = $this->doStripAtDomain($from);
365
366
367 //Check if the sender user exist
368 if ( ! $this->ifUserExists($user_sender) )
369 Throw new Exception('User ('.$user_sender.') seems inexistant', 850);
370
371 if ( ! preg_match($this->regexValidator['emailaddress'],$to))
372 Throw new Exception('Invalid address: ('.$to.')', 870);
373
374 if ( $message==null )
375 Throw new Exception('Cannot send empty message', 871);
376
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 47
377 //Send a message
378 $this->ssh2Exec ( 'echo -e "'.$message.'" | sudo -u '.$user_sender.' mail -s "'.$subject.'" '.$to);
379 return true;
380 }
381
382
383
384 /*
385 * Executes a $cmd on the SSH connection and return $readable response on-demand
386 *
387 * @param string $cmd Command to execute
388 * @param bool $exception Whether to throw exception on error or return false
389 * @param bool $readResponse Whether to return a readable response or not
390 * @param pointer $response The readable response if requested will be here
391 * @throws Exception 200 If ($exception) AND we got an error while executing the command
392 * @return ressource The ssh2_exec return
393 */
394 private function ssh2Exec($cmd, $exception = true, $readResponse = false, &$response = null) {
395 $this->setSessionLog ( 'sent', $cmd );
396 $stream = ssh2_exec ( $this->sshCon, $cmd );
397
398 //get the content of ssh2 stderr
399 $stderr = ssh2_fetch_stream ( $stream, SSH2_STREAM_STDERR );
400 stream_set_blocking ( $stderr, true );
401 $response_stderr = stream_get_contents ( $stderr );
402 fclose ( $stderr );
403
404 if ($response_stderr) {
405 if ($exception) {
406 $this->setSessionLog ( 'received', $response_stderr );
407 throw new Exception ( "Error executing cmd: [$cmd]", 200 );
408 } else {
409 $this->setSessionLog ( 'received', $response_stderr );
410 return false;
411 }
412 }
413
414 if ($readResponse) {
415 stream_set_blocking ( $stream, true );
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 48
416 $response = stream_get_contents ( $stream );
417 fclose ( $stream );
418 $this->setSessionLog ( 'received', $response );
419 } else {
420 $this->setSessionLog ( 'received', '[PB:noerror]' );
421 }
422
423 return $stream;
424 }
425
426
427 /*
428 * Make connection to the Server and authenticate
429 *
430 * @return bool true on connection success, false if not
431 */
432 public function connect() {
433 try {
434 $this->sshCon = ssh2_connect ( $this->params ['host'] );
435 if (! $this->sshCon)
436 throw new Exception ( "SSH Connection failure To the Host", 200 );
437
438 if (! ssh2_auth_password ( $this->sshCon, $this->params ['login'], $this->params ['password'] ))
439 throw new Exception ( "Authentication failure To the host using username: " . $this->params ['login'], 201 );
440
441 $this->authenticated = true;
442 return true;
443 } catch ( Exception $e ) {
444 $this->setLastError ( $e->getCode (), $e->getMessage () );
445 return false;
446 }
447 }
448
449 /*
450 * Disconnect from the server by executing a logout command
451 *
452 * @return bool true (allways)
453 */
454 public function disconnect() {
455 if ($this->sshCon) {
456 if ($this->authenticated) {
457 ssh2_exec ( $this->sshCon, "logout" );
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 49
458 } else
459 $this->sshCon = null;
460 }
461
462 return true;
463 }
464
465
466
467
468 }
469
470
2.2.6. Classe du connecteur : pbSMSServiceConnector
Code source : SMSService.connector.php
1 <?php
2
3 class SMSService extends PodBridgeConnector implements PodBridgeConnectorInterface {
4
5 //cannot be delivered
6
7 private $regexValidator = array (
8 'sn_regex'=>'/^(00|\+|[0-9])[0-9]{7}$/');
9
10 /**
11 * doSendSMS
12 *
13 * @service
14 * @cacheable false
15 *
16 * @param string destinataire Destination Phone number
17 * @param string message Message Text
18 *
19 * @return boolean true if message successfully sent
20 */
21 public function doSendSMS($destinataire,$message) {
22
23 //cannot be delivered
24
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 50
25 return true;
26 }
27
28
29 private function stripSpaces($phonenumber) {
30 $fixed=str_replace(' ', '',$phonenumber);
31 if ( ! preg_match($this->regexValidator['sn_regex'],$fixed))
32 Throw new Exception('Phone number format error', 808);
33
34 return $fixed;
35 }
36
37 /*
38 * Make connection to the Server and authenticate
39 *
40 * @return bool true on connection success, false if not
41 */
42 public function connect() {
43 //cannot be delivered
44 return true;
45
46 }
47
48 /*
49 * Disconnect from the server by executing a logout command
50 *
51 * @return bool true (allways)
52 */
53 public function disconnect() {
54 //cannot be delivered
55 return true;
56 }
57
58
59
60
61 }
62
63
2.2.7. Classe du connecteur : pbwwwsubscrConnector
Code source : wwwsubscr.connector.php
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 51
1 <?php
2
3 class wwwsubscr extends PodBridgeConnector implements PodBridgeConnectorInterface {
4
5 private $curl_handle = null;
6
7 /**
8 * Returns the receipt identifier and URL for the web site
9 *
10 * @service
11 * @cacheable false
12 *
13 * @param string studentident Identifiant de l'étudiant
14 * @param string au AU format exp: 2009/2010
15 *
16 * @type (refaccuse:string,urlaccuse:string) getAccuseOut
17 * @return getAccuseOut Return refaccuse & urlaccuse
18 */
19 public function getAccuse($studentident,$au) {
20
21 $ref=$this->getAccuseRef($studentident,$au);
22 $url='http://inscription.edu.demo/recu.php?ref='.$ref;
23
24 $getAccuseOut = array ();
25 $getAccuseOut['refaccuse']=$ref;
26 $getAccuseOut['urlaccuse']=$url;
27
28 return $getAccuseOut;
29
30 }
31
32
33 /*
34 * @param string studentident Student identifier
35 * @param string au AU format exp: 2009/2010
36 *
37 * @return string Référence du reçu
38 */
39 private function getAccuseRef($studentident,$au) {
40
41 if ( ! preg_match('/^[0-9]{8}$/',$studentident) )
42 Throw new Exception('L\'identifiant de l\'étudiant doit être compsé de 8 chiffres', 805);
43
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 52
44 if ( ! preg_match('/^20[0-9][0-9]\/20[0-9][0-9]$/',$au) )
45 Throw new Exception('L\'année universitaire doit être en ce format AAAA/AAAA', 806);
46
47 curl_setopt($this->curl_handle,CURLOPT_POST,1);
48 curl_setopt($this->curl_handle,CURLOPT_POSTFIELDS,'ident='.$studentident);
49 $buffer = curl_exec($this->curl_handle);
50
51 preg_match('/Nom:/', (string)$buffer,$matches0);
52 preg_match('/20[0-9][0-9]\/20[0-9][0-9]/', (string)$buffer,$matches1 );
53 preg_match('/[0-9]{16}/', (string)$buffer,$matches2);
54
55 if ( ! $matches0[0])
56 Throw new Exception('Identifiant de l\'étudiant est non reconnu' , 807);
57
58 if ( $matches1[0]!=$au)
59 Throw new Exception('Payement non effectué !', 809);
60
61 $ref=$matches2[0];
62
63 return $ref;
64 }
65
66
67 /*
68 * Make connection to the Server and authenticate
69 *
70 * @return bool true on connection success, false if not
71 */
72 public function connect() {
73
74 try {
75
76 $this->curl_handle = curl_init();
77 curl_setopt($this->curl_handle,CURLOPT_URL,"inscription.edu.demo");
78 curl_setopt($this->curl_handle,CURLOPT_CONNECTTIMEOUT,2);
79 curl_setopt($this->curl_handle,CURLOPT_RETURNTRANSFER,1);
80
81 return true;
82
83 } catch ( Exception $e ) {
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 53
84 $this->setLastError ( $e->getCode (), $e->getMessage () );
85 return false;
86 }
87
88 }
89
90 /*
91 * Disconnect from the server by executing a logout command
92 *
93 * @return bool true (allways)
94 */
95 public function disconnect() {
96
97 curl_close($this->curl_handle);
98
99 return true;
100 }
101
102 }
103
104
2.3. Fichiers WSDL
2.3.1. WSDL exposé par PodBridge1.2 sur
« podbridge.intranet.demo »
Source :
http://podbridge.intranet.demo/projects/unstable/podbridge/web/frontend_dev.php/wsdl/all
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" name="PodBridge" targetNamespace="urn:pbns" xmlns:pbns="urn:pbns" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ippservicens="urn:ippservicens" xmlns:ftpacntns="urn:ftpacntns" xmlns:bdetuns="urn:bdetuns" xmlns:SMSServicens="urn:SMSServicens" xmlns:apaclmanns="urn:apaclmanns" xmlns:wwwsubscrns="urn:wwwsubscrns">
<types>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:pbns" elementFormDefault="qualified" attributeFormDefault="qualified">
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 54
<xsd:complexType name="Tstatus">
<xsd:sequence>
<xsd:element name="msg" type="xsd:string"/>
<xsd:element name="code" type="xsd:integer"/>
</xsd:sequence>
</xsd:complexType>
<element name="ping">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="key" type="xsd:string"/>
<xsd:element name="sync" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="notify" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="transId" type="xsd:string" minOccurs="0" maxOccurs="1"/>
<xsd:element name="abort" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</element>
<element name="pingResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="transId" type="xsd:string"/>
<xsd:element name="transDate" type="xsd:string"/>
<xsd:element name="status" type="pbns:Tstatus" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</element>
</schema>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:ippservicens" elementFormDefault="qualified" attributeFormDefault="qualified">
<xsd:import namespace="urn:pbns"/>
<element name="doPrintWebPage">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="key" type="xsd:string"/>
<xsd:element name="sync" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="notify" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="transId" type="xsd:string" minOccurs="0"
maxOccurs="1"/>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 55
<xsd:element name="abort" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="url" type="xsd:string"/>
<xsd:element name="jobname" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</element>
<element name="doPrintWebPageResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="transId" type="xsd:string"/>
<xsd:element name="transDate" type="xsd:string"/>
<xsd:element name="status" type="pbns:Tstatus" minOccurs="0" maxOccurs="1"/>
<xsd:element name="response" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</element>
<element name="doPrintInternalDocument">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="key" type="xsd:string"/>
<xsd:element name="sync" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="notify" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="transId" type="xsd:string" minOccurs="0" maxOccurs="1"/>
<xsd:element name="abort" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="filepath" type="xsd:string"/>
<xsd:element name="jobname" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</element>
<element name="doPrintInternalDocumentResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="transId" type="xsd:string"/>
<xsd:element name="transDate" type="xsd:string"/>
<xsd:element name="status" type="pbns:Tstatus" minOccurs="0" maxOccurs="1"/>
<xsd:element name="response" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 56
</xsd:sequence>
</xsd:complexType>
</element>
<element name="getPrinters">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="key" type="xsd:string"/>
<xsd:element name="sync" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="notify" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="transId" type="xsd:string" minOccurs="0" maxOccurs="1"/>
<xsd:element name="abort" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</element>
<element name="getPrintersResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="transId" type="xsd:string"/>
<xsd:element name="transDate" type="xsd:string"/>
<xsd:element name="status" type="pbns:Tstatus" minOccurs="0" maxOccurs="1"/>
<xsd:element name="response" type="xsd:string" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</element>
</schema>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:ftpacntns" elementFormDefault="qualified" attributeFormDefault="qualified">
<xsd:import namespace="urn:pbns"/>
<xsd:complexType name="doCreateFTPUserAccountOut">
<xsd:sequence>
<xsd:element name="UserLogin" type="xsd:string"/>
<xsd:element name="Password" type="xsd:string"/>
<xsd:element name="ServerDomain" type="xsd:string"/>
<xsd:element name="FTPPort" type="xsd:integer"/>
</xsd:sequence>
</xsd:complexType>
<element name="doCreateFTPUserAccount">
<xsd:complexType>
<xsd:sequence>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 57
<xsd:element name="key" type="xsd:string"/>
<xsd:element name="sync" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="notify" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="transId" type="xsd:string" minOccurs="0" maxOccurs="1"/>
<xsd:element name="abort" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="user" type="xsd:string"/>
<xsd:element name="expiry_date" type="xsd:string"/>
<xsd:element name="use_welcome" type="xsd:boolean"/>
</xsd:sequence>
</xsd:complexType>
</element>
<element name="doCreateFTPUserAccountResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="transId" type="xsd:string"/>
<xsd:element name="transDate" type="xsd:string"/>
<xsd:element name="status" type="pbns:Tstatus" minOccurs="0" maxOccurs="1"/>
<xsd:element name="response" type="ftpacntns:doCreateFTPUserAccountOut" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</element>
<element name="setFTPUserAccountExpiryDate">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="key" type="xsd:string"/>
<xsd:element name="sync" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="notify" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="transId" type="xsd:string" minOccurs="0" maxOccurs="1"/>
<xsd:element name="abort" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="user" type="xsd:string"/>
<xsd:element name="expiry_date" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</element>
<element name="setFTPUserAccountExpiryDateResponse">
<xsd:complexType>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 58
<xsd:sequence>
<xsd:element name="transId" type="xsd:string"/>
<xsd:element name="transDate" type="xsd:string"/>
<xsd:element name="status" type="pbns:Tstatus" minOccurs="0" maxOccurs="1"/>
<xsd:element name="response" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</element>
<element name="setFTPUserWelcomeMsg">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="key" type="xsd:string"/>
<xsd:element name="sync" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="notify" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="transId" type="xsd:string" minOccurs="0" maxOccurs="1"/>
<xsd:element name="abort" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="user" type="xsd:string"/>
<xsd:element name="message" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</element>
<element name="setFTPUserWelcomeMsgResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="transId" type="xsd:string"/>
<xsd:element name="transDate" type="xsd:string"/>
<xsd:element name="status" type="pbns:Tstatus" minOccurs="0" maxOccurs="1"/>
<xsd:element name="response" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</element>
<element name="doDisableFTPUserWelcomeMsg">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="key" type="xsd:string"/>
<xsd:element name="sync" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 59
<xsd:element name="notify" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="transId" type="xsd:string" minOccurs="0" maxOccurs="1"/>
<xsd:element name="abort" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="user" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</element>
<element name="doDisableFTPUserWelcomeMsgResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="transId" type="xsd:string"/>
<xsd:element name="transDate" type="xsd:string"/>
<xsd:element name="status" type="pbns:Tstatus" minOccurs="0" maxOccurs="1"/>
<xsd:element name="response" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</element>
<element name="doChangeFTPUserPassword">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="key" type="xsd:string"/>
<xsd:element name="sync" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="notify" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="transId" type="xsd:string" minOccurs="0" maxOccurs="1"/>
<xsd:element name="abort" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="user" type="xsd:string"/>
<xsd:element name="oldpassword" type="xsd:string"/>
<xsd:element name="newpassword" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</element>
<element name="doChangeFTPUserPasswordResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="transId" type="xsd:string"/>
<xsd:element name="transDate" type="xsd:string"/>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 60
<xsd:element name="status" type="pbns:Tstatus" minOccurs="0" maxOccurs="1"/>
<xsd:element name="response" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</element>
<element name="doDeleteFTPUserAccount">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="key" type="xsd:string"/>
<xsd:element name="sync" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="notify" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="transId" type="xsd:string" minOccurs="0" maxOccurs="1"/>
<xsd:element name="abort" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="user" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</element>
<element name="doDeleteFTPUserAccountResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="transId" type="xsd:string"/>
<xsd:element name="transDate" type="xsd:string"/>
<xsd:element name="status" type="pbns:Tstatus" minOccurs="0" maxOccurs="1"/>
<xsd:element name="response" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</element>
<element name="doFTPsendFile">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="key" type="xsd:string"/>
<xsd:element name="sync" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="notify" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="transId" type="xsd:string" minOccurs="0" maxOccurs="1"/>
<xsd:element name="abort" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 61
<xsd:element name="file" type="xsd:string"/>
<xsd:element name="user" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</element>
<element name="doFTPsendFileResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="transId" type="xsd:string"/>
<xsd:element name="transDate" type="xsd:string"/>
<xsd:element name="status" type="pbns:Tstatus" minOccurs="0" maxOccurs="1"/>
<xsd:element name="response" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</element>
</schema>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:bdetuns" elementFormDefault="qualified" attributeFormDefault="qualified">
<xsd:import namespace="urn:pbns"/>
<xsd:complexType name="getStudentByIdOut">
<xsd:sequence>
<xsd:element name="id" type="xsd:string"/>
<xsd:element name="nom" type="xsd:string"/>
<xsd:element name="prenom" type="xsd:string"/>
<xsd:element name="dep" type="xsd:string"/>
<xsd:element name="spec" type="xsd:string"/>
<xsd:element name="niveau" type="xsd:integer"/>
<xsd:element name="tel" type="xsd:string"/>
<xsd:element name="email" type="xsd:string"/>
<xsd:element name="loginftp" type="xsd:string"/>
<xsd:element name="adrmac" type="xsd:string"/>
<xsd:element name="refrecu" type="xsd:string"/>
<xsd:element name="process" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<element name="getStudentById">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="key" type="xsd:string"/>
<xsd:element name="sync" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="notify" type="xsd:boolean" minOccurs="0"
maxOccurs="1"/>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 62
<xsd:element name="transId" type="xsd:string" minOccurs="0" maxOccurs="1"/>
<xsd:element name="abort" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="id" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</element>
<element name="getStudentByIdResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="transId" type="xsd:string"/>
<xsd:element name="transDate" type="xsd:string"/>
<xsd:element name="status" type="pbns:Tstatus" minOccurs="0" maxOccurs="1"/>
<xsd:element name="response" type="bdetuns:getStudentByIdOut" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</element>
<element name="updateStudentById">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="key" type="xsd:string"/>
<xsd:element name="sync" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="notify" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="transId" type="xsd:string" minOccurs="0" maxOccurs="1"/>
<xsd:element name="abort" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="id" type="xsd:string"/>
<xsd:element name="tel" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="email" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="loginftp" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="adrmac" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="refrecu" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="process" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 63
</element>
<element name="updateStudentByIdResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="transId" type="xsd:string"/>
<xsd:element name="transDate" type="xsd:string"/>
<xsd:element name="status" type="pbns:Tstatus" minOccurs="0" maxOccurs="1"/>
<xsd:element name="response" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</element>
<xsd:complexType name="retArray">
<xsd:sequence>
<xsd:element name="nextid" type="xsd:string"/>
<xsd:element name="last" type="xsd:boolean"/>
</xsd:sequence>
</xsd:complexType>
<element name="getNextId">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="key" type="xsd:string"/>
<xsd:element name="sync" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="notify" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="transId" type="xsd:string" minOccurs="0" maxOccurs="1"/>
<xsd:element name="abort" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="id" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="filter" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</element>
<element name="getNextIdResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="transId" type="xsd:string"/>
<xsd:element name="transDate" type="xsd:string"/>
<xsd:element name="status" type="pbns:Tstatus" minOccurs="0" maxOccurs="1"/>
<xsd:element name="response" type="bdetuns:retArray" minOccurs="0"
maxOccurs="1"/>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 64
</xsd:sequence>
</xsd:complexType>
</element>
</schema>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:SMSServicens" elementFormDefault="qualified" attributeFormDefault="qualified">
<xsd:import namespace="urn:pbns"/>
<element name="doSendSMS">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="key" type="xsd:string"/>
<xsd:element name="sync" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="notify" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="transId" type="xsd:string" minOccurs="0" maxOccurs="1"/>
<xsd:element name="abort" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="destinataire" type="xsd:string"/>
<xsd:element name="message" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</element>
<element name="doSendSMSResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="transId" type="xsd:string"/>
<xsd:element name="transDate" type="xsd:string"/>
<xsd:element name="status" type="pbns:Tstatus" minOccurs="0" maxOccurs="1"/>
<xsd:element name="response" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</element>
</schema>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:apaclmanns" elementFormDefault="qualified" attributeFormDefault="qualified">
<xsd:import namespace="urn:pbns"/>
<xsd:complexType name="doForwardMACaddrOut">
<xsd:sequence>
<xsd:element name="ssid" type="xsd:string"/>
<xsd:element name="auth_key" type="xsd:string"/>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 65
</xsd:sequence>
</xsd:complexType>
<element name="doForwardMACaddr">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="key" type="xsd:string"/>
<xsd:element name="sync" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="notify" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="transId" type="xsd:string" minOccurs="0" maxOccurs="1"/>
<xsd:element name="abort" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="macaddr" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</element>
<element name="doForwardMACaddrResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="transId" type="xsd:string"/>
<xsd:element name="transDate" type="xsd:string"/>
<xsd:element name="status" type="pbns:Tstatus" minOccurs="0" maxOccurs="1"/>
<xsd:element name="response" type="apaclmanns:doForwardMACaddrOut" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</element>
<element name="doRomoveForwordedMACaddr">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="key" type="xsd:string"/>
<xsd:element name="sync" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="notify" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="transId" type="xsd:string" minOccurs="0" maxOccurs="1"/>
<xsd:element name="abort" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="macaddr" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</element>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 66
<element name="doRomoveForwordedMACaddrResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="transId" type="xsd:string"/>
<xsd:element name="transDate" type="xsd:string"/>
<xsd:element name="status" type="pbns:Tstatus" minOccurs="0" maxOccurs="1"/>
<xsd:element name="response" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</element>
</schema>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:wwwsubscrns" elementFormDefault="qualified" attributeFormDefault="qualified">
<xsd:import namespace="urn:pbns"/>
<xsd:complexType name="getAccuseOut">
<xsd:sequence>
<xsd:element name="refaccuse" type="xsd:string"/>
<xsd:element name="urlaccuse" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<element name="getAccuse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="key" type="xsd:string"/>
<xsd:element name="sync" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="notify" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="transId" type="xsd:string" minOccurs="0" maxOccurs="1"/>
<xsd:element name="abort" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="studentident" type="xsd:string"/>
<xsd:element name="au" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</element>
<element name="getAccuseResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="transId" type="xsd:string"/>
<xsd:element name="transDate" type="xsd:string"/>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 67
<xsd:element name="status" type="pbns:Tstatus" minOccurs="0" maxOccurs="1"/>
<xsd:element name="response" type="wwwsubscrns:getAccuseOut" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</element>
</schema>
</types>
<portType name="PodBridgePortType">
<operation name="ping">
<input message="pbns:PingRequest"/>
<output message="pbns:PingResponse"/>
</operation>
<operation name="doPrintWebPage">
<input message="pbns:DoPrintWebPageRequest"/>
<output message="pbns:DoPrintWebPageResponse"/>
</operation>
<operation name="doPrintInternalDocument">
<input message="pbns:DoPrintInternalDocumentRequest"/>
<output message="pbns:DoPrintInternalDocumentResponse"/>
</operation>
<operation name="getPrinters">
<input message="pbns:GetPrintersRequest"/>
<output message="pbns:GetPrintersResponse"/>
</operation>
<operation name="doCreateFTPUserAccount">
<input message="pbns:DoCreateFTPUserAccountRequest"/>
<output message="pbns:DoCreateFTPUserAccountResponse"/>
</operation>
<operation name="setFTPUserAccountExpiryDate">
<input message="pbns:SetFTPUserAccountExpiryDateRequest"/>
<output message="pbns:SetFTPUserAccountExpiryDateResponse"/>
</operation>
<operation name="setFTPUserWelcomeMsg">
<input message="pbns:SetFTPUserWelcomeMsgRequest"/>
<output message="pbns:SetFTPUserWelcomeMsgResponse"/>
</operation>
<operation name="doDisableFTPUserWelcomeMsg">
<input message="pbns:DoDisableFTPUserWelcomeMsgRequest"/>
<output message="pbns:DoDisableFTPUserWelcomeMsgResponse"/>
</operation>
<operation name="doChangeFTPUserPassword">
<input message="pbns:DoChangeFTPUserPasswordRequest"/>
<output message="pbns:DoChangeFTPUserPasswordResponse"/>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 68
</operation>
<operation name="doDeleteFTPUserAccount">
<input message="pbns:DoDeleteFTPUserAccountRequest"/>
<output message="pbns:DoDeleteFTPUserAccountResponse"/>
</operation>
<operation name="doFTPsendFile">
<input message="pbns:DoFTPsendFileRequest"/>
<output message="pbns:DoFTPsendFileResponse"/>
</operation>
<operation name="getStudentById">
<input message="pbns:GetStudentByIdRequest"/>
<output message="pbns:GetStudentByIdResponse"/>
</operation>
<operation name="updateStudentById">
<input message="pbns:UpdateStudentByIdRequest"/>
<output message="pbns:UpdateStudentByIdResponse"/>
</operation>
<operation name="getNextId">
<input message="pbns:GetNextIdRequest"/>
<output message="pbns:GetNextIdResponse"/>
</operation>
<operation name="doSendSMS">
<input message="pbns:DoSendSMSRequest"/>
<output message="pbns:DoSendSMSResponse"/>
</operation>
<operation name="doForwardMACaddr">
<input message="pbns:DoForwardMACaddrRequest"/>
<output message="pbns:DoForwardMACaddrResponse"/>
</operation>
<operation name="doRomoveForwordedMACaddr">
<input message="pbns:DoRomoveForwordedMACaddrRequest"/>
<output message="pbns:DoRomoveForwordedMACaddrResponse"/>
</operation>
<operation name="getAccuse">
<input message="pbns:GetAccuseRequest"/>
<output message="pbns:GetAccuseResponse"/>
</operation>
</portType>
<binding name="PodBridgeBinding" type="pbns:PodBridgePortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="ping">
<input>
<soap:body use="literal"/>
</input>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 69
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="doPrintWebPage">
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="doPrintInternalDocument">
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="getPrinters">
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="doCreateFTPUserAccount">
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="setFTPUserAccountExpiryDate">
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 70
<operation name="setFTPUserWelcomeMsg">
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="doDisableFTPUserWelcomeMsg">
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="doChangeFTPUserPassword">
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="doDeleteFTPUserAccount">
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="doFTPsendFile">
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="getStudentById">
<input>
<soap:body use="literal"/>
</input>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 71
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="updateStudentById">
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="getNextId">
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="doSendSMS">
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="doForwardMACaddr">
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="doRomoveForwordedMACaddr">
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 72
<operation name="getAccuse">
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<message name="PingRequest">
<part name="body" element="pbns:ping"/>
</message>
<message name="PingResponse">
<part name="body" element="pbns:pingResponse"/>
</message>
<message name="DoPrintWebPageRequest">
<part name="body" element="ippservicens:doPrintWebPage"/>
</message>
<message name="DoPrintWebPageResponse">
<part name="body" element="ippservicens:doPrintWebPageResponse"/>
</message>
<message name="DoPrintInternalDocumentRequest">
<part name="body" element="ippservicens:doPrintInternalDocument"/>
</message>
<message name="DoPrintInternalDocumentResponse">
<part name="body" element="ippservicens:doPrintInternalDocumentResponse"/>
</message>
<message name="GetPrintersRequest">
<part name="body" element="ippservicens:getPrinters"/>
</message>
<message name="GetPrintersResponse">
<part name="body" element="ippservicens:getPrintersResponse"/>
</message>
<message name="DoCreateFTPUserAccountRequest">
<part name="body" element="ftpacntns:doCreateFTPUserAccount"/>
</message>
<message name="DoCreateFTPUserAccountResponse">
<part name="body" element="ftpacntns:doCreateFTPUserAccountResponse"/>
</message>
<message name="SetFTPUserAccountExpiryDateRequest">
<part name="body" element="ftpacntns:setFTPUserAccountExpiryDate"/>
</message>
<message name="SetFTPUserAccountExpiryDateResponse">
<part name="body" element="ftpacntns:setFTPUserAccountExpiryDateResponse"/>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 73
</message>
<message name="SetFTPUserWelcomeMsgRequest">
<part name="body" element="ftpacntns:setFTPUserWelcomeMsg"/>
</message>
<message name="SetFTPUserWelcomeMsgResponse">
<part name="body" element="ftpacntns:setFTPUserWelcomeMsgResponse"/>
</message>
<message name="DoDisableFTPUserWelcomeMsgRequest">
<part name="body" element="ftpacntns:doDisableFTPUserWelcomeMsg"/>
</message>
<message name="DoDisableFTPUserWelcomeMsgResponse">
<part name="body" element="ftpacntns:doDisableFTPUserWelcomeMsgResponse"/>
</message>
<message name="DoChangeFTPUserPasswordRequest">
<part name="body" element="ftpacntns:doChangeFTPUserPassword"/>
</message>
<message name="DoChangeFTPUserPasswordResponse">
<part name="body" element="ftpacntns:doChangeFTPUserPasswordResponse"/>
</message>
<message name="DoDeleteFTPUserAccountRequest">
<part name="body" element="ftpacntns:doDeleteFTPUserAccount"/>
</message>
<message name="DoDeleteFTPUserAccountResponse">
<part name="body" element="ftpacntns:doDeleteFTPUserAccountResponse"/>
</message>
<message name="DoFTPsendFileRequest">
<part name="body" element="ftpacntns:doFTPsendFile"/>
</message>
<message name="DoFTPsendFileResponse">
<part name="body" element="ftpacntns:doFTPsendFileResponse"/>
</message>
<message name="GetStudentByIdRequest">
<part name="body" element="bdetuns:getStudentById"/>
</message>
<message name="GetStudentByIdResponse">
<part name="body" element="bdetuns:getStudentByIdResponse"/>
</message>
<message name="UpdateStudentByIdRequest">
<part name="body" element="bdetuns:updateStudentById"/>
</message>
<message name="UpdateStudentByIdResponse">
<part name="body" element="bdetuns:updateStudentByIdResponse"/>
</message>
<message name="GetNextIdRequest">
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 74
<part name="body" element="bdetuns:getNextId"/>
</message>
<message name="GetNextIdResponse">
<part name="body" element="bdetuns:getNextIdResponse"/>
</message>
<message name="DoSendSMSRequest">
<part name="body" element="SMSServicens:doSendSMS"/>
</message>
<message name="DoSendSMSResponse">
<part name="body" element="SMSServicens:doSendSMSResponse"/>
</message>
<message name="DoForwardMACaddrRequest">
<part name="body" element="apaclmanns:doForwardMACaddr"/>
</message>
<message name="DoForwardMACaddrResponse">
<part name="body" element="apaclmanns:doForwardMACaddrResponse"/>
</message>
<message name="DoRomoveForwordedMACaddrRequest">
<part name="body" element="apaclmanns:doRomoveForwordedMACaddr"/>
</message>
<message name="DoRomoveForwordedMACaddrResponse">
<part name="body" element="apaclmanns:doRomoveForwordedMACaddrResponse"/>
</message>
<message name="GetAccuseRequest">
<part name="body" element="wwwsubscrns:getAccuse"/>
</message>
<message name="GetAccuseResponse">
<part name="body" element="wwwsubscrns:getAccuseResponse"/>
</message>
<service name="PodBridgeService">
<port name="PodBridgePort" binding="pbns:PodBridgeBinding">
<soap:address location="http://podbridge.intranet.demo/projects/unstable/podbridge/web/api/index.php"/>
</port>
</service>
</definitions>
2.3.2. WSDL exposé par PodBridge1.2 sur « ws.rnu.edu.demo »
Source : http://ws.rnu.edu.demo/projects/unstable/podbridge1.2/web/frontend_dev.php/wsdl/all
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 75
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" name="PodBridge" targetNamespace="urn:tns" xmlns:tns="urn:tns" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:pbns="urn:pbns" xmlns:mailacntns="urn:mailacntns">
<types>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:tns" elementFormDefault="qualified" attributeFormDefault="qualified">
<xsd:complexType name="Tstatus">
<xsd:sequence>
<xsd:element name="msg" type="xsd:string"/>
<xsd:element name="code" type="xsd:integer"/>
</xsd:sequence>
</xsd:complexType>
</schema>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:pbns" elementFormDefault="qualified" attributeFormDefault="qualified">
<xsd:import namespace="urn:tns"/>
<element name="ping">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="key" type="xsd:string"/>
<xsd:element name="sync" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="notify" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="transId" type="xsd:string" minOccurs="0" maxOccurs="1"/>
<xsd:element name="abort" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</element>
<element name="pingResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="transId" type="xsd:string"/>
<xsd:element name="transDate" type="xsd:string"/>
<xsd:element name="status" type="tns:Tstatus" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 76
</xsd:complexType>
</element>
</schema>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:mailacntns" elementFormDefault="qualified" attributeFormDefault="qualified">
<xsd:import namespace="urn:tns"/>
<xsd:complexType name="retMailAccount2">
<xsd:sequence>
<xsd:element name="EmailAdress" type="xsd:string"/>
<xsd:element name="Password" type="xsd:string"/>
<xsd:element name="WebMailUrl" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<element name="doCreateMailUserAccount2">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="key" type="xsd:string"/>
<xsd:element name="sync" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="notify" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="transId" type="xsd:string" minOccurs="0" maxOccurs="1"/>
<xsd:element name="abort" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="fstname" type="xsd:string"/>
<xsd:element name="lstname" type="xsd:string"/>
<xsd:element name="genpswd" type="xsd:boolean"/>
<xsd:element name="password" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</element>
<element name="doCreateMailUserAccount2Response">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="transId" type="xsd:string"/>
<xsd:element name="transDate" type="xsd:string"/>
<xsd:element name="status" type="tns:Tstatus" minOccurs="0" maxOccurs="1"/>
<xsd:element name="response" type="mailacntns:retMailAccount2"
minOccurs="0" maxOccurs="1"/>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 77
</xsd:sequence>
</xsd:complexType>
</element>
<xsd:complexType name="retMailAccount">
<xsd:sequence>
<xsd:element name="EmailAdress" type="xsd:string"/>
<xsd:element name="Password" type="xsd:string"/>
<xsd:element name="POP3Port" type="xsd:integer"/>
<xsd:element name="SMTPPort" type="xsd:integer"/>
<xsd:element name="WebMailUrl" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<element name="doCreateMailUserAccount">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="key" type="xsd:string"/>
<xsd:element name="sync" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="notify" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="transId" type="xsd:string" minOccurs="0" maxOccurs="1"/>
<xsd:element name="abort" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="user" type="xsd:string"/>
<xsd:element name="genpswd" type="xsd:boolean"/>
<xsd:element name="password" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</element>
<element name="doCreateMailUserAccountResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="transId" type="xsd:string"/>
<xsd:element name="transDate" type="xsd:string"/>
<xsd:element name="status" type="tns:Tstatus" minOccurs="0" maxOccurs="1"/>
<xsd:element name="response" type="mailacntns:retMailAccount" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</element>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 78
<element name="doChangeMailUserPassword">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="key" type="xsd:string"/>
<xsd:element name="sync" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="notify" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="transId" type="xsd:string" minOccurs="0" maxOccurs="1"/>
<xsd:element name="abort" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="emailaddr" type="xsd:string"/>
<xsd:element name="oldpassword" type="xsd:string"/>
<xsd:element name="newpassword" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</element>
<element name="doChangeMailUserPasswordResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="transId" type="xsd:string"/>
<xsd:element name="transDate" type="xsd:string"/>
<xsd:element name="status" type="tns:Tstatus" minOccurs="0" maxOccurs="1"/>
<xsd:element name="response" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</element>
<element name="doDeleteMailUserAccount">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="key" type="xsd:string"/>
<xsd:element name="sync" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="notify" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="transId" type="xsd:string" minOccurs="0" maxOccurs="1"/>
<xsd:element name="abort" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="emailaddr" type="xsd:string"/>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 79
</xsd:sequence>
</xsd:complexType>
</element>
<element name="doDeleteMailUserAccountResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="transId" type="xsd:string"/>
<xsd:element name="transDate" type="xsd:string"/>
<xsd:element name="status" type="tns:Tstatus" minOccurs="0" maxOccurs="1"/>
<xsd:element name="response" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</element>
<element name="doUnlockMailUserAccount">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="key" type="xsd:string"/>
<xsd:element name="sync" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="notify" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="transId" type="xsd:string" minOccurs="0" maxOccurs="1"/>
<xsd:element name="abort" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="emailaddr" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</element>
<element name="doUnlockMailUserAccountResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="transId" type="xsd:string"/>
<xsd:element name="transDate" type="xsd:string"/>
<xsd:element name="status" type="tns:Tstatus" minOccurs="0" maxOccurs="1"/>
<xsd:element name="response" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 80
</element>
<element name="doLockMailUserAccount">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="key" type="xsd:string"/>
<xsd:element name="sync" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="notify" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="transId" type="xsd:string" minOccurs="0" maxOccurs="1"/>
<xsd:element name="abort" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="emailaddr" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</element>
<element name="doLockMailUserAccountResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="transId" type="xsd:string"/>
<xsd:element name="transDate" type="xsd:string"/>
<xsd:element name="status" type="tns:Tstatus" minOccurs="0" maxOccurs="1"/>
<xsd:element name="response" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</element>
<element name="doSendMail">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="key" type="xsd:string"/>
<xsd:element name="sync" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="notify" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="transId" type="xsd:string" minOccurs="0" maxOccurs="1"/>
<xsd:element name="abort" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="from" type="xsd:string"/>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 81
<xsd:element name="to" type="xsd:string"/>
<xsd:element name="message" type="xsd:string"/>
<xsd:element name="subject" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</element>
<element name="doSendMailResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="transId" type="xsd:string"/>
<xsd:element name="transDate" type="xsd:string"/>
<xsd:element name="status" type="tns:Tstatus" minOccurs="0" maxOccurs="1"/>
<xsd:element name="response" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</element>
</schema>
</types>
<portType name="PodBridgePortType">
<operation name="ping">
<input message="tns:PingRequest"/>
<output message="tns:PingResponse"/>
</operation>
<operation name="doCreateMailUserAccount2">
<input message="tns:DoCreateMailUserAccount2Request"/>
<output message="tns:DoCreateMailUserAccount2Response"/>
</operation>
<operation name="doCreateMailUserAccount">
<input message="tns:DoCreateMailUserAccountRequest"/>
<output message="tns:DoCreateMailUserAccountResponse"/>
</operation>
<operation name="doChangeMailUserPassword">
<input message="tns:DoChangeMailUserPasswordRequest"/>
<output message="tns:DoChangeMailUserPasswordResponse"/>
</operation>
<operation name="doDeleteMailUserAccount">
<input message="tns:DoDeleteMailUserAccountRequest"/>
<output message="tns:DoDeleteMailUserAccountResponse"/>
</operation>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 82
<operation name="doUnlockMailUserAccount">
<input message="tns:DoUnlockMailUserAccountRequest"/>
<output message="tns:DoUnlockMailUserAccountResponse"/>
</operation>
<operation name="doLockMailUserAccount">
<input message="tns:DoLockMailUserAccountRequest"/>
<output message="tns:DoLockMailUserAccountResponse"/>
</operation>
<operation name="doSendMail">
<input message="tns:DoSendMailRequest"/>
<output message="tns:DoSendMailResponse"/>
</operation>
</portType>
<binding name="PodBridgeBinding" type="tns:PodBridgePortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="ping">
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="doCreateMailUserAccount2">
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="doCreateMailUserAccount">
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="doChangeMailUserPassword">
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 83
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="doDeleteMailUserAccount">
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="doUnlockMailUserAccount">
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="doLockMailUserAccount">
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="doSendMail">
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 84
</binding>
<message name="PingRequest">
<part name="body" element="pbns:ping"/>
</message>
<message name="PingResponse">
<part name="body" element="pbns:pingResponse"/>
</message>
<message name="DoCreateMailUserAccount2Request">
<part name="body" element="mailacntns:doCreateMailUserAccount2"/>
</message>
<message name="DoCreateMailUserAccount2Response">
<part name="body" element="mailacntns:doCreateMailUserAccount2Response"/>
</message>
<message name="DoCreateMailUserAccountRequest">
<part name="body" element="mailacntns:doCreateMailUserAccount"/>
</message>
<message name="DoCreateMailUserAccountResponse">
<part name="body" element="mailacntns:doCreateMailUserAccountResponse"/>
</message>
<message name="DoChangeMailUserPasswordRequest">
<part name="body" element="mailacntns:doChangeMailUserPassword"/>
</message>
<message name="DoChangeMailUserPasswordResponse">
<part name="body" element="mailacntns:doChangeMailUserPasswordResponse"/>
</message>
<message name="DoDeleteMailUserAccountRequest">
<part name="body" element="mailacntns:doDeleteMailUserAccount"/>
</message>
<message name="DoDeleteMailUserAccountResponse">
<part name="body" element="mailacntns:doDeleteMailUserAccountResponse"/>
</message>
<message name="DoUnlockMailUserAccountRequest">
<part name="body" element="mailacntns:doUnlockMailUserAccount"/>
</message>
<message name="DoUnlockMailUserAccountResponse">
<part name="body" element="mailacntns:doUnlockMailUserAccountResponse"/>
</message>
<message name="DoLockMailUserAccountRequest">
<part name="body" element="mailacntns:doLockMailUserAccount"/>
</message>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 85
<message name="DoLockMailUserAccountResponse">
<part name="body" element="mailacntns:doLockMailUserAccountResponse"/>
</message>
<message name="DoSendMailRequest">
<part name="body" element="mailacntns:doSendMail"/>
</message>
<message name="DoSendMailResponse">
<part name="body" element="mailacntns:doSendMailResponse"/>
</message>
<service name="PodBridgeService">
<port name="PodBridgePort" binding="tns:PodBridgeBinding">
<soap:address location="http://ws.rnu.edu.demo/projects/unstable/podbridge1.2/web/api/index.php"/>
</port>
</service>
</definitions>
2.3.3. WSDL du service « ProcessRUById »
Source : processRUById.wsdl
<?xml version="1.0" encoding="UTF-8"?>
<definitions name="processRUById" targetNamespace="http://j2ee.netbeans.org/wsdl/processRUById/processRUById"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://j2ee.netbeans.org/wsdl/processRUById/processRUById" xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype">
<types/>
<message name="processRUByIdOperationRequest">
<part name="identifiant" type="xsd:string"/>
</message>
<message name="processRUByIdOperationResponse">
<part name="statut" type="xsd:string"/>
</message>
<portType name="processRUByIdPortType">
<operation name="processRUByIdOperation">
<input name="processRUByIdRequest"
message="tns:processRUByIdOperationRequest"/>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 86
<output name="processRUByIdResponse" message="tns:processRUByIdOperationResponse"/>
</operation>
</portType>
<plnk:partnerLinkType name="processRUById">
<!-- A partner link type is automatically generated when a new port type is added. Partner link types are used by BPEL processes.
In a BPEL process, a partner link represents the interaction between the BPEL process and a partner service. Each partner link is associated with a partner link type.
A partner link type characterizes the conversational relationship between two services. The partner link type can have one or two roles.-->
<plnk:role name="processRUByIdPortTypeRole" portType="tns:processRUByIdPortType"/>
</plnk:partnerLinkType>
</definitions>
2.3.4. WSDL du service « BatchProcessRU »
<?xml version="1.0" encoding="UTF-8"?>
2 <definitions name="BatchProcessRU" targetNamespace="http://j2ee.netbeans.org/wsdl/BatchProcessRU/BatchProcessRU"
3 xmlns="http://schemas.xmlsoap.org/wsdl/"
4 xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
5 xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://j2ee.netbeans.org/wsdl/BatchProcessRU/BatchProcessRU" xmlns:ns="http://xml.netbeans.org/schema/BatchProcessRUTypes.xsd" xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype">
6 <types>
7 <xsd:schema targetNamespace="http://j2ee.netbeans.org/wsdl/BatchProcessRU/BatchProcessRU">
8 <xsd:import namespace="http://xml.netbeans.org/schema/BatchProcessRUTypes.xsd" schemaLocation="BatchProcessRUTypes.xsd"/>
9 </xsd:schema>
10 </types>
11 <message name="BatchProcessRUOperationRequest">
12 <part name="part1" type="ns:input"/>
13 </message>
14 <message name="BatchProcessRUOperationResponse">
15 <part name="part1" type="ns:output"/>
16 </message>
17 <portType name="BatchProcessRUPortType">
18 <operation name="BatchProcessRUOperation">
19 <input name="input1"
message="tns:BatchProcessRUOperationRequest"/>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 87
20 <output name="output1" message="tns:BatchProcessRUOperationResponse"/>
21 </operation>
22 </portType>
23 <plnk:partnerLinkType name="BatchProcessRU">
24 <!-- A partner link type is automatically generated when a new port type is added. Partner link types are used by BPEL processes.
25 In a BPEL process, a partner link represents the interaction between the BPEL process and a partner service. Each partner link is associated with a partner link type.
26 A partner link type characterizes the conversational relationship between two services. The partner link type can have one or two roles.-->
27 <plnk:role name="BatchProcessRUPortTypeRole" portType="tns:BatchProcessRUPortType"/>
28 </plnk:partnerLinkType>
29 </definitions>
30
31
2.4. Fichier XSD (Définition des paramètres d’E/S du processus
BatchProcessRU)
Source : BatchProcessRUTypes.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://xml.netbeans.org/schema/BatchProcessRUTypes.xsd"
xmlns:tns="http://xml.netbeans.org/schema/BatchProcessRUTypes.xsd"
elementFormDefault="qualified">
<xsd:complexType name="input">
<xsd:sequence>
<xsd:element name="filter" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="output">
<xsd:sequence>
<xsd:element name="message" type="xsd:string"/>
<xsd:element name="statecode" type="xsd:integer"/>
<xsd:element name="date">
<xsd:complexType>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 88
<xsd:sequence>
<xsd:element name="start" type="xsd:string"/>
<xsd:element name="end" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
2.5. Fichiers BPEL
2.5.1. Fichier source : ProcessRUById.bpel
<?xml version="1.0" encoding="UTF-8"?>
<process
name="processRUById"
targetNamespace="http://enterprise.netbeans.org/bpel/processRUById/processRUById"
xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sxt="http://www.sun.com/wsbpel/2.0/process/executable/SUNExtension/Trace"
xmlns:sxed="http://www.sun.com/wsbpel/2.0/process/executable/SUNExtension/Editor"
xmlns:sxat="http://www.sun.com/wsbpel/2.0/process/executable/SUNExtension/Attachment"
xmlns:sxeh="http://www.sun.com/wsbpel/2.0/process/executable/SUNExtension/ErrorHandling"
xmlns:tns="http://enterprise.netbeans.org/bpel/processRUById/processRUById" xmlns:sxed2="http://www.sun.com/wsbpel/2.0/process/executable/SUNExtension/Editor2" xmlns:ns0="urn:wwwsubscrns" xmlns:ns1="urn:bdetuns" xmlns:ns2="urn:lprintns" xmlns:pbns="urn:pbns" xmlns:ns3="urn:ftpacntns" xmlns:ns4="urn:mailacntns" xmlns:sxxf="http://www.sun.com/wsbpel/2.0/process/executable/SUNExtension/XPathFunctions" xmlns:ns5="urn:apaclmanns" xmlns:sxtx="http://www.sun.com/wsbpel/2.0/process/executable/SUNExtension/Transaction" sxtx:atomic="no" xmlns:ns6="urn:ippservicens" xmlns:ns7="urn:SMSServicens" xmlns:ns8="urn:tns">
<import namespace="http://j2ee.netbeans.org/wsdl/processRUById/processRUById"
location="processRUById.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 89
<import namespace="http://enterprise.netbeans.org/bpel/servicesWrapper" location="servicesWrapper.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
<import namespace="urn:pbns" location="services.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
<import namespace="http://enterprise.netbeans.org/bpel/services_rnuWrapper" location="services_rnuWrapper.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
<import namespace="urn:tns" location="services_rnu.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
<partnerLinks>
<partnerLink name="pbServicesLocalPL" xmlns:tns="http://enterprise.netbeans.org/bpel/servicesWrapper" partnerLinkType="tns:PodBridgeLinkType" partnerRole="PodBridgeRole"/>
<partnerLink name="pbServicesRNUPL" xmlns:tns="http://enterprise.netbeans.org/bpel/services_rnuWrapper" partnerLinkType="tns:PodBridgeLinkType" partnerRole="PodBridgeRole"/>
<partnerLink name="processRUByIdPL" xmlns:tns="http://j2ee.netbeans.org/wsdl/processRUById/processRUById" partnerLinkType="tns:processRUById" myRole="processRUByIdPortTypeRole"/>
</partnerLinks>
<variables>
<variable name="DoSendSMS_bienvenue_Out" messageType="pbns:DoSendSMSResponse"/>
<variable name="DoSendSMS_bienvenue_In" messageType="pbns:DoSendSMSRequest"/>
<variable name="MSG_BIENVENUE" type="xsd:string"/>
<variable name="DoSendMail_bienvenue_Out" messageType="ns8:DoSendMailResponse"/>
<variable name="DoSendMail_bienvenue_In" messageType="ns8:DoSendMailRequest"/>
<variable name="DoSendMail_wifi_Out" messageType="ns8:DoSendMailResponse"/>
<variable name="DoSendMail_wifi_In" messageType="ns8:DoSendMailRequest"/>
<variable name="DoSendMail_ftp_Out" messageType="ns8:DoSendMailResponse"/>
<variable name="DoSendMail_ftp_In" messageType="ns8:DoSendMailRequest"/>
<variable name="MSG_PARAM_WIFI" type="xsd:string"/>
<variable name="MSG_PARAM_FTP" type="xsd:string"/>
<variable name="MSG_PARAM_MAIL" type="xsd:string"/>
<variable name="DoSendMail_mail_Out" messageType="ns8:DoSendMailResponse"/>
<variable name="DoSendMail_mail_In" messageType="ns8:DoSendMailRequest"/>
<variable name="DoCreateMailUserAccount2Out" messageType="ns8:DoCreateMailUserAccount2Response"/>
<variable name="DoCreateMailUserAccount2In"
messageType="ns8:DoCreateMailUserAccount2Request"/>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 90
<variable name="DoSendSMSOut_wifi" messageType="pbns:DoSendSMSResponse"/>
<variable name="DoSendSMSIn_wifi" messageType="pbns:DoSendSMSRequest"/>
<variable name="DoSendSMSOut_mail" messageType="pbns:DoSendSMSResponse"/>
<variable name="DoSendSMSIn_mail" messageType="pbns:DoSendSMSRequest"/>
<variable name="DoSendSMSOut_ftp" messageType="pbns:DoSendSMSResponse"/>
<variable name="DoSendSMSIn_ftp" messageType="pbns:DoSendSMSRequest"/>
<variable name="GetAccuseOut" messageType="pbns:GetAccuseResponse"/>
<variable name="GetAccuseIn" messageType="pbns:GetAccuseRequest"/>
<variable name="UpdateStudentByIdOut" messageType="pbns:UpdateStudentByIdResponse"/>
<variable name="UpdateStudentByIdIn" messageType="pbns:UpdateStudentByIdRequest"/>
<variable name="SetFTPUserWelcomeMsgOut" messageType="pbns:SetFTPUserWelcomeMsgResponse"/>
<variable name="SetFTPUserWelcomeMsgIn" messageType="pbns:SetFTPUserWelcomeMsgRequest"/>
<variable name="DoFTPsendFileOut1" messageType="pbns:DoFTPsendFileResponse"/>
<variable name="DoFTPsendFileIn1" messageType="pbns:DoFTPsendFileRequest"/>
<variable name="DoForwardMACaddrOut" messageType="pbns:DoForwardMACaddrResponse"/>
<variable name="DoForwardMACaddrIn" messageType="pbns:DoForwardMACaddrRequest"/>
<variable name="SetFTPUserAccountExpiryDateOut" messageType="pbns:SetFTPUserAccountExpiryDateResponse"/>
<variable name="SetFTPUserAccountExpiryDateIn" messageType="pbns:SetFTPUserAccountExpiryDateRequest"/>
<variable name="DoFTPsendFileOut" messageType="pbns:DoFTPsendFileResponse"/>
<variable name="DoFTPsendFileIn" messageType="pbns:DoFTPsendFileRequest"/>
<variable name="processRUByIdOperationOut1" xmlns:tns="http://j2ee.netbeans.org/wsdl/processRUById/processRUById" messageType="tns:processRUByIdOperationResponse"/>
<variable name="DoCreateFTPUserAccountOut" messageType="pbns:DoCreateFTPUserAccountResponse"/>
<variable name="DoCreateFTPUserAccountIn" messageType="pbns:DoCreateFTPUserAccountRequest"/>
<variable name="GetStudentByIdOut" messageType="pbns:GetStudentByIdResponse"/>
<variable name="GetStudentByIdIn" messageType="pbns:GetStudentByIdRequest"/>
<variable name="DoPrintWebPageOut" xmlns:pbns="urn:pbns"
messageType="pbns:DoPrintWebPageResponse"/>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 91
<variable name="DoPrintWebPageIn" xmlns:pbns="urn:pbns" messageType="pbns:DoPrintWebPageRequest"/>
<variable name="processRUByIdOperationOut" xmlns:tns="http://j2ee.netbeans.org/wsdl/processRUById/processRUById" messageType="tns:processRUByIdOperationResponse"/>
<variable name="processRUByIdOperationIn" xmlns:tns="http://j2ee.netbeans.org/wsdl/processRUById/processRUById" messageType="tns:processRUByIdOperationRequest"/>
<variable name="SYNC" type="xsd:boolean"/>
<variable name="KEY" type="xsd:string"/>
<variable name="KEY_EMAIL" type="xsd:string"/>
<variable name="FTP_CREATED" type="xsd:boolean"/>
<variable name="MAC_FRWD" type="xsd:boolean"/>
<variable name="MAIL_SENDER" type="xsd:string"/>
</variables>
<sequence name="main_seq">
<receive name="Receive" createInstance="yes" partnerLink="processRUByIdPL" operation="processRUByIdOperation" xmlns:tns="http://j2ee.netbeans.org/wsdl/processRUById/processRUById" portType="tns:processRUByIdPortType" variable="processRUByIdOperationIn"/>
<assign name="initialisation">
<copy>
<from>true()</from>
<to variable="SYNC"/>
</copy>
<copy>
<from>'9818549272864b45c730'</from>
<to variable="KEY"/>
</copy>
<copy>
<from>false()</from>
<to variable="FTP_CREATED"/>
</copy>
<copy>
<from>'[email protected]'</from>
<to variable="MAIL_SENDER"/>
</copy>
<copy>
<from>'691292877050480f54b5'</from>
<to variable="KEY_EMAIL"/>
</copy>
<copy>
<from>false()</from>
<to variable="MAC_FRWD"/>
</copy>
</assign>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 92
<sequence name="Sequence1">
<sequence name="Sequence6">
<flow name="Flow22">
<sequence name="FlowSequence11">
<assign name="get_etudiant">
<copy>
<from variable="KEY"/>
<to>$GetStudentByIdIn.body/ns1:key</to>
</copy>
<copy>
<from variable="SYNC"/>
<to>$GetStudentByIdIn.body/ns1:sync</to>
</copy>
<copy>
<from variable="processRUByIdOperationIn" part="identifiant"/>
<to>$GetStudentByIdIn.body/ns1:id</to>
</copy>
</assign>
<invoke name="GET_ETUDIANT" partnerLink="pbServicesLocalPL" operation="getStudentById" portType="pbns:PodBridgePortType" inputVariable="GetStudentByIdIn" outputVariable="GetStudentByIdOut"/>
</sequence>
<sequence name="FlowSequence22">
<assign name="gataccuse">
<copy>
<from variable="KEY"/>
<to>$GetAccuseIn.body/ns0:key</to>
</copy>
<copy>
<from variable="SYNC"/>
<to>$GetAccuseIn.body/ns0:sync</to>
</copy>
<copy>
<from variable="processRUByIdOperationIn" part="identifiant"/>
<to>$GetAccuseIn.body/ns0:studentident</to>
</copy>
<copy>
<from>'2009/2010'</from>
<to>$GetAccuseIn.body/ns0:au</to>
</copy>
</assign>
<invoke name="GETACCUSE" partnerLink="pbServicesLocalPL" operation="getAccuse"
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 93
portType="pbns:PodBridgePortType" inputVariable="GetAccuseIn" outputVariable="GetAccuseOut"/>
</sequence>
</flow>
<if name="if_pai_check" xmlns:tns="http://j2ee.netbeans.org/wsdl/processRUById/processRUById">
<condition>0 = $GetAccuseOut.body/ns0:status/pbns:code</condition>
<sequence name="Sequence7">
<assign name="acc_updatedb">
<copy>
<from variable="KEY"/>
<to>$UpdateStudentByIdIn.body/ns1:key</to>
</copy>
<copy>
<from variable="SYNC"/>
<to>$UpdateStudentByIdIn.body/ns1:sync</to>
</copy>
<copy>
<from>$GetAccuseOut.body/ns0:response/ns0:refaccuse</from>
<to>$UpdateStudentByIdIn.body/ns1:refrecu</to>
</copy>
</assign>
<assign name="imprimer">
<copy>
<from variable="KEY"/>
<to>$DoPrintWebPageIn.body/ns6:key</to>
</copy>
<copy>
<from variable="SYNC"/>
<to>$DoPrintWebPageIn.body/ns6:sync</to>
</copy>
<copy>
<from>$GetAccuseOut.body/ns0:response/ns0:urlaccuse</from>
<to>$DoPrintWebPageIn.body/ns6:url</to>
</copy>
<copy>
<from>concat('ACCUSE-', $processRUByIdOperationIn.identifiant)</from>
<to>$DoPrintWebPageIn.body/ns6:jobname</to>
</copy>
</assign>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 94
<invoke name="IMPRIMER" partnerLink="pbServicesLocalPL" operation="doPrintWebPage" portType="pbns:PodBridgePortType" inputVariable="DoPrintWebPageIn" outputVariable="DoPrintWebPageOut"/>
<sequence name="compte_e-mail">
<if name="If_email">
<condition>'' = $GetStudentByIdOut.body/ns1:response/ns1:email</condition>
<sequence name="Sequence3">
<assign name="create_email2">
<copy>
<from>$GetStudentByIdOut.body/ns1:response/ns1:nom</from>
<to>$DoCreateMailUserAccount2In.body/ns4:lstname</to>
</copy>
<copy>
<from>$GetStudentByIdOut.body/ns1:response/ns1:prenom</from>
<to>$DoCreateMailUserAccount2In.body/ns4:fstname</to>
</copy>
<copy>
<from variable="KEY_EMAIL"/>
<to>$DoCreateMailUserAccount2In.body/ns4:key</to>
</copy>
<copy>
<from>false()</from>
<to>$DoCreateMailUserAccount2In.body/ns4:genpswd</to>
</copy>
<copy>
<from variable="processRUByIdOperationIn" part="identifiant"/>
<to>$DoCreateMailUserAccount2In.body/ns4:password</to>
</copy>
<copy>
<from variable="SYNC"/>
<to>$DoCreateMailUserAccount2In.body/ns4:sync</to>
</copy>
</assign>
<invoke name="CREATE_EMAIL2" partnerLink="pbServicesRNUPL" operation="doCreateMailUserAccount2"
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 95
portType="ns8:PodBridgePortType" inputVariable="DoCreateMailUserAccount2In" outputVariable="DoCreateMailUserAccount2Out"/>
<assign name="bd_email">
<copy>
<from variable="SYNC"/>
<to>$UpdateStudentByIdIn.body/ns1:sync</to>
</copy>
<copy>
<from variable="KEY"/>
<to>$UpdateStudentByIdIn.body/ns1:key</to>
</copy>
<copy>
<from>$DoCreateMailUserAccount2Out.body/ns4:response/ns4:EmailAdress</from>
<to>$UpdateStudentByIdIn.body/ns1:email</to>
</copy>
<copy>
<from>$DoCreateMailUserAccount2Out.body/ns4:response/ns4:EmailAdress</from>
<to>$GetStudentByIdOut.body/ns1:response/ns1:email</to>
</copy>
</assign>
<assign name="message_mail">
<copy>
<from>concat('Parametres de votre nouveau compte mail ', '* login: ', $DoCreateMailUserAccount2Out.body/ns4:response/ns4:EmailAdress, ' * password: ', $DoCreateMailUserAccount2Out.body/ns4:response/ns4:Password, ' * Port POP: ', $DoCreateMailUserAccount2Out.body/ns4:response/ns4:POP3Port, $DoCreateMailUserAccount2Out.body/ns4:response/ns4:SMTPPort, " * Port SMTP: '", ' * Consulter vos mails sur http://', $DoCreateMailUserAccount2Out.body/ns4:response/ns4:WebMailUrl)</from>
<to variable="MSG_PARAM_MAIL"/>
</copy>
</assign>
<flow name="mail_notifier">
<sequence name="mail_mail_seq">
<assign name="sendmailmail">
<copy>
<from
variable="KEY_EMAIL"/>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 96
<to>$DoSendMail_mail_In.body/ns4:key</to>
</copy>
<copy>
<from variable="SYNC"/>
<to>$DoSendMail_mail_In.body/ns4:sync</to>
</copy>
<copy>
<from variable="MAIL_SENDER"/>
<to>$DoSendMail_mail_In.body/ns4:from</to>
</copy>
<copy>
<from>$DoCreateMailUserAccount2Out.body/ns4:response/ns4:EmailAdress</from>
<to>$DoSendMail_mail_In.body/ns4:to</to>
</copy>
<copy>
<from>'Parametres de votre nouveau compte mail '</from>
<to>$DoSendMail_mail_In.body/ns4:subject</to>
</copy>
<copy>
<from variable="MSG_PARAM_MAIL"/>
<to>$DoSendMail_mail_In.body/ns4:message</to>
</copy>
</assign>
<invoke name="SENDMAILMAIL" partnerLink="pbServicesRNUPL" operation="doSendMail" portType="ns8:PodBridgePortType" inputVariable="DoSendMail_mail_In" outputVariable="DoSendMail_mail_Out"/>
</sequence>
<sequence name="mail_sms_seq">
<if name="ifhastel_mail">
<condition>$GetStudentByIdOut.body/ns1:response/ns1:tel != ''</condition>
<sequence name="Sequence14">
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 97
<assign name="smsmail">
<copy>
<from variable="KEY"/>
<to>$DoSendSMSIn_mail.body/ns7:key</to>
</copy>
<copy>
<from variable="SYNC"/>
<to>$DoSendSMSIn_mail.body/ns7:sync</to>
</copy>
<copy>
<from>$GetStudentByIdOut.body/ns1:response/ns1:tel</from>
<to>$DoSendSMSIn_mail.body/ns7:destinataire</to>
</copy>
<copy>
<from variable="MSG_PARAM_MAIL"/>
<to>$DoSendSMSIn_mail.body/ns7:message</to>
</copy>
</assign>
<invoke name="SMSMAIL" partnerLink="pbServicesLocalPL" operation="doSendSMS" portType="pbns:PodBridgePortType" inputVariable="DoSendSMSIn_mail" outputVariable="DoSendSMSOut_mail"/>
</sequence>
</if>
</sequence>
</flow>
</sequence>
</if>
</sequence>
<flow name="Flow1">
<sequence name="compte_FTP">
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 98
<if name="If_TI">
<condition>$GetStudentByIdOut.body/ns1:response/ns1:dep = 'TI'</condition>
<sequence name="Sequence2">
<if name="If_existe_ftp">
<condition>$GetStudentByIdOut.body/ns1:response/ns1:loginftp = ''</condition>
<sequence name="Sequence10">
<assign name="create_ftp">
<copy>
<from variable="KEY"/>
<to>$DoCreateFTPUserAccountIn.body/ns3:key</to>
</copy>
<copy>
<from variable="SYNC"/>
<to>$DoCreateFTPUserAccountIn.body/ns3:sync</to>
</copy>
<copy>
<from>'31/12/2019'</from>
<to>$DoCreateFTPUserAccountIn.body/ns3:expiry_date</to>
</copy>
<copy>
<from>concat('etu_', $processRUByIdOperationIn.identifiant)</from>
<to>$DoCreateFTPUserAccountIn.body/ns3:user</to>
</copy>
<copy>
<from>false()</from>
<to>$DoCreateFTPUserAccountIn.body/ns3:use_welcome</to>
</copy>
</assign>
<invoke name="CREATE_FTP" partnerLink="pbServicesLocalPL" operation="doCreateFTPUserAccount" portType="pbns:PodBridgePortType" inputVariable="DoCreateFTPUserAccountIn" outputVariable="DoCreateFTPUserAccountOut"/>
<assign name="bd_loginftp">
<copy>
<from>$DoCreateFTPUserAccountOut.body/ns3:response/ns3:UserLogin</from>
<to>$UpdateStudentByIdIn.body/ns1:loginftp</to>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 99
</copy>
<copy>
<from>$DoCreateFTPUserAccountOut.body/ns3:response/ns3:UserLogin</from>
<to>$GetStudentByIdOut.body/ns1:response/ns1:loginftp</to>
</copy>
<copy>
<from>true()</from>
<to variable="FTP_CREATED"/>
</copy>
</assign>
<assign name="ftp_msg_bienvenu">
<copy>
<from variable="KEY"/>
<to>$SetFTPUserWelcomeMsgIn.body/ns3:key</to>
</copy>
<copy>
<from variable="SYNC"/>
<to>$SetFTPUserWelcomeMsgIn.body/ns3:sync</to>
</copy>
<copy>
<from>concat(sxxf:current-dateTime(), 'Bienvenu ', $GetStudentByIdOut.body/ns1:response/ns1:nom, ' ', $GetStudentByIdOut.body/ns1:response/ns1:prenom, ', AVERTISSEMENT: VOUS ETES LE SEUL RESPONSABLE DU CONTENU DE VOTRE COMPTE OU COMPTE DE PLUS VOUS ETES LIMITE A SON USAGE UNIQUEMENT POUR VOS BESOINS EDUCATIFS !')</from>
<to>$SetFTPUserWelcomeMsgIn.body/ns3:message</to>
</copy>
<copy>
<from>$GetStudentByIdOut.body/ns1:response/ns1:loginftp</from>
<to>$SetFTPUserWelcomeMsgIn.body/ns3:user</to>
</copy>
</assign>
<invoke name="FTP_MSG_BIENVENU" partnerLink="pbServicesLocalPL" operation="setFTPUserWelcomeMsg" portType="pbns:PodBridgePortType" inputVariable="SetFTPUserWelcomeMsgIn"
outputVariable="SetFTPUserWelcomeMsgOut"/>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 100
<assign name="message_ftp">
<copy>
<from>concat('Parametres de votre nouveau compte FTP ', ' * Login : ', $DoCreateFTPUserAccountOut.body/ns3:response/ns3:UserLogin, ' * Password : ', $DoCreateFTPUserAccountOut.body/ns3:response/ns3:Password, ' * FTP Port : ', $DoCreateFTPUserAccountOut.body/ns3:response/ns3:FTPPort, ' * Address : ', $DoCreateFTPUserAccountOut.body/ns3:response/ns3:ServerDomain)</from>
<to variable="MSG_PARAM_FTP"/>
</copy>
</assign>
<flow name="ftp_notifier">
<sequence name="mail_ftp_seq">
<assign name="sendmailftp">
<copy>
<from variable="SYNC"/>
<to>$DoSendMail_ftp_In.body/ns4:sync</to>
</copy>
<copy>
<from variable="MAIL_SENDER"/>
<to>$DoSendMail_ftp_In.body/ns4:from</to>
</copy>
<copy>
<from>$GetStudentByIdOut.body/ns1:response/ns1:email</from>
<to>$DoSendMail_ftp_In.body/ns4:to</to>
</copy>
<copy>
<from>'Parametres de votre nouveau compte FTP'</from>
<to>$DoSendMail_ftp_In.body/ns4:subject</to>
</copy>
<copy>
<from variable="MSG_PARAM_FTP"/>
<to>$DoSendMail_ftp_In.body/ns4:message</to>
</copy>
<copy>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 101
<from variable="KEY_EMAIL"/>
<to>$DoSendMail_ftp_In.body/ns4:key</to>
</copy>
</assign>
<invoke name="SENDMAILFTP" partnerLink="pbServicesRNUPL" operation="doSendMail" portType="ns8:PodBridgePortType" inputVariable="DoSendMail_ftp_In" outputVariable="DoSendMail_ftp_Out"/>
</sequence>
<sequence name="ftp_sms_seq">
<if name="ifhastel_ftp">
<condition>$GetStudentByIdOut.body/ns1:response/ns1:tel != ''</condition>
<sequence name="Sequence16">
<assign name="smsftp">
<copy>
<from variable="KEY"/>
<to>$DoSendSMSIn_ftp.body/ns7:key</to>
</copy>
<copy>
<from variable="SYNC"/>
<to>$DoSendSMSIn_ftp.body/ns7:sync</to>
</copy>
<copy>
<from variable="MSG_PARAM_FTP"/>
<to>$DoSendSMSIn_ftp.body/ns7:message</to>
</copy>
<copy>
<from>$GetStudentByIdOut.body/ns1:response/ns1:tel</from>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 102
<to>$DoSendSMSIn_ftp.body/ns7:destinataire</to>
</copy>
</assign>
<invoke name="SMSFTP" partnerLink="pbServicesLocalPL" operation="doSendSMS" portType="pbns:PodBridgePortType" inputVariable="DoSendSMSIn_ftp" outputVariable="DoSendSMSOut_ftp"/>
</sequence>
</if>
</sequence>
</flow>
</sequence>
<else>
<sequence name="Sequence11">
<assign name="etendre_date_expiration">
<copy>
<from variable="KEY"/>
<to>$SetFTPUserAccountExpiryDateIn.body/ns3:key</to>
</copy>
<copy>
<from variable="SYNC"/>
<to>$SetFTPUserAccountExpiryDateIn.body/ns3:sync</to>
</copy>
<copy>
<from>'31/12/2020'</from>
<to>$SetFTPUserAccountExpiryDateIn.body/ns3:expiry_date</to>
</copy>
<copy>
<from>$GetStudentByIdOut.body/ns1:response/ns1:loginftp</from>
<to>$SetFTPUserAccountExpiryDateIn.body/ns3:user</to>
</copy>
</assign>
<invoke name="ETENDRE_DATE_EXPIRATION" partnerLink="pbServicesLocalPL" operation="setFTPUserAccountExpiryDate" portType="pbns:PodBridgePortType" inputVariable="SetFTPUserAccountExpiryDateIn"
outputVariable="SetFTPUserAccountExpiryDateOut"/>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 103
</sequence>
</else>
</if>
<flow name="Flow3">
<sequence name="cours">
<assign name="envoyer_cours">
<copy>
<from variable="KEY"/>
<to>$DoFTPsendFileIn1.body/ns3:key</to>
</copy>
<copy>
<from variable="SYNC"/>
<to>$DoFTPsendFileIn1.body/ns3:sync</to>
</copy>
<copy>
<from>concat('cours_', $GetStudentByIdOut.body/ns1:response/ns1:spec, $GetStudentByIdOut.body/ns1:response/ns1:niveau)</from>
<to>$DoFTPsendFileIn1.body/ns3:file</to>
</copy>
<copy>
<from>$GetStudentByIdOut.body/ns1:response/ns1:loginftp</from>
<to>$DoFTPsendFileIn1.body/ns3:user</to>
</copy>
</assign>
<invoke name="ENVOYER_COURS" partnerLink="pbServicesLocalPL" operation="doFTPsendFile" portType="pbns:PodBridgePortType" inputVariable="DoFTPsendFileIn1" outputVariable="DoFTPsendFileOut1"/>
</sequence>
<if name="If_niv2_ou_plus">
<condition>$GetStudentByIdOut.body/ns1:response/ns1:niveau > 2</condition>
<sequence name="Sequence9">
<assign name="envoyer_cours_uml">
<copy>
<from variable="KEY"/>
<to>$DoFTPsendFileIn.body/ns3:key</to>
</copy>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 104
<copy>
<from variable="SYNC"/>
<to>$DoFTPsendFileIn.body/ns3:sync</to>
</copy>
<copy>
<from>'Cours-UML.pdf'</from>
<to>$DoFTPsendFileIn.body/ns3:file</to>
</copy>
<copy>
<from>$GetStudentByIdOut.body/ns1:response/ns1:loginftp</from>
<to>$DoFTPsendFileIn.body/ns3:user</to>
</copy>
</assign>
<invoke name="ENVOYER_COURS_UML" partnerLink="pbServicesLocalPL" operation="doFTPsendFile" portType="pbns:PodBridgePortType" inputVariable="DoFTPsendFileIn" outputVariable="DoFTPsendFileOut"/>
</sequence>
</if>
</flow>
</sequence>
</if>
</sequence>
<sequence name="filtrage_mac">
<if name="if_adrmac">
<condition>$GetStudentByIdOut.body/ns1:response/ns1:adrmac != ''</condition>
<sequence name="Sequence13">
<assign name="autorise_mac">
<copy>
<from variable="KEY"/>
<to>$DoForwardMACaddrIn.body/ns5:key</to>
</copy>
<copy>
<from variable="SYNC"/>
<to>$DoForwardMACaddrIn.body/ns5:sync</to>
</copy>
<copy>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 105
<from>$GetStudentByIdOut.body/ns1:response/ns1:adrmac</from>
<to>$DoForwardMACaddrIn.body/ns5:macaddr</to>
</copy>
</assign>
<invoke name="AUTORISE_MAC" partnerLink="pbServicesLocalPL" operation="doForwardMACaddr" portType="pbns:PodBridgePortType" inputVariable="DoForwardMACaddrIn" outputVariable="DoForwardMACaddrOut"/>
<assign name="settrue">
<copy>
<from>true()</from>
<to variable="MAC_FRWD"/>
</copy>
</assign>
<assign name="message_wifi">
<copy>
<from>concat("Dès maintenant Vous etes autorisé à se connecter au réseau sans fil d'ISET Jerba ", ' * SSID : ', $DoForwardMACaddrOut.body/ns5:response/ns5:ssid, ' * Clé : ', $DoForwardMACaddrOut.body/ns5:response/ns5:auth_key)</from>
<to variable="MSG_PARAM_WIFI"/>
</copy>
</assign>
<flow name="wifi_notifier">
<sequence name="mail_wifi_seq">
<assign name="sendmailwifi">
<copy>
<from variable="SYNC"/>
<to>$DoSendMail_wifi_In.body/ns4:sync</to>
</copy>
<copy>
<from variable="MAIL_SENDER"/>
<to>$DoSendMail_wifi_In.body/ns4:from</to>
</copy>
<copy>
<from variable="MSG_PARAM_WIFI"/>
<to>$DoSendMail_wifi_In.body/ns4:message</to>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 106
</copy>
<copy>
<from>$GetStudentByIdOut.body/ns1:response/ns1:email</from>
<to>$DoSendMail_wifi_In.body/ns4:to</to>
</copy>
<copy>
<from>"Vous etes autoriser à se connecté au réseau sans Fil d'ISET Jerba"</from>
<to>$DoSendMail_wifi_In.body/ns4:subject</to>
</copy>
<copy>
<from variable="KEY_EMAIL"/>
<to>$DoSendMail_wifi_In.body/ns4:key</to>
</copy>
</assign>
<invoke name="SENDMAILWIFI" partnerLink="pbServicesRNUPL" operation="doSendMail" portType="ns8:PodBridgePortType" inputVariable="DoSendMail_wifi_In" outputVariable="DoSendMail_wifi_Out"/>
</sequence>
<sequence name="wifi_sms_seq">
<if name="ifhastel_wifi">
<condition>$GetStudentByIdOut.body/ns1:response/ns1:tel != ''</condition>
<sequence name="Sequence15">
<assign name="smswifi">
<copy>
<from variable="KEY"/>
<to>$DoSendSMSIn_wifi.body/ns7:key</to>
</copy>
<copy>
<from variable="SYNC"/>
<to>$DoSendSMSIn_wifi.body/ns7:sync</to>
</copy>
<copy>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 107
<from>$GetStudentByIdOut.body/ns1:response/ns1:tel</from>
<to>$DoSendSMSIn_wifi.body/ns7:destinataire</to>
</copy>
<copy>
<from variable="MSG_PARAM_WIFI"/>
<to>$DoSendSMSIn_wifi.body/ns7:message</to>
</copy>
</assign>
<invoke name="SMSWIFI" partnerLink="pbServicesLocalPL" operation="doSendSMS" portType="pbns:PodBridgePortType" inputVariable="DoSendSMSIn_wifi" outputVariable="DoSendSMSOut_wifi"/>
</sequence>
</if>
</sequence>
</flow>
</sequence>
</if>
</sequence>
</flow>
<assign name="message_bienvenue">
<copy>
<from>concat('Bienvenu ', $GetStudentByIdOut.body/ns1:response/ns1:nom, ' ', $GetStudentByIdOut.body/ns1:response/ns1:prenom, ' ISET Djerba vous souhaite une bonne rentrée universiaire 2009/2010.')</from>
<to variable="MSG_BIENVENUE"/>
</copy>
</assign>
<flow name="Flow23">
<sequence name="FlowSequence">
<assign name="sendmailbienvenue">
<copy>
<from variable="SYNC"/>
<to>$DoSendMail_bienvenue_In.body/ns4:sync</to>
</copy>
<copy>
<from>$GetStudentByIdOut.body/ns1:response/ns1:email</from>
<to>$DoSendMail_bienvenue_In.body/ns4:to</to>
</copy>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 108
<copy>
<from variable="MAIL_SENDER"/>
<to>$DoSendMail_bienvenue_In.body/ns4:from</to>
</copy>
<copy>
<from variable="MSG_BIENVENUE"/>
<to>$DoSendMail_bienvenue_In.body/ns4:message</to>
</copy>
<copy>
<from>'bienvenue'</from>
<to>$DoSendMail_bienvenue_In.body/ns4:subject</to>
</copy>
<copy>
<from variable="KEY_EMAIL"/>
<to>$DoSendMail_bienvenue_In.body/ns4:key</to>
</copy>
</assign>
<invoke name="SENDMAILBIENVENUE" partnerLink="pbServicesRNUPL" operation="doSendMail" portType="ns8:PodBridgePortType" inputVariable="DoSendMail_bienvenue_In" outputVariable="DoSendMail_bienvenue_Out"/>
</sequence>
<sequence name="FlowSequence1">
<assign name="smsbienvenue">
<copy>
<from variable="KEY"/>
<to>$DoSendSMS_bienvenue_In.body/ns7:key</to>
</copy>
<copy>
<from variable="SYNC"/>
<to>$DoSendSMS_bienvenue_In.body/ns7:sync</to>
</copy>
<copy>
<from>$GetStudentByIdOut.body/ns1:response/ns1:tel</from>
<to>$DoSendSMS_bienvenue_In.body/ns7:destinataire</to>
</copy>
<copy>
<from variable="MSG_BIENVENUE"/>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 109
<to>$DoSendSMS_bienvenue_In.body/ns7:message</to>
</copy>
</assign>
<invoke name="SMSBIENVENUE" partnerLink="pbServicesLocalPL" operation="doSendSMS" portType="pbns:PodBridgePortType" inputVariable="DoSendSMS_bienvenue_In" outputVariable="DoSendSMS_bienvenue_Out"/>
</sequence>
</flow>
<assign name="reply_bdetu_ok">
<copy>
<from>'OK'</from>
<to variable="processRUByIdOperationOut" part="statut"/>
</copy>
<copy>
<from>'OK'</from>
<to>$UpdateStudentByIdIn.body/ns1:process</to>
</copy>
</assign>
</sequence>
<else>
<sequence>
<assign name="reply_bdetu_pai">
<copy>
<from>'PAI'</from>
<to variable="processRUByIdOperationOut" part="statut"/>
</copy>
<copy>
<from>'PAI'</from>
<to>$UpdateStudentByIdIn.body/ns1:process</to>
</copy>
</assign>
</sequence>
</else>
</if>
</sequence>
</sequence>
<assign name="mettre_a_jour_bdetu">
<copy>
<from variable="KEY"/>
<to>$UpdateStudentByIdIn.body/ns1:key</to>
</copy>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 110
<copy>
<from variable="SYNC"/>
<to>$UpdateStudentByIdIn.body/ns1:sync</to>
</copy>
<copy>
<from variable="processRUByIdOperationIn" part="identifiant"/>
<to>$UpdateStudentByIdIn.body/ns1:id</to>
</copy>
</assign>
<invoke name="METTRE_A_JOUR_BDETU" partnerLink="pbServicesLocalPL" operation="updateStudentById" xmlns:pbns="urn:pbns" portType="pbns:PodBridgePortType" inputVariable="UpdateStudentByIdIn" outputVariable="UpdateStudentByIdOut"/>
<reply name="Reply" partnerLink="processRUByIdPL" operation="processRUByIdOperation" xmlns:tns="http://j2ee.netbeans.org/wsdl/processRUById/processRUById" portType="tns:processRUByIdPortType" variable="processRUByIdOperationOut"/>
</sequence>
</process>
2.5.2. Fichier Source : BatchProcessRU.bpel
<?xml version="1.0" encoding="UTF-8"?>
<process
name="batchProcessRU"
targetNamespace="http://enterprise.netbeans.org/bpel/BatchProcessRU/batchProcessRU"
xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sxt="http://www.sun.com/wsbpel/2.0/process/executable/SUNExtension/Trace"
xmlns:sxed="http://www.sun.com/wsbpel/2.0/process/executable/SUNExtension/Editor"
xmlns:sxat="http://www.sun.com/wsbpel/2.0/process/executable/SUNExtension/Attachment"
xmlns:sxeh="http://www.sun.com/wsbpel/2.0/process/executable/SUNExtension/ErrorHandling"
xmlns:tns="http://enterprise.netbeans.org/bpel/BatchProcessRU/batchProcessRU" xmlns:sxed2="http://www.sun.com/wsbpel/2.0/process/executable/SUNExtension/Editor2" xmlns:ns0="http://xml.netbeans.org/schema/BatchProcessRUTypes.xsd" xmlns:sxxf="http://www.sun.com/wsbpel/2.0/process/executable/SUNExtension/XPathFun
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 111
ctions" xmlns:ns1="urn:bdetuns" xmlns:ns2="urn:pbns" xmlns:ns3="urn:tns" xmlns:ns4="urn:mailacntns" xmlns:ns5="urn:SMSServicens">
<import namespace="http://j2ee.netbeans.org/wsdl/BatchProcessRU/BatchProcessRU" location="BatchProcessRU.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
<import namespace="http://enterprise.netbeans.org/bpel/getNextIdWrapper" location="getNextIdWrapper.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
<import namespace="urn:pbns" location="getNextId.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
<import namespace="http://enterprise.netbeans.org/bpel/doSendMailWrapper" location="doSendMailWrapper.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
<import namespace="urn:tns" location="doSendMail.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
<import namespace="http://enterprise.netbeans.org/bpel/doSendSMSWrapper" location="doSendSMSWrapper.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
<import namespace="urn:pbns" location="doSendSMS.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
<import namespace="http://j2ee.netbeans.org/wsdl/processRUById/processRUById" location="http://walid-laptop:9080/processRUByIdCA-sun-http-binding/processRUById/processRUById.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
<partnerLinks>
<partnerLink name="BatchProcessRUPL" xmlns:tns="http://j2ee.netbeans.org/wsdl/BatchProcessRU/BatchProcessRU" partnerLinkType="tns:BatchProcessRU" myRole="BatchProcessRUPortTypeRole"/>
<partnerLink name="getNextIdPL" xmlns:tns="http://enterprise.netbeans.org/bpel/getNextIdWrapper" partnerLinkType="tns:PodBridgeGetNextIdLinkType" partnerRole="PodBridgeGetNextIdRole"/>
<partnerLink name="doSendMailPL" xmlns:tns="http://enterprise.netbeans.org/bpel/doSendMailWrapper" partnerLinkType="tns:PodBridgeDoSendMailLinkType" partnerRole="PodBridgeDoSendMailRole"/>
<partnerLink name="doSendSMSPL" xmlns:tns="http://enterprise.netbeans.org/bpel/doSendSMSWrapper" partnerLinkType="tns:PodBridgeDoSendSMSLinkType" partnerRole="PodBridgeDoSendSMSRole"/>
<partnerLink name="processByIdPL" xmlns:tns="http://j2ee.netbeans.org/wsdl/processRUById/processRUById" partnerLinkType="tns:processRUById" partnerRole="processRUByIdPortTypeRole"/>
</partnerLinks>
<variables>
<variable name="MSG" type="xsd:string"/>
<variable name="DoSendSMSOut" messageType="ns2:DoSendSMSResponse"/>
<variable name="DoSendSMSIn" messageType="ns2:DoSendSMSRequest"/>
<variable name="DoSendMailOut" messageType="ns3:DoSendMailResponse"/>
<variable name="DoSendMailIn" messageType="ns3:DoSendMailRequest"/>
<variable name="KEY_RNU" type="xsd:string"/>
<variable name="KEY_LOCAL" type="xsd:string"/>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 112
<variable name="GetNextIdOut" xmlns:pbns="urn:pbns" messageType="pbns:GetNextIdResponse"/>
<variable name="GetNextIdIn" xmlns:pbns="urn:pbns" messageType="pbns:GetNextIdRequest"/>
<variable name="BatchProcessRUOperationOut" xmlns:tns="http://j2ee.netbeans.org/wsdl/BatchProcessRU/BatchProcessRU" messageType="tns:BatchProcessRUOperationResponse"/>
<variable name="BatchProcessRUOperationIn" xmlns:tns="http://j2ee.netbeans.org/wsdl/BatchProcessRU/BatchProcessRU" messageType="tns:BatchProcessRUOperationRequest"/>
<variable name="ProcessRUByIdOperationOut" xmlns:tns="http://j2ee.netbeans.org/wsdl/processRUById/processRUById" messageType="tns:processRUByIdOperationResponse"/>
<variable name="ProcessRUByIdOperationIn" xmlns:tns="http://j2ee.netbeans.org/wsdl/processRUById/processRUById" messageType="tns:processRUByIdOperationRequest"/>
</variables>
<sequence>
<receive name="RECEIVE" createInstance="yes" partnerLink="BatchProcessRUPL" operation="BatchProcessRUOperation" xmlns:tns="http://j2ee.netbeans.org/wsdl/BatchProcessRU/BatchProcessRU" portType="tns:BatchProcessRUPortType" variable="BatchProcessRUOperationIn"/>
<assign name="init">
<copy>
<from>'691292877050480f54b5'</from>
<to variable="KEY_RNU"/>
</copy>
<copy>
<from>'691292877050480f54b5'</from>
<to variable="KEY_LOCAL"/>
</copy>
<copy>
<from>sxxf:current-dateTime()</from>
<to>$BatchProcessRUOperationOut.part1/ns0:date/ns0:start</to>
</copy>
</assign>
<assign name="getnextid_init">
<copy>
<from variable="KEY_LOCAL"/>
<to>$GetNextIdIn.body/ns1:key</to>
</copy>
<copy>
<from>true()</from>
<to>$GetNextIdIn.body/ns1:sync</to>
</copy>
<copy>
<from>$BatchProcessRUOperationIn.part1/ns0:filter</from>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 113
<to>$GetNextIdIn.body/ns1:filter</to>
</copy>
</assign>
<repeatUntil name="RepeatUntil_lastid">
<sequence name="Sequence1">
<invoke name="GETNEXTID" partnerLink="getNextIdPL" operation="getNextId" xmlns:pbns="urn:pbns" portType="pbns:PodBridgeGetNextIdPortType" inputVariable="GetNextIdIn" outputVariable="GetNextIdOut"/>
<if name="ifexist">
<condition>$GetNextIdOut.body/ns1:status/ns2:code = 0</condition>
<sequence name="Sequence2">
<assign name="getnextid">
<copy>
<from>$GetNextIdOut.body/ns1:response/ns1:nextid</from>
<to>$GetNextIdIn.body/ns1:id</to>
</copy>
<copy>
<from variable="KEY_LOCAL"/>
<to>$GetNextIdIn.body/ns1:key</to>
</copy>
<copy>
<from>true()</from>
<to>$GetNextIdIn.body/ns1:sync</to>
</copy>
<copy>
<from>$BatchProcessRUOperationIn.part1/ns0:filter</from>
<to>$GetNextIdIn.body/ns1:filter</to>
</copy>
</assign>
<assign name="processrubyid">
<copy>
<from>$GetNextIdOut.body/ns1:response/ns1:nextid</from>
<to variable="ProcessRUByIdOperationIn" part="identifiant"/>
</copy>
</assign>
<invoke name="PROCESSRUBYID" partnerLink="processByIdPL" operation="processRUByIdOperation" xmlns:tns="http://j2ee.netbeans.org/wsdl/processRUById/processRUById" portType="tns:processRUByIdPortType" inputVariable="ProcessRUByIdOperationIn" outputVariable="ProcessRUByIdOperationOut"/>
</sequence>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 114
</if>
</sequence>
<condition>$GetNextIdOut.body/ns1:response/ns1:last = true() or $GetNextIdOut.body/ns1:status/ns2:code != 0</condition>
</repeatUntil>
<assign name="message">
<copy>
<from>concat('Exécution de ProcessRUById est Terminée avec succès !', '* Démarré : ', $BatchProcessRUOperationOut.part1/ns0:date/ns0:start, ' * Fin : ', sxxf:current-dateTime())</from>
<to variable="MSG"/>
</copy>
</assign>
<flow name="notify_admin">
<sequence name="FlowSequence">
<assign name="mail">
<copy>
<from variable="KEY_RNU"/>
<to>$DoSendMailIn.body/ns4:key</to>
</copy>
<copy>
<from>true()</from>
<to>$DoSendMailIn.body/ns4:sync</to>
</copy>
<copy>
<from>'[email protected]'</from>
<to>$DoSendMailIn.body/ns4:from</to>
</copy>
<copy>
<from>'[email protected]'</from>
<to>$DoSendMailIn.body/ns4:to</to>
</copy>
<copy>
<from>'Exéction de BatchProcessRU terminée !'</from>
<to>$DoSendMailIn.body/ns4:subject</to>
</copy>
<copy>
<from variable="MSG"/>
<to>$DoSendMailIn.body/ns4:message</to>
</copy>
</assign>
<invoke name="MAIL" partnerLink="doSendMailPL" operation="doSendMail" portType="ns3:PodBridgeDoSendMailPortType" inputVariable="DoSendMailIn" outputVariable="DoSendMailOut"/>
</sequence>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 115
<sequence name="FlowSequence1">
<assign name="sms">
<copy>
<from variable="KEY_LOCAL"/>
<to>$DoSendSMSIn.body/ns5:key</to>
</copy>
<copy>
<from>true()</from>
<to>$DoSendSMSIn.body/ns5:sync</to>
</copy>
<copy>
<from>'22939968'</from>
<to>$DoSendSMSIn.body/ns5:destinataire</to>
</copy>
<copy>
<from variable="MSG"/>
<to>$DoSendSMSIn.body/ns5:message</to>
</copy>
</assign>
<invoke name="SMS" partnerLink="doSendSMSPL" operation="doSendSMS" portType="ns2:PodBridgeDoSendSMSPortType" inputVariable="DoSendSMSIn" outputVariable="DoSendSMSOut"/>
</sequence>
</flow>
<assign name="reply">
<copy>
<from>'success'</from>
<to>$BatchProcessRUOperationOut.part1/ns0:message</to>
</copy>
<copy>
<from>0</from>
<to>$BatchProcessRUOperationOut.part1/ns0:statecode</to>
</copy>
<copy>
<from>sxxf:current-dateTime()</from>
<to>$BatchProcessRUOperationOut.part1/ns0:date/ns0:end</to>
</copy>
</assign>
<reply name="REPLY" partnerLink="BatchProcessRUPL" operation="BatchProcessRUOperation" xmlns:tns="http://j2ee.netbeans.org/wsdl/BatchProcessRU/BatchProcessRU" portType="tns:BatchProcessRUPortType" variable="BatchProcessRUOperationOut"/>
</sequence>
</process>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 116
2.6. Code source de l’application PHP (formulaire info etudiant)
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <html>
3 <head>
4 <link rel="stylesheet" type="text/css" href="main.css" />
5 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
6 <title>:: Remplir ce formulaire ::</title>
7 </head>
8 <body>
9 <center>
10 <?php
11 // init client
12 $client = new SoapClient("http://podbridge.intranet.demo/projects/unstable/podbridge/web/index.php/wsdl/all");
13 $key="691292877050480f54b5";
14
15 if (isset ($_POST['submit']) && $_POST['id']!=null ) {
16
17 try {
18
19 //Arguements
20 $arguments=array(
21 'key'=>$key,
22 'sync'=>'1',
23 'notify'=>'',
24 'abort'=>'',
25 'id'=>$_POST['id']
26 ) ;
27
28 $getStudentById_out = $client->getStudentById($arguments);
29
30 if ($getStudentById_out->status->code=='0')
31 $connected=true;
32
33 if ($_POST['tel']!=null || $_POST['mail']!=null || $_POST['mac']!=null ) {
34
35 //Arguements
36 $arguments=array(
37 'key'=>$key,
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 117
38 'sync'=>'1',
39 'notify'=>'',
40 'abort'=>'',
41 'id'=>$_POST['id'],
42 'tel'=>$_POST['tel'],
43 'email'=>$_POST['mail'],
44 'loginftp'=>'',
45 'adrmac'=>$_POST['mac'],
46 'refrecu'=>'',
47 'process'=>''
48 ) ;
49
50 $updateStudentById_out = $client->updateStudentById($arguments);
51
52 if ($updateStudentById_out->status->code=='0') {
53 $updated=true;
54 }else {
55 if ($updateStudentById_out->status->code=='2')
56 ?><h3><?php echo ($updateStudentById_out->status->msg); ?></h3><?php
57 }
58
59
60 }
61
62 }
63 catch (SoapFault $e) {
64 print $e->getMessage();
65 }
66 }
67
68 ?>
69 <form id="formulaire" method="post" >
70 <h2>
71 <?php if ( $connected ) { ?>Bienvenu <?php echo $getStudentById_out->response->nom.' '.$getStudentById_out->response->prenom.' !' ;
72 } ?>
73 </h2>
74 <h1>
75 <?php if (! $connected) { ?>Authentification<?php } else { ?>Remplir le formulaire<?php } ?>
76 </h1>
77 <table>
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 118
78 <tr align="right"><td>Votre identifiant:</td><td align="left" >
79 <input name="id" maxlength="8" value="<?php echo $_POST['id']; ?>">
80
81 </td></tr>
82 <tr align="right"><td id="exemple" colspan="2">Identifiant 8 chiffres</td></tr>
83 <?php if ( $connected ) { ?>
84 <tr align="right"><td>Adresse e-mail:</td><td><input name="mail" maxlength="50" value="<?php if (isset ($_POST['mail'])): echo $_POST['mail']; else: echo $getStudentById_out->response->email;
85 endif; ?>"></td></tr>
86 <tr align="right"><td id="exemple" colspan="2">[email protected]</td></tr>
87 <tr align="right"><td>Numéro de tél. perso:</td><td><input name="tel" maxlength="8" value="<?php if (isset ($_POST['tel'])): echo $_POST['tel']; else: echo $getStudentById_out->response->tel;
88 endif; ?>"></td></tr>
89 <tr align="right"><td id="exemple" colspan="2">8 chiffres</td></tr>
90 <tr align="right"><td>Votre adresse MAC:</td><td><input name="mac" maxlength="17" value="<?php if (isset ($_POST['mac'])): echo $_POST['mac']; else: echo $getStudentById_out->response->adrmac;
91 endif; ?>"></td></tr>
92 <tr align="right"><td id="exemple" colspan="2">format: XX:XX:XX:XX:XX:XX</td></tr>
93 <?php } ?>
94
95
96 </table>
97 <center>
98 <input id="bouton" name="submit" type="submit" value="OK"/>
99 </center>
100 <br>
101 <div align="left" id="exemple" >Vous serez notifier par mail et SMS, dès que nous traitons votre demande.</div>
102 </form>
103
104 </center>
105 </body>
106 </html>
107
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 119
3. CAPTURES D’ECRAN
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 120
3.1. SquirrelMail (http://webmail.rnu.edu.demo)
3.2. CUPS Web administration (http://cups.intranet.demo:631)
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 121
3.3. Site web d’inscription univ. en ligne -
(http://inscription.edu.demo)
3.4. SoapUI 3.0.1
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 122
3.5. PodBridge 1.2 (Interfaces d’administration)
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 123
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 124
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 125
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 126
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 127
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 128
3.6. Projet ProcessRUById (Quelques captures d’écrans)
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 129
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 130
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 131
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 132
3.7. Projet BatchProcessRU (Quelques captures d’écrans)
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 133
3.8. Application web PHP (formulaire info etudiant)
Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM) Walid KARRAY | 2009 – 2010
ISET Djerba | TriTux PAGE 134