You are on page 1of 247

Ré publique Tunisienne

Ministère de l’Enseignement Supérieur, Institut Supérieur des Études


de la Recherche Scientifique et Technologie Technologiques de Djerba

Direction Générale des Études Département Technologie de


Technologiques l’Informatique

R APPORT DE PROJET DE FIN D’ETUDES

Urbanisation d’un Système d’information universitaire

SOA & BPM

Elaboré par : KARRAY WALID


Encadré par : NAFAA FREAA

Effectué à :

Encadré par : FOURAT ZOUARI | AHMED MASMOUDI

Année Universitaire 2009/2010 - Semestre 1

Dép. TI
Référence AN/SE 2010/S01
CODE IRP05
ISET Djerba | TriTux PAGE 1
Dédicaces

A toute ma famille,
à mes enseignants,
à mes amis,
et à mes camarades
je dédie ce travail.

ISET Djerba | TriTux PAGE 2


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 3


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 4


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 5


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éral) ............................ 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 6


‘ 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: walid.karray@gmail.com

ISET Djerba | TriTux PAGE 7


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 1 : Introduction

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, SARL 1 est une SSII 2 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

ISET Djerba | TriTux PAGE 8


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 1 : Introduction

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 (SMS 4) et Multimédia (MMS 5),

- Systèmes GNU 6 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

ISET Djerba | TriTux PAGE 9


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 1 : Introduction

- 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.….

ISET Djerba | TriTux PAGE 10


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 1 : Introduction

 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

ISET Djerba | TriTux PAGE 11


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 1 : Introduction

- 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 BPM 9 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

ISET Djerba | TriTux PAGE 12


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 1 : Introduction

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.o rg/wiki/Orchestration _(informatique) »

ISET Djerba | TriTux PAGE 13


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 2 : Etat de l’art

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.

Demande
Message
Réponse
Message

Demandeur / Consommateur Fournisseur / Prestataire


de service de service

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-I 11.

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-*

ISET Djerba | TriTux PAGE 14


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 2 : Etat de l’art

La figure de ci-dessous décrit l’architecture SOA d’une façon globale:

Architecture SOA
Service X
Service W

Demandeur 2

Service Y
Demandeur 1

Service U
Service Z
Service composite

Service V

Orchestration

Figure 3 – L’ar chitecture 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.

ISET Djerba | TriTux PAGE 15


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 2 : Etat de l’art

Présentation
Consommateur
Application
Application
Web
Terminal
Appareil
Mobile 5
Orchestration
WORKFLOW
BPEL, BPM
4
Services
Services
Services web
3
Composants,
Méthodes
2
Func () { Func () {
----
Func () { ----
Func () {
------- -------
Méthodes de classes } --- } ---
} }

bibliothèques,drivers...

Systèmes &
Ressources
Serveurs,
DB
DB
I0II0I0I0I0
I0II0I0I0I0
II0III00I0I
II0III00I0I
0I0III0I0I0
0I0III0I0I0
I0I0I0
I0I0I0
1
Bases de données..

Figure 4 - Le modèle en couches de l’ar chitecture 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.

ISET Djerba | TriTux PAGE 16


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 2 : Etat de l’art

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 SMTP 14.

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

ISET Djerba | TriTux PAGE 17


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 2 : Etat de l’art

<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


16
Les services web de type SOAP se basent aussi sur l’échange de messages XML et se
17
reposent sur le standard SOAP pour l’échange de message et WSDL pour décrire les
services web.

 Structure d’un document WSDL :

16
Simple Object Access Protocol
17
Web Services Description Language

ISET Djerba | TriTux PAGE 18


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 2 : Etat de l’art

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).

ISET Djerba | TriTux PAGE 19


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 2 : Etat de l’art

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.

ISET Djerba | TriTux PAGE 20


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 2 : Etat de l’art

- 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 :

ISET Djerba | TriTux PAGE 21


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 2 : Etat de l’art

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.

ISET Djerba | TriTux PAGE 22


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 2 : Etat de l’art

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,

ISET Djerba | TriTux PAGE 23


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 2 : Etat de l’art

- 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.

ISET Djerba | TriTux PAGE 24


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 2 : Etat de l’art

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)

ISET Djerba | TriTux PAGE 25


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 2 : Etat de l’art

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.

ISET Djerba | TriTux PAGE 26


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 2 : Etat de l’art

Services partenaire (Google Maps Service partenaire (GSM Tracking) L'appareil Mobile Service partenaire (Internet
API) Banking Service)
{Donnée:
Rayon (real) Entrée: (Aucun)
min=0.1
max=10.0} Sortie:
Saisir le rayon (zone de recherche - SN (Subscriber number) (number)
- Valeur en km) - numéro de compte (number)

Entrée:
- SN (Subscriber Number) (number)
Entrée: Quel est son numéro de tel
Sortie: et le numéro de sa carte de crédit ? Saisir code confidentiel
- Cherche (string) = "Salon de thé" - Logitude (string)
- Rayon en KM (real) - Lattitude (string)
- Longitude (string) HTTPS (SSL)
- Lattitude (string)

Sortie: Quel est mon solde ?


- Nombre (integer)
- Liste des salons de thé (string XML) [Solde >= 10 Dinars]
[Solde < 10 Dinars]

Quelle est ma géoposition Afficher message


(longitude & latitude) Enrée:
« Ce n’est pas le moment - numéro de compte (number)
pour aller au salon de thé !!! » - code (string)

Quelles sont les espaces Sortie:


- Solde (real)
qui m’entourent ?
[Nombre > 0]
[Nombre = 0]

Afficher message « Désolé !


Aucun salon de thé trouvé
dans votre position. »

Indiquer les salons de thé


sur la carte.

Figure 10 – Exemple d’un processus faisant appel à 4 services

ISET Djerba | TriTux PAGE 27


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 2 : Etat de l’art

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

ISET Djerba | TriTux PAGE 28


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 2 : Etat de l’art

Business Expert End User / Application

Design Time Run Time

BPEL Generates Process Executes BPEL


Designer flow Engine
template

20
Figure 11 – 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

ISET Djerba | TriTux PAGE 29


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 2 : Etat de l’art

<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"/>

ISET Djerba | TriTux PAGE 30


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 2 : Etat de l’art

- 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>

ISET Djerba | TriTux PAGE 31


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 2 : Etat de l’art

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

ISET Djerba | TriTux PAGE 32


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 2 : Etat de l’art

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)…

ISET Djerba | TriTux PAGE 33


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

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.

ISET Djerba | TriTux PAGE 34


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

- 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.

ISET Djerba | TriTux PAGE 35


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

«interface»
PodBridgeConnectorInterface
+connect() : boolean
+disconnect() : boolean

PodBridgeConnector
#params : array
#error : array
#sessionLog : array
#sessionLogCounter : integer = 0
+getLastErrorMsg() : string
+setLastError()
+setParam()
+getSessionLog()
+setSessionLog() : array
+getSessionLogCounter() : integer

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.

ISET Djerba | TriTux PAGE 36


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

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 »

ISET Djerba | TriTux PAGE 37


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

 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 :

ISET Djerba | TriTux PAGE 38


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

«interface»
PodBridgeConnectorInterface
+connect() : boolean
+disconnect() : boolean

PodBridgeConnector
#params : array
#error : array
#sessionLog : array
#sessionLogCounter : integer = 0
+getLastErrorMsg() : string
+setLastError()
+setParam()
+getSessionLog()
+setSessionLog() : array
+getSessionLogCounter() : integer

BDetu
-conn : ressource = null
+getStudentById() : array
+updateStudentById() : boolean
+getNextId() : array
-executeSQL() : array
+connect() : boolean
+disconnect() : boolean

Figure 14 - Classe BDetu (Conne cteur PodBridge de l’établissement)

ISET Djerba | TriTux PAGE 39


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

 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


Renvoi les informations sur id : Identifiant. Informations sur
un étudiant depuis la base String l’étudiant (id,nom,
de données. prénom,
Service

getStudientById dep,spec,niveau,te
l,email,loginftp,adr
mac,refrecu,proce
ss). Array
Met à jour une ou plusieurs id :Identifiant. Vrai si succès de la
informations sur un String mis à jour.
étudiant tel que, son email, boolean
Tel String
tel, login ftp…
Service

updateStudentById adrmac String


ftp String
refrecu String
process String
Renvoi l’identifiant de id : Identifiant. Identifiant. String
l’étudiant suivant. (Optionnel) -’Si
elle prend null
c’est pour
Service

récupérer le
getNextId premier
identifiant’
String
Code état du
process (Filtre)
Envoi la requête SQL au sql : Requête Résultat de la
SGBD et revoie le résultat. SQL String requête. Array
executeSQL Numrows :
Nombre de ligne
retournées integer
connect Se connecter au serveur Vrai si succès de la

ISET Djerba | TriTux PAGE 40


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

PostgreSQL (initialise la connexion.


ressource conn) boolean
disconnect Se déconnecter du serveur Vrai en cas de
PostgreSQL et libère la succès de la
ressource conn. 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.

ISET Djerba | TriTux PAGE 41


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

PodBridge 1.2 SOA Middleware postgresql (5432)

Frontend PB1.2 Core PB1.2 Connector End system


« Bdetu.connector.php » PostgreSQL DBMS
Monitor
transactions log
Trace requests and
responses
Setup PB1.2
PodBridge Call method :
admin << Include >>
getStudentById()
Get WSDL SQL Execute :
Authenticate and SELECT
check privilege .. FROM .. WHERE ..
HTTP (80) SOAP web service API
Call method :
executeSQL()
<< Include >>
<< Include >>

Invoke WS : << Include >> DBA


getSudentByID << Include >> Call method :
SQL Execute :
getNextId()
UPDATE
.. SET .. WHERE ..
<< Include >>

Invoke WS : Handle request


updateStudentById Tell PostgreSQL Server
to perform the
operation
Service
Consumer << Include >>
Call method :
Invoke WS : updateStudentById()
getNextId if cached

Get response from


cache

Figure 15 – Modélisation de la logique métier (Connecteur BDetu)

ISET Djerba | TriTux PAGE 42


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

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 :

ISET Djerba | TriTux PAGE 43


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

«interface»
PodBridgeConnectorInterface
+connect() : boolean
+disconnect() : boolean

PodBridgeConnector
#params : array
#error : array
#sessionLog : array
#sessionLogCounter : integer = 0
+getLastErrorMsg() : string
+setLastError()
+setParam()
+getSessionLog()
+setSessionLog() : array
+getSessionLogCounter() : integer

FTPAccount
-sshCon : ressource = null
-authenticated : boolean = false
-regexValidator : array
-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

Figure 16 - Classe FTPAccount (Connecteur PodBridge de l’établissement)

ISET Djerba | TriTux PAGE 44


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

 Description des attributs de la classe FTPAccount :

Nom de l’attribut Description Valeur initiale


sshCon Ressource sshclient null
Pour identifier si la connexion au serveur False
authenticated
SSH est établit et en cours.
Renferme différentes expressions Expression régulière d’un
regexValidator
régulières. nom d’utilisateur.

 Description des méthodes de la classe FTPAccount :

Nom de la méthode Description Entrée Sortie


Génère un mot de passe len : Longueur Mot de passe.
aléatoire. du mot de passe String
generateRandomPasswd (optionnel)
5 par défaut
Integer
Vérifie si un utilisateur user : Nom Vrai si
existe déjà sur le système. d’utilisateur l’utilisateur est
ifUserExists
String déjà existant.
boolean
Converti une date au date : Une date Une date
format JJ/MM/AAAA en (JJ/MM/AAAA) (MM/JJ/AAAA)
getUnixDate
une date au format String String
MM/JJ/AAAA.
Créer un nouveau compte user : Nom (login, mot de
d’utilisateur FTP. d’utilisateur passe, nom de
String domaine et n°
port ftp) Array
expiry_date :
SERVICE

Date
doCreateFTPUserAccoun d’expiration
t boolean
use_welcome :
Utiliser le
message de
bienvenu par
défaut (Vrai par

ISET Djerba | TriTux PAGE 45


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

défaut) boolean

Modifie la date user : Nom Vrai si la date


d’expiration d’un compte d’utilisateur d’expiration du
SERVICE

utilisateur FTP. String compte à été


setFTPUserAccountExpir modifiée avec
yDate expiry_date :
succès. boolean
Date
d’expiration
String
Modifie le fichier user : Nom Vrai si le
« welcome.msg » qui d’utilisateur. contenu du
SERVICE

setFTPUserWelcomeMs existe dans la racine du String fichier


g compte utilisateur FTP. « welcome.msg
message :
à été modifier.
Message de
boolean
bienvenu. String
SERVICE

Supprime le fichier user : Nom Vrai si le fichier


doDisableFTPUserW « welcome.msg » qui d’utilisateur. « welcome.msg
elcomeMsg existe dans la racine du String à été supprimer.
compte utilisateur FTP. boolean
Modifie le mot de passe user : Nom Vrai si le mot de
d’un compte utilisateur d’utilisateur. passe a été
FTP. String changé avec
SERVICE

succès. boolean
password :
doChangeFTPUserPa
Ancien mot de
ssword
passe. String
new_password :
Nouveau mot de
passe. String
Vérifie si le mot de passe user : Nom Vrai si la
passé en paramètre est d’utilisateur. vérification est
correct. String positive et faux
doCheckPassword
dans le cas
password : Mot
contraire.
de passe String
boolean
Supprime un compte user : Nom Vrai si le compte
SERVICE

utilisateur FTP du système. d’utilisateur. d’utilisateur a


doDeleteFTPUserAcc
String été supprimé
ount
avec succès.
boolean

ISET Djerba | TriTux PAGE 46


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

Fait une copie des fichiers file : Chemin du Vrai si la copie


ou dossiers d’une source à fichier ou du de fichiers est
SERVICE

un compte utilisateur FTP. répertoire terminée avec


source. String succès. boolean
doFTPsendFile
user : Nom
d’utilisateur.
String
Demande au serveur SSH cmd : La Le résultat
d’exécuter une commande commande. d’exécution de
Shell. String la commande.
String
exception : Lever
une exception
dans le cas où le
résultat retourné
par la
commande est
une erreur. (Vrai
ssh2Exec
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
Se connecter au serveur Vrai en cas de
SSH (initialise la ressource succès de la
connect
sshCon). connexion.
boolean
Se déconnecter du serveur Vrai en cas de
SSH et libère la ressource succès de la
disconnect
sshCon. 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.

ISET Djerba | TriTux PAGE 47


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

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.

ISET Djerba | TriTux PAGE 48


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

P o d B r id g e 1 .2 S O A M id d le w a r e S S H (2 2 )
F T P (2 1 )

F ro n te n d P B 1 .2 C o re P B 1 .2 C o n n e c to r E n d s y s te m
« F T P A c c o u n t.c o n n e c to r.p h p » O penSSH and
M o n ito r p ro F T P d o n U b u n tu
tr a n s a c tio n s lo g
s e rv e r
T r a c e r e q u e s ts a n d C a ll m e th o d :
< < In c lu d e > > g e n e r a te
re s p o n s e s
R a n d o m P a s s w d ()
S e tu p P B 1 . 2 C a ll m e th o d :
d o C r e a te F T P
U s e rA c c o u n t()
P B a d m in G et W SD L < < In c lu d e > >
A u th e n tic a te a n d
c h e c k p r iv ile g e C a ll m e th o d :
ifU s e r E x is ts ( ) S h e ll e x e c u te :
S O A P w e b s e r v ic e A P I u s e r a d d … - g F T P ...
H T T P (8 0 )
< < In c lu d e > >
< < In c lu d e > >
< < In c lu d e > >

In v o k e W S : < < In c lu d e > > C a ll m e th o d : < < In c lu d e > >


d o C r e a te F T P s e tF T P U s e r
U s e rA c c o u n t W e lc o m e M s g ( )
C a ll m e th o d : S h e ll e x e c u te :
s s h 2 E x e c () F T P S e rv e r
u s e r m o d - e ....
a d m in
< < In c lu d e > >
In v o k e W S : H a n d le r e q u e s t
< < In c lu d e > >
s e tF T P U s e r
A c c o u n tE x p ir y D a te
C a ll m e th o d :
d o F T P s e n d F ile ( )
< < In c lu d e > >
< < In c lu d e > > T e ll S S H S e r v e r to S h e ll E x e c u te : c p …
In v o k e W S :
p e r fo r m th e o p e r a tio n
S e r v ic e s e tF T P U s e r W e lc o m e M s g
C onsum er if c a c h e d
C a ll m e th o d :
s e tF T P U s e r A c c o u n t
E x p ir y D a te ( )
< < In c lu d e > >
S h e ll E x e c u te :
In v o k e W S :
c h o w n ...
d o F T P s e n d F ile
G e t r e s p o n s e fr o m C a ll m e th o d :
cache g e tU n ix D a te ( )

Figure 17 - Modélisation de la logique métier (Connecteur FTPAccount)

ISET Djerba | TriTux PAGE 49


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

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 :

«interface»
PodBridgeConnectorInterface
+connect() : boolean
+disconnect() : boolean

PodBridgeConnector
#params : array
#error : array
#sessionLog : array
#sessionLogCounter : integer = 0
+getLastErrorMsg() : string
+setLastError()
+setParam()
+getSessionLog()
+setSessionLog() : array
+getSessionLogCounter() : integer

APACLManager
-regexValidator : array
+doForwardMACaddr() : array
+doRomoveForwordedMACaddr() : boolean
+getAccesPointInfo() : array
+connect() : boolean
+disconnect() : boolean

Figure 18 – Classe APACLManager (Conne cteur PodBridge de l’établissement)

ISET Djerba | TriTux PAGE 50


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

 Description des attributs de la classe APACLManager :

Nom de l’attribut Description Valeur initiale


Renferme différentes Expression régulière d’une adresse
regexValidator
expressions régulières. MAC.

 Description des méthodes de la classe APACLManager :

Nom de la méthode Description Entrée Sortie


Ajoute une adresse MAC macaddr : Vrai si adresse à
dans l’ACL du point Adresse MAC. été ajoutée à la
doForwardMACaddr d’accès sans fil. (Autorise String liste de contrôle
l’accès au réseau) du point d’accès.
boolean
Supprime une adresse macaddr : Vrai si adresse à
SERVICES

MAC depuis l’ACL du point Adresse MAC. été supprimer


doRomoveForwordedM d’accès sans fil. (Interdit String de la liste de
ACaddr l’accès au réseau) contrôle du
point d’accès.
boolean
Renvoi des informations (clé
sur le point d’accès (l’SSID d’authentificatio
getAccesPointInfo
et la clé n, SSID). Array
d’authentification).
Se connecter au serveur Vrai en cas de
TELNET. succès de la
connect
connexion.
boolean
Se déconnecter du serveur Vrai en cas de
TELNET. succès de la
disconnect
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.

ISET Djerba | TriTux PAGE 51


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

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.

ISET Djerba | TriTux PAGE 52


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

PodBridge 1.2 SOA Middleware TELNET (23)

Frontend PB1.2 Core PB1.2 Connector End system


« APACLManager.connector.php » Wireless Access Point
Monitor
transactions log
Trace requests and
responses
Setup PB1.2
PodBridge
admin
Call method :
Get WSDL doForwardMACaddr()
<< Include >>

Authenticate and
HTTP (80) SOAP web service API check privilege
Call method :
<< Include >> Add mac address to
SocketSend()
ACL
<< Include >>
Invoke WS :
doForwardMACaddr << Include >>
<< Include >> Call method :
doRomoveForworded
Network
MACaddr()
admin

Remove mac address


from ACL
Handle request Tell Telnet Server to
Invoke WS :
doRomoveForworded perform the operation

Service MACaddr
Consumer << Include >>

if cached
Call method :
getAccesPointInfo()
Invoke WS :
getAccesPointInfo
Get response from
cache

Figure 19 - Modélisation de la logique métier (Connecteur APACLManager)

ISET Djerba | TriTux PAGE 53


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

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 :

«interface»
PodBridgeConnectorInterface
+connect() : boolean
+disconnect() : boolean

PodBridgeConnector
#params : array
#error : array
#sessionLog : array
#sessionLogCounter : integer = 0
+getLastErrorMsg() : string
+setLastError()
+setParam()
+getSessionLog()
+setSessionLog() : array
+getSessionLogCounter() : integer

IPPService
-ipp : CupsPrintIPP Object = null
+doPrintWebPage() : boolean
-doPrintInternalDocument() : boolean
+connect() : boolean
+disconnect() : boolean

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

ISET Djerba | TriTux PAGE 54


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

 Description des méthodes de la classe IPPService :

Nom de la méthode Description Entrée Sortie


Envoyer un ordre url : URL de la Vrai si l’ordre
d’impression d’une page page web. String d’impression à
web à une imprimante été envoyé.
jobname : Nom
doPrintWebPage partagée. boolean
du job
SERVICES

d’impression
(optionnel)
String
Renvoie les adresses (URI) Des URI
des imprimantes délimités par
getPrinters
partagées par CUPS des points
virgules. String
Envoyer un ordre filepath : Chemin Vrai si l’ordre
d’impression à une d’accès à un d’impression à
imprimante partagée d’un document été envoyé.
document présent sur le présent sur le boolean
serveur. serveur. String
doPrintInternalDocument
jobname : Nom
du job
d’impression
(optionnel)
String
Se connecter au serveur Vrai en cas de
CUPS. succès de la
connect
connexion.
boolean
Se déconnecter du serveur Vrai en cas de
CUPS. succès de la
disconnect
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.

ISET Djerba | TriTux PAGE 55


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

PodBridge 1.2 SOA Middleware cups (631)

Frontend PB1.2 Core PB1.2 Connector End system


« IPPService.connector.php » CUPS Server
Monitor
transactions log
Trace requests and
responses
Setup PB1.2
PodBridge
admin

Get WSDL
Authenticate and Call method : Scan for available
check privilege doPrintInternalDocument() printers
HTTP (80) SOAP web service API << Include >>

<< Include >> << Include >> Tell CUPS Server to


Invoke WS : perform the operation
<< Include >> Network
doPrintWebPage admin
<< Include >> start print job

Call method :
doPrintWebPage()
Invoke WS : Handle request
doPrintInternalDocument
<< Include >>
Service
Consumer << Include >>

Invoke WS :
getPrinters if cached Call method :
getPrinters()

Get response from


cache

Figure 21 - Modélisation de la logique métier (Connecteur IPPService)

ISET Djerba | TriTux PAGE 56


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

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 :

«interface»
PodBridgeConnectorInterface
+connect() : boolean
+disconnect() : boolean

PodBridgeConnector
#params : array
#error : array
#sessionLog : array
#sessionLogCounter : integer = 0
+getLastErrorMsg() : string
+setLastError()
+setParam()
+getSessionLog()
+setSessionLog() : array
+getSessionLogCounter() : integer

wwwsubscr
-curl_handle : ressource = null
-getAccuseRef() : string
+getAccuse() : array
+ssh2Exec() : stream
+connect() : boolean
+disconnect() : boolean

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 :

ISET Djerba | TriTux PAGE 57


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

Nom de la méthode Description Entrée Sortie


Renvoi la référence de studentident : Référence de
l’accusé de paiement pour Identifiant de l’accusé de
une année universitaire l’étudiant. String paiement. String
getAccuseRef donnée. (si paiement
au : Année
effectué)
universitaire
(AAAA/AAAA).
String
Renvoi la référence et studentident : Référence et url
l’URL de l’accusé de Identifiant de de l’accusé de
SERVICE

paiement pour une année l’étudiant. String paiement. Array


getAccuse universitaire donnée. Si
au : Année
getAccuseRef renvoie la
universitaire
référence de l’accusé.
(AAAA/AAAA).
String
Initialisation de la Vrai si la
ressource ressource à été
connect
initialisée.
boolean
Ressource libérée Vrai si la
disconnect 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.

ISET Djerba | TriTux PAGE 58


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

PodBridge 1.2 SOA Middleware HTTP (80)

Frontend PB1.2 Core PB1.2 Connector End System


« wwwsubscr.connector.php » HTTP Server
Monitor
(inscription.edu.demo
transactions log
Trace requests and
)
responses
Setup PB1.2
PodBridge
admin

Get WSDL
Authenticate and Call method : Get page of
check privilege getAccuse() requested URL
HTTP (80) SOAP web service API << Include >>

<< Include >> << Include >>


Tell WEB Server
To
perform the operation
<< Include >>
Web user
Invoke WS : Authenticate
<< Include >>
getAccuse

Call method :
getAccuseRef()
Handle request

Service
Consumer << Include >>

if cached

Get response from


cache

Figure 23 - Modélisation de la logique métier (Connecteur wwwsubscr)

ISET Djerba | TriTux PAGE 59


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

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 :

«interface»
PodBridgeConnectorInterface
+connect() : boolean
+disconnect() : boolean

PodBridgeConnector
#params : array
#error : array
#sessionLog : array
#sessionLogCounter : integer = 0
+getLastErrorMsg() : string
+setLastError()
+setParam()
+getSessionLog()
+setSessionLog() : array
+getSessionLogCounter() : integer

SMSService
-sshCon : ressource = null
-authenticated : boolean = false
-regexValidator : array
+doSendSMS() : boolean
-stripSpaces() : boolean
-ssh2Exec() : stream
+connect() : boolean
+disconnect() : boolean

Figure 24 – Classe SMSService (Conne cteur PodBridge de l’établissement)

 Description des attributs de la classe SMSService :

Nom de l’attribut Description Valeur initiale


sshCon Ressource client ssh null
Pour identifier si la connexion au False
authenticated
serveur SSH est établit et en cours.

ISET Djerba | TriTux PAGE 60


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

Renferme différentes expressions Expression régulière d’un


regexValidator régulières. 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


Envoyer un SMS. destinataire : Vrai si l’SMS a
numéro de été envoyé au
téléphone du destinataire
SERVICE

destinataire. boolean
doSendSMS String
message :
Message texte
court à envoyer
String
Supprimer des espaces qui phonenumber : Numéro de
existent dans le numéro Numéro de téléphone sans
de téléphone et valider téléphone String espaces blanc
stripSpaces son format. String

Demande au serveur SSH cmd : La Le résultat


d’exécuter une commande commande. d’exécution de
Shell. String la commande.
String
exception : Lever
une exception
dans le cas où le
résultat retourné
par la
commande est
ssh2Exec 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)

ISET Djerba | TriTux PAGE 61


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

boolean
Se connecter au serveur Vrai en cas de
SSH (initialise la ressource succès de la
connect
sshCon). connexion.
boolean
Se déconnecter du serveur Vrai en cas de
SSH et libère la ressource succès de la
disconnect
sshCon. 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.

ISET Djerba | TriTux PAGE 62


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

PodBridge 1.2 SOA Middleware ( podbridge-12.intranet.demo)

Frontend PB1.2 Core PB1.2 Connector SSH (22)


«SMSService.connector.php »
Monitor
transactions log
Trace requests and End System
responses Server
Setup PB1.2
PodBridge
admin
Call method :
Get WSDL
stripSpaces()
Authenticate and
check privilege
HTTP (80) SOAP web service API

<< Include >>


<< Include >>
Send SMS
<< Include >> command
Call method : Server
Invoke WS :
doSendSMS() Admin
doSendSMS

<< Include >>


Handle request

Service Tell SSH Server to


Consumer << Include >> perform the operation

if cached

Get response from


cache

Figure 25 - Modélisation de la logique métier (Connecteur SMSService)

ISET Djerba | TriTux PAGE 63


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

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 :

ISET Djerba | TriTux PAGE 64


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

«interface»
PodBridgeConnectorInterface
+connect() : boolean
+disconnect() : boolean

PodBridgeConnector
#params : array
#error : array
#sessionLog : array
#sessionLogCounter : integer = 0
+getLastErrorMsg() : string
+setLastError()
+setParam()
+getSessionLog()
+setSessionLog() : array
+getSessionLogCounter() : integer

MailAccount
-sshCon : ressource = null
-authenticated : boolean = false
-regexValidator : array
-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

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
Pour identifier si la
authenticated connexion au serveur SSH False
est établit et en cours.
Expression régulière pour
Renferme différentes
regexValidator un nom d’utilisateur (mail),
expressions régulières.
prénom et adresse email.

ISET Djerba | TriTux PAGE 65


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

 Description des méthodes de la classe MailAccount :

Nom de la méthode Description Entrée Sortie


Génère un mot de len : Longueur Mot de passe.
passe aléatoire. du mot de passe String
generateRandomPasswd
(optionnel)
Integer
Vérifie si un utilisateur user : Nom Vrai si
existe déjà sur le d’utilisateur l’utilisateur est
ifUserExists
système. String déjà existant.
boolean
Génère un nom fstname : Nom
d’utilisateur à partir du prénom. String d’utilisateur.
generateUserName nom et prénom passés String
lstname : nom.
en paramètres.
String
Extrait le nom emailaddr : Nom
d’utilisateur à partir adresse email. d’utilisateur.
doStripAtDomain d’une adresse email du String String
domaine
(rnu.edu.demo).
Créer un nouveau user : Nom (adresse email,
compte mail (1) d’utilisateur mot de passe,
String port POP3, port
SMTP, adresse
genpswd: vrai
url du webmail
pour auto
SERVICE

‘SquirrelMail’)
générer le mot
doCreateMailUserAcco Array
de passe.
unt
boolean
password: mot
de passe (si
genpswd reçoit
faux).
String
Créer un nouveau fstname : (adresse email,
compte mail (2) prénom. String mot de passe,
SERVICE

port POP3, port


doCreateMailUserAcco lstname : nom.
unt2 SMTP, adresse
String
url du webmail
genpswd: vrai ‘SquirrelMail’)
pour auto

ISET Djerba | TriTux PAGE 66


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

générer le mot Array


de passe.
boolean
password: mot
de passe (si
genpswd reçoit
faux).
String
Supprime un compte emailaddr : Vrai si le compte
SERVIC

doDeleteMailUserAcco mail. adresse mail. mail a été


E

unt String supprimé avec


succès. boolean
Active un compte mail. emailaddr : Vrai si le compte
SER

doUnlockMailUserAcco
VICE

adresse mail. mail a été activé.


unt
String boolean
Désactive un compte emailaddr : Vrai si le compte
SERVIC

doLockMailUserAccoun mail. adresse mail. mail a été


E

t String désactivé.
boolean
Modifie le mot de emailaddr: Vrai si le mot de
passe d’un compte adresse email. passe a été
mail. String changé avec
SERVICE

succès. boolean
password :
doChangeMailUserPass
Ancien mot de
word
passe. String
new_password
Nouveau mot de
passe. String
Permet (à un from: adresse Vrai si le
administrateur) l’envoi email de message à été
de messages à l’envoyeur. envoyé avec
n’importe quelle String succès. boolean
adresse électronique.
to : adresse
SERVICE

email du
doSendMail destinataire.
String
message : Corps
du message
String
subject : Sujet du

ISET Djerba | TriTux PAGE 67


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

message
String
Vérifie si le mot de user : Nom Vrai si la
passe passé en d’utilisateur. vérification est
paramètre est correct. String positive et faux
doCheckPassword dans le cas
password : Mot contraire.
de passe String boolean

Demande au serveur cmd : La Le résultat


SSH d’exécuter une commande. d’exécution de
commande Shell. String 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)
ssh2Exec boolean
readResponse :
si elle prend vrai,
on récupère le
résultat retourné
par la
commande (Faux
par défaut)
boolean

Se connecter au Vrai en cas de


serveur SSH (initialise la succès de la
connect
ressource sshCon). connexion.
boolean
Se déconnecter du Vrai en cas de
serveur SSH et libère la succès de la
disconnect
ressource sshCon. déconnexion.
boolean

ISET Djerba | TriTux PAGE 68


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

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.

ISET Djerba | TriTux PAGE 69


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

PodBridge 1.2 SOA Middleware


SSH (22)
POP (110)
SMTP (25)
Frontend PB1.2 Core PB1.2 Connector HTTP (80)
« MailAccount.connector.php »
Monitor
transactions log
Trace requests and Call method : End system
<< Include >> generate
responses OpenSSH and Postfix
Setup PB1.2 generateUserName()
Call method : and Dovecot on
doCreateMail
UserAccount2()
Ubuntu server
PB admin Get WSDL << Include >>
Authenticate and Call method :
check privilege ifUserExists()
Shell execute :
HTTP (80) SOAP web service API useradd … -g mail ...
<< Include >>
<< Include >> << Include >>
Call method : << Include >>
doSendMail()
Invoke WS : << Include >>
doCreateMail
UserAccount2
Call method : Shell execute :
ssh2Exec() Mail Server
userdel -r .... admin
Handle request << Include >>
Invoke WS :
<< Include >>
doChangeMail
UserPassword Call method :
doDeleteMail
UserAccount()
<< Include >>
Shell Execute :
Invoke WS : << Include >> Tell SSH Server to
perform the operation mail -s…
doDeleteMail
Service UserAccount
Consumer if cached
Call method :
doChangeMail
UserPassword()
<< Include >> Shell Execute :
Invoke WS : usermod -p...
doSendMail
Get response from Call method :
cache doCheckPassword()

Figure 27 - Modélisation de la logique métier (Connecteur MailAccount)

ISET Djerba | TriTux PAGE 70


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

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.

ISET Djerba | TriTux PAGE 71


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

«interface»
PodBridgeConnectorInterface
+connect() : boolean
+disconnect() : boolean

PodBridgeConnector
#params : array
#error : array
#sessionLog : array
#sessionLogCounter : integer = 0
+getLastErrorMsg() : string
+setLastError()
+setParam()
+getSessionLog()
+setSessionLog() : array
+getSessionLogCounter() : integer

BDetu FTPAccount IPPService APACLManager wwwsubscr SMSService


-conn : ressource = null -sshCon : ressource = null -ipp : CupsPrintIPP Object = null -regexValidator : array -curl_handle : ressource = null -sshCon : ressource = null
+getStudentById() : array -authenticated : boolean = false +doPrintWebPage() : boolean +doForwardMACaddr() : array -getAccuseRef() : string -authenticated : boolean = false
+updateStudentById() : boolean -regexValidator : array -doPrintInternalDocument() : boolean +doRomoveForwordedMACaddr() : boolean +getAccuse() : array -regexValidator : array
+getNextId() : array -generateRandomPasswd() : string +connect() : boolean +getAccesPointInfo() : array +ssh2Exec() : stream +doSendSMS() : boolean
-executeSQL() : array +ifUserExists() : boolean +disconnect() : boolean +connect() : boolean +connect() : boolean -stripSpaces() : boolean
+connect() : boolean -getUnixDate() : string +disconnect() : boolean +disconnect() : boolean -ssh2Exec() : stream
+disconnect() : boolean +doCreateFTPUserAccount() : array +connect() : boolean
+setFTPUserAccountExpiryDate() : boolean +disconnect() : boolean
+setFTPUserWelcomeMsg() : boolean
+doDisableFTPUserWelcomeMsg() : boolean
+doChangeFTPUserPassword() : boolean
-doCheckPassword() : boolean
+doDeleteFTPUserAccount() : boolean
+doFTPsendFile() : boolean
-ssh2Exec() : stream
+connect() : boolean
+disconnect() : boolean

Figure 28 – Connecteurs PodBridge (de l’établissement)

ISET Djerba | TriTux PAGE 72


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

«interface»
PodBridgeConnectorInterface
+connect() : boolean
+disconnect() : boolean

PodBridgeConnector
#params : array
#error : array
#sessionLog : array
#sessionLogCounter : integer = 0
+getLastErrorMsg() : string
+setLastError()
+setParam()
+getSessionLog()
+setSessionLog() : array
+getSessionLogCounter() : integer

MailAccount
-sshCon : ressource = null
-authenticated : boolean = false
-regexValidator : array
-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

Figure 29 - Connecteur PodBridge (du RN U)

ISET Djerba | TriTux PAGE 73


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

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

ISET Djerba | TriTux PAGE 74


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

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).

ISET Djerba | TriTux PAGE 75


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

Donner l’identifiant de l'étudiant


RECEIVE: ProcessRUByIdIn

Récupérer la référence de l’accusé


Mettre à jour la BD, Récupérer les informations de paiement et son URL
état process EXE de l’étudiant depuis depuis le site inscription.edu.demo
INVOKE: « updateStudentById » la base de données INVOKE: « getReceipt »
INVOKE: « getStudentById »

[Paiement non effectué]


[Paiement effectué]

Possède-il un
Lancer un nouveau job d’impression compte e-mail ?
pour l’accusé de paiement
INVOKE: « doPrintWebPage »
[non]
Mettre à jour la BD,
état process PAI
[oui] INVOKE: « updateStudentById »
Créer un nouveau compte e-mail
INVOKE:
«doCreateMailUserAccount » Renvoyer PAI
REPLY: ProcessRUByIdOut
Envoyer les paramètres du nouveau
compte mail par SMS
INVOKE: « doSendSMS »

Son département A-t-il donné son


est-il ‘TI’ ? adresse MAC ?

[non]
[non] [oui]
[oui]

Possède-il un compte FTP ?

[non] [oui] Mettre à jour le filtre MAC du


point d’accès Sans fil (Ajout)
INVOKE: «doForwardMACaddr »
Créer un compte FTP
INVOKE: « doCreateFTPUserAccount »

Crée un message welcome


pour ce compte FTP Envoyer les paramètres du
INVOKE: « setFTPUserWelcomeMsg » point d’accès par SMS
INVOKE: « doSendSMS »

Etendre le délai d’expiration Envoyer les paramètres du


Envoyer les paramètres du INVOKE: point d’accès par mail
nouveau compte FTP par SMS «setFTPUserAccountExpiryDate » INVOKE: « doSendMail »
INVOKE: « doSendSMS »

Envoyer les paramètres du


nouveau compte FTP par mail
INVOKE: « doSendMail »

Envoyer le calendrier Est-il niveau 2 ou plus ?


,les cours & TP
INVOKE: « doFTPsendFile »
[non]
[oui]

Envoyer le cour d’UML2


INVOKE: « doFTPsendFile »

Appel service web


Mettre à jour la BD
(login FTP, e-mail,refrecu et état process ‘OK’)
INVOKE: « updateStudentById »

Envoyer un SMS de bienvenue Envoyer un mail de bienvenue


INVOKE: « doSendSMS » INVOKE: « doSendMail »

Renvoyer OK
REPLY: ProcessRUByIdOut

Figure 30 - diagr amme d'activité « ProcessRUById »

ISET Djerba | TriTux PAGE 76


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

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).

ISET Djerba | TriTux PAGE 77


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

Donner le filtre (soit ‘PAI’, ‘ATT’ ou ‘ * ‘)


RECEIVE: BatchProcessRUIn renvoie le premier identifiant
à la première itération

Récupérer l’indentifiant
Suivant
INVOKE: « getNextId »

Invoquer le service (ProcessRUById)


pour l’identifiant courant
INVOKE: « ProcessRUById »

[non]
Dernier identifiant ?

[oui]

Notifier l’administrateur Notifier l’administrateur


par SMS par Mail
INVOKE: « doSendSMS » INVOKE: « doSendMail »

Renvoyer (Etat process,


date de début et de fin d’exécution)
REPLY: BatchProcessRUOut

Appel service web

Figure 31 - diagr amme 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.

ISET Djerba | TriTux PAGE 78


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

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) :

ISET Djerba | TriTux PAGE 79


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

$ 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"

ISET Djerba | TriTux PAGE 80


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

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 :

ISET Djerba | TriTux PAGE 81


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

$ 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

ISET Djerba | TriTux PAGE 82


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

$ ./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 Ya ml (Yaml Ain’ t Markup Language)

ISET Djerba | TriTux PAGE 83


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

Figure 32 - Arborescence du projet PodBridge - Netbeans IDE

Ajout du connecteur pbFTPAccountConnector à PodBridge (Génération des services web, et


WSDL) :

ISET Djerba | TriTux PAGE 84


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

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:

ISET Djerba | TriTux PAGE 85


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

 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):

ISET Djerba | TriTux PAGE 86


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

 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

ISET Djerba | TriTux PAGE 87


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

Réseau local de l’établissement (LAN) Réseau National Universitaire (WAN)

à un serveur Debian Lenny


BD étudiants PostgreSQL

d’inscription universitaire
debian5-02.intranet.demo
Administrateur Système

postgres-83.intranet.demo

Modem GSM connecté


Point d’accès Sans Fil

Serveur Web du site


ftp-etu.intranet.demo

Admin. Système
inscription.edu.demo
ap-21.intranet.demo

cups.intranet.demo

Serveur Mail –
SMTP & POP3
Serveur CUPS
Serveur FTP

rnu.edu.demo
SSH : 22 Telnet : 23 IPP : 631 Pgsql : 5432 SSH : 22 HTTP : 80 SSH : 22

Admin. PodBridge
Admin. PodBridge

APACLManager.connector.php
APACLManager
FTPAccount.connector.php

IPPService.connector.php

SMSService.connector.php

wwwsubscr.connector.php

MailAccount.connector.php
FTPAccount

SMSService
BDetu.connector.php
IPPService

wwwsubscr

MailAccount
BDbetu
PodBridge 1.2 (Middleware SOA) – podbridge.intranet.demo PodBridge 1.2
ws.rnu.edu.demo

WS WS WS WS WS WS WS
SOAP SOAP SOAP SOAP SOAP SOAP SOAP
Consommateur Operation Operation Operation Operation Operation Operation Operation
Consommateur
de service X Operation X Operation X Operation X Operation X Operation X X Operation
Operation de service
Operation Z Operation Z Operation Z Operation Z Operation Z Operation Z Operation Z
Y Y Y Y Y Y Y

Serveurs d’application, Protocoles de Middleware SOA – PodBridge1.2 WSDL & Services Web SOAP
Connecteurs PodBridge
Ressources communication Intermédiation entre serveurs d’application et SOAP endpoint, description, XML,
Logique métier
Systèmes hétérogènes Règles de communication consommateurs de services XSD..

ère
Figure 33 –1 phase de l’urbanisation des deux réseaux (Services Web)

ISET Djerba | TriTux PAGE 88


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

3.6. Réalisation des processus métiers - phase 2


Déploiement de ProcessRUById et BatchProcessRU :

ISET Djerba | TriTux PAGE 89


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

WS WS WS WS WS WS WS
SOAP SOAP SOAP SOAP SOAP SOAP SOAP
Operation Operation Operation Operation Operation Operation Operation
X Operation X Operation X Operation X Operation X Operation X X Operation
Operation
Operation Z Operation Z Operation Z Operation Z Operation Z Operation Z Operation Z
Y Y Y Y Y Y Y

invoke
invoke Messages XML SOAP
invoke (Requête et réponse)
invoke

invoke Invoke
invoke
Process
invoke
Receive Receive
GlassFish ESB 2.1
composant sun-bpel-engine

BPEL
invoke
BPEL

Reply Reply
bpel-engine.intranet.demo

ProcessRUById BatchProcessRU

WS WS
SOAP SOAP

ProcessRUById BatchProcessRU

Figure 34 –Déploiement de ProcessRUById et BatchProcessRU

ISET Djerba | TriTux PAGE 90


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

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)

ISET Djerba | TriTux PAGE 91


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

Lancement d’un job d’impression pour l’accusé de paiement :

Boite de réception :

Paramètres du compte FTP (reçu par mail) :

ISET Djerba | TriTux PAGE 92


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

Notification par SMS – Message de bienvenu :

Compte FTP :

ISET Djerba | TriTux PAGE 93


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

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

ISET Djerba | TriTux PAGE 94


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

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>

ISET Djerba | TriTux PAGE 95


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

3.7. Développement des applications

Réseau local de l’établissement (LAN) Réseau National Universitaire (WAN)

à un serveur Debian Lenny


BD étudiants PostgreSQL

d’inscription universitaire
debian5-02.intranet.demo
postgres-83.intranet.demo

Modem GSM connecté


Point d’accès Sans Fil

Serveur Web du site


ftp-etu.intranet.demo

inscription.edu.demo
ap-21.intranet.demo

cups.intranet.demo

Serveur Mail –
SMTP & POP3
Serveur CUPS
Serveur FTP

rnu.edu.demo
Serveurs d’application,
Ressources
Systèmes hétérogènes

Protocoles de
communication
Règles de communication

SSH : 22 Telnet : 23 IPP : 631 Pgsql : 5432 SSH : 22 SSH : 80 SSH : 22 Connecteurs PodBridge
Logique métier
APACLManager.connector.php
APACLManager
FTPAccount.connector.php

IPPService.connector.php

SMSService.connector.php

wwwsubscr.connector.php
Middleware SOA –

MailAccount.connector.php
FTPAccount

SMSService
BDetu.connector.php
IPPService

wwwsubscr

MailAccount
PodBridge1.2
BDbetu Intermédiation entre serveurs
d’application et consommateurs
de services

WSDL & Services Web


SOAP
SOAP endpoint, description,
XML, XSD..

PodBridge 1.2 (Middleware SOA) – podbridge.intranet.demo PodBridge 1.2


ws.rnu.edu.demo

WS WS WS WS WS WS WS
SOAP SOAP SOAP SOAP SOAP SOAP SOAP
Operation Operation Operation Operation Operation Operation Operation
X Operation X Operation X Operation X Operation X Operation X X Operation
Operation
Operation Z Operation Z Operation Z Operation Z Operation Z Operation Z Operation Z
Y Y Y Y Y Y Y

invoke
invoke
invoke
invoke

invoke Invoke
invoke
Process
invoke
Receive Receive
GlassFish ESB 2.1
composant sun-bpel-engine
BPEL

invoke
BPEL

Reply Reply
bpel-engine.intranet.demo

ProcessRUById BatchProcessRU Messages XML SOAP


(Requête et réponse)

WS WS
SOAP SOAP

ProcessRUById BatchProcessRU

ping.java
formulaire.php

start-pru-09-
deleteftp.pl 10-att.sh

Figure 35 - SI après urbanisation

ISET Djerba | TriTux PAGE 96


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

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/a
uto/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.

ISET Djerba | TriTux PAGE 97


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

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/unstabl e/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());

ISET Djerba | TriTux PAGE 98


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

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/BatchP rocessRUTypes.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,

ISET Djerba | TriTux PAGE 99


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

- 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.

ISET Djerba | TriTux PAGE 100


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

 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.

ISET Djerba | TriTux PAGE 101


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

 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.

ISET Djerba | TriTux PAGE 102


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

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.

ISET Djerba | TriTux PAGE 103


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Chapitre 3 : Etude conceptuelle

Figure 36 - Architecture de PodBridge 1.2

ISET Djerba | TriTux PAGE 104


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Perspective

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…

ISET Djerba | TriTux PAGE 105


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Liste des abréviations

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

ISET Djerba | TriTux PAGE 106


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Bibliographie

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

ISET Djerba | TriTux PAGE 107


Rapport PFE Urbanisation d’un SI universitaire SOA & BPM
Walid KARRAY | 2009 - 2010 Bibliographie

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

ISET Djerba | TriTux PAGE 108


Urbanisation d’un système d’information universitaire
SOA & BPM
M. WALID KARRAY

Ré sumé : 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.

Mots clé s : Urbanisation, intergiciel, AOS, BPM, Services web, BPEL, orchestration.

Abstract : 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.

Ke ywords : 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/PHP 5/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 : pbFTPAccountConnecto r ............................................................................ 24
2.2.4. Classe du connecteur : pbIPPServiceConnector ............................................................................... 34
2.2.5. Classe du connecteur : pbMailA ccountConnecto r........................................................................... 37
2.2.6. Classe du connecteur : pbSMSServiceConnecto r ............................................................................. 49
2.2.7. Classe du connecteur : pbwwwsubscrConnector............................................................................. 50
2.3. FICHIERS WSDL .............................................................................................................................................. 53
2.3.1. WSDL exposé par PodBridge1.2 su r « podbridge.intranet.demo » .............................................. 53
2.3.2. WSDL exposé par PodBridge1.2 su r « 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. SQUIRREL MAIL (HTTP://WEBMAIL .RNU.EDU.DEMO) ...................................................................................... 120
3.2. CUPS W EB 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 (I NTERFACES D’ADMINISTRATION)......................................................................................... 122
3.6. PROJET PROCESSRUBYI D (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

1. FICHIERS DE
CONFIGURATION

ISET Djerba | TriTux PAGE 3


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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

ISET Djerba | TriTux PAGE 4


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

#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 ge nerate "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

ISET Djerba | TriTux PAGE 5


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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

ISET Djerba | TriTux PAGE 6


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

</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

ISET Djerba | TriTux PAGE 7


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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

ISET Djerba | TriTux PAGE 8


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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 =

ISET Djerba | TriTux PAGE 9


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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

ISET Djerba | TriTux PAGE 10


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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

ISET Djerba | TriTux PAGE 11


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

2. CODES SOURCES

ISET Djerba | TriTux PAGE 12


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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,

ISET Djerba | TriTux PAGE 13


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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);

ISET Djerba | TriTux PAGE 14


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

--
-- 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 ;

ISET Djerba | TriTux PAGE 15


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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,'eyatounsi@example.com',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

ISET Djerba | TriTux PAGE 16


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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() {

ISET Djerba | TriTux PAGE 17


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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:stri
ng,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
);

ISET Djerba | TriTux PAGE 18


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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

ISET Djerba | TriTux PAGE 19


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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

ISET Djerba | TriTux PAGE 20


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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

ISET Djerba | TriTux PAGE 21


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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 *

ISET Djerba | TriTux PAGE 22


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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 }

ISET Djerba | TriTux PAGE 23


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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 );

ISET Djerba | TriTux PAGE 24


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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 /**

ISET Djerba | TriTux PAGE 25


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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 n ame
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

ISET Djerba | TriTux PAGE 26


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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 *

ISET Djerba | TriTux PAGE 27


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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);

ISET Djerba | TriTux PAGE 28


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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;

ISET Djerba | TriTux PAGE 29


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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

ISET Djerba | TriTux PAGE 30


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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);

ISET Djerba | TriTux PAGE 31


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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;

ISET Djerba | TriTux PAGE 32


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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)

ISET Djerba | TriTux PAGE 33


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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());

ISET Djerba | TriTux PAGE 34


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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 */

ISET Djerba | TriTux PAGE 35


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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

ISET Djerba | TriTux PAGE 36


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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_]+)*$/',

ISET Djerba | TriTux PAGE 37


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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 fstna me 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 */

ISET Djerba | TriTux PAGE 38


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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))

ISET Djerba | TriTux PAGE 39


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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,WebMa ilUrl: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

ISET Djerba | TriTux PAGE 40


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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:s
tring) 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 ) );

ISET Djerba | TriTux PAGE 41


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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'])

ISET Djerba | TriTux PAGE 42


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

212 Throw new Exception("Your password must be be tween ".$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;

ISET Djerba | TriTux PAGE 43


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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 emailad dr 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

ISET Djerba | TriTux PAGE 44


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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

ISET Djerba | TriTux PAGE 45


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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

ISET Djerba | TriTux PAGE 46


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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 );

ISET Djerba | TriTux PAGE 47


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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" );

ISET Djerba | TriTux PAGE 48


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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

ISET Djerba | TriTux PAGE 49


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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

ISET Djerba | TriTux PAGE 50


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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

ISET Djerba | TriTux PAGE 51


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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 ) {

ISET Djerba | TriTux PAGE 52


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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">

ISET Djerba | TriTux PAGE 53


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

<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"/>

ISET Djerba | TriTux PAGE 54


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

<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"/>

ISET Djerba | TriTux PAGE 55


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

</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>

ISET Djerba | TriTux PAGE 56


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

<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>

ISET Djerba | TriTux PAGE 57


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

<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"/>

ISET Djerba | TriTux PAGE 58


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

<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"/>

ISET Djerba | TriTux PAGE 59


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

<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"/>

ISET Djerba | TriTux PAGE 60


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

<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"/>

ISET Djerba | TriTux PAGE 61


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

<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>

ISET Djerba | TriTux PAGE 62


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

</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"/>

ISET Djerba | TriTux PAGE 63


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

</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"/>

ISET Djerba | TriTux PAGE 64


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

</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>

ISET Djerba | TriTux PAGE 65


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

<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/X MLSchema"
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"/>

ISET Djerba | TriTux PAGE 66


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

<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"/>

ISET Djerba | TriTux PAGE 67


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

</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>

ISET Djerba | TriTux PAGE 68


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

<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>

ISET Djerba | TriTux PAGE 69


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

<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>

ISET Djerba | TriTux PAGE 70


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

<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>

ISET Djerba | TriTux PAGE 71


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

<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"/>

ISET Djerba | TriTux PAGE 72


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

</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">

ISET Djerba | TriTux PAGE 73


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

<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

ISET Djerba | TriTux PAGE 74


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

<?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>

ISET Djerba | TriTux PAGE 75


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

</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"/>

ISET Djerba | TriTux PAGE 76


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

</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>

ISET Djerba | TriTux PAGE 77


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

<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"/>

ISET Djerba | TriTux PAGE 78


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

</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>

ISET Djerba | TriTux PAGE 79


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

</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"/>

ISET Djerba | TriTux PAGE 80


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

<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>

ISET Djerba | TriTux PAGE 81


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

<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" >

ISET Djerba | TriTux PAGE 82


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

<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>

ISET Djerba | TriTux PAGE 83


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

</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:doCreateMailUser Account2"/>
</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>

ISET Djerba | TriTux PAGE 84


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

<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/wsd l/"
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" />

ISET Djerba | TriTux PAGE 85


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

<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/w sdl/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"/>

ISET Djerba | TriTux PAGE 86


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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>

ISET Djerba | TriTux PAGE 87


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

<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/proc ess/executable/SUNExtension/Attachme
nt"

xmlns:sxeh="http://www.sun.com/wsbpel/2.0/process/executable/SUNExtension/ErrorHan
dling"
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/XPathFun
ctions" xmlns:ns5="urn:apaclmanns"
xmlns:sxtx="http://www.sun.com/wsbpel/2.0/process/executable/SUNExtension/Transact
ion" 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/"/>

ISET Djerba | TriTux PAGE 88


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

<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"/>

ISET Djerba | TriTux PAGE 89


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

<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:SetFTPUserWelcomeMsgReque st"/>
<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"/>

ISET Djerba | TriTux PAGE 90


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

<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>'isetjerba@rnu.edu.demo'</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>

ISET Djerba | TriTux PAGE 91


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

<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:studen tident</to>
</copy>
<copy>
<from>'2009/2010'</from>
<to>$GetAccuseIn.body/ns0:au</to>
</copy>
</assign>
<invoke name="GETACCUSE"
partnerLink="pbServicesLocalPL" operation="getAccuse"

ISET Djerba | TriTux PAGE 92


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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>

ISET Djerba | TriTux PAGE 93


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

<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"

ISET Djerba | TriTux PAGE 94


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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:EmailAdres s</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"/>

ISET Djerba | TriTux PAGE 95


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

<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">

ISET Djerba | TriTux PAGE 96


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

<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">

ISET Djerba | TriTux PAGE 97


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

<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>

ISET Djerba | TriTux PAGE 98


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

</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" />

ISET Djerba | TriTux PAGE 99


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

<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>

ISET Djerba | TriTux PAGE 100


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

<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>

ISET Djerba | TriTux PAGE 101


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

<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"/>

ISET Djerba | TriTux PAGE 102


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

</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 &gt; 2</condition>


<sequence name="Sequence9">
<assign
name="envoyer_cours_uml">
<copy>
<from
variable="KEY"/>

<to>$DoFTPsendFileIn.body/ns3:key</to>
</copy>

ISET Djerba | TriTux PAGE 103


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

<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>

ISET Djerba | TriTux PAGE 104


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

<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>

ISET Djerba | TriTux PAGE 105


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

</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>

ISET Djerba | TriTux PAGE 106


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

<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>

ISET Djerba | TriTux PAGE 107


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

<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"/>

ISET Djerba | TriTux PAGE 108


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

<to>$DoSendSMS_bienvenue_In.body/n s7: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>

ISET Djerba | TriTux PAGE 109


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

<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/Attachme
nt"

xmlns:sxeh="http://www.sun.com/wsbpel/2.0/process/executable/SUNExtension/ErrorHan
dling"

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

ISET Djerba | TriTux PAGE 110


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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/processRU ById"
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"/>

ISET Djerba | TriTux PAGE 111


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

<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>

ISET Djerba | TriTux PAGE 112


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

<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>

ISET Djerba | TriTux PAGE 113


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

</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>'sunbpelengine@rnu.edu.demo' </from>
<to>$DoSendMailIn.body/ns4:from </to>
</copy>
<copy>
<from>'walid@rnu.edu.demo'</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:PodBridgeDoSendMailPortT ype"
inputVariable="DoSendMailIn" outputVariable="DoSendMailOut"/>
</sequence>

ISET Djerba | TriTux PAGE 114


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

<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>

ISET Djerba | TriTux PAGE 115


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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.p
hp/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,

ISET Djerba | TriTux PAGE 116


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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>

ISET Djerba | TriTux PAGE 117


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

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">nom@domain.xx</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

ISET Djerba | TriTux PAGE 118


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

3. CAPTURES D’ECRAN

ISET Djerba | TriTux PAGE 119


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

3.1. SquirrelMail (http://webmail.rnu.edu.demo)

3.2. CUPS Web administration (http://cups.intranet.demo:631)

ISET Djerba | TriTux PAGE 120


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

3.3. Site web d’inscription univ. en ligne -


(http://inscription.edu.demo)

3.4. SoapUI 3.0.1

ISET Djerba | TriTux PAGE 121


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

3.5. PodBridge 1.2 (Interfaces d’administration)

ISET Djerba | TriTux PAGE 122


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

3.6. Projet ProcessRUById (Quelques captures d’écrans)

ISET Djerba | TriTux PAGE 128


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

3.7. Projet BatchProcessRU (Quelques captures d’écrans)

ISET Djerba | TriTux PAGE 132


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

3.8. Application web PHP (formulaire info etudiant)

ISET Djerba | TriTux PAGE 133


Documentation Technique du Rapport PFE (Urbanisation d’un SI universitaire - SOA & BPM)
Walid KARRAY | 2009 – 2010

ISET Djerba | TriTux PAGE 134

You might also like