Vous êtes sur la page 1sur 247

Ré publique Tunisienne Ministère de l’Enseignement Supérieur, de la Recherche Scientifique et Technologie

Institut Supérieur des Études Technologiques de Djerba

Direction Générale des Études Technologiques

Département Technologie de 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. Référence AN/SE CODE TI 2010/S01 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. 1.2. 1.3. 2.1. 2.2. Introduction générale.................................................................................................. 8 Entreprise d’accueil ..................................................................................................... 8 Contexte et objectif du projet ................................................................................... 11 Introduction au concept SOA .................................................................................... 14 Les services web ........................................................................................................ 17 Introduction........................................................................................................ 17 Les différents types de services web ................................................................. 17 Résumé ............................................................................................................... 24

2. Chapitre 2 : Etat de l’art...................................................................................................... 14

2.2.1. 2.2.2. 2.2.3.

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. 3.3.2. 3.3.3. 3.3.4. Introduction........................................................................................................ 74 Conception du 1er processus métier : ProcessRUById ....................................... 74 Conception du processus : BatchProcessRU...................................................... 77 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. 3.4.3. 3.4.4. 3.4.5. 3.4.6. 3.4.7. 3.4.8. 3.4.9.

Serveur CUPS : cups.intranet.demo ................................................................... 79 Serveur de BD PostgreSQL : postgres-83.intranet.demo................................... 79 Serveur web d’inscription en ligne : inscription.edu.demo ............................... 80 Point d’accès sans fil : ap-21. intranet.demo ..................................................... 81 Serveur mail : (ws.rnu.edu.demo)...................................................................... 81 Modem GSM connecté au serveur Lenny : debian5-02.intranet.demo ............ 82 PodBridge 1.2 ..................................................................................................... 82 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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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 2

Société Anonyme à Responsabilité Limitée Société de service et d’ingénierie de l’informatique

ISET Djerba | TriTux

PAGE 8

Rapport PFE Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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 4 5 6

Lightweight Directory Access Protocol Short Message Service Multimedia Messaging Service Gnu’s Not Unix

ISET Djerba | TriTux

PAGE 9

Rapport PFE Walid KARRAY | 2009 - 2010 Sameteam, PixelJ, Attijari Bank, Groupe Délice Tunisie, …

Urbanisation d’un SI universitaire SOA & BPM Chapitre 1 : Introduction

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 Walid KARRAY | 2009 - 2010 

Urbanisation d’un SI universitaire SOA & BPM 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 Walid KARRAY | 2009 - 2010 et encore plus…

Urbanisation d’un SI universitaire SOA & BPM Chapitre 1 : Introduction

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 9

Service Oriented Architecure Business Process Management

ISET Djerba | TriTux

PAGE 12

Rapport PFE Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM Chapitre 1 : Introduction

2) La deuxième phase consiste à la conception des processus métier à travers un workflow / orchestration10 de services web

Processus de coordination d'un échange d'information à travers l'interaction de services web. « Source Wikipedia – http://fr.wikipedia.o rg/wiki/Orchestration _(informatique) »

10

ISET Djerba | TriTux

PAGE 13

Rapport PFE Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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 de service
Figure 2 – Requête / Réponse (SOA)

Fournisseur / Prestataire de service

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.

Un consortium industriel initié pour la promotion de l’interopérabilité entre plateformes par la rédaction des spécifications des Services Web WS-*

11

ISET Djerba | TriTux

PAGE 14

Rapport PFE Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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 cidessous.

ISET Djerba | TriTux

PAGE 15

Rapport PFE Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM Chapitre 2 : Etat de l’art

Présentation
Consommateur Application
Application Web Terminal Appareil Mobile

5 4 3

Orchestration
WORKFLOW BPEL, BPM

Services
Services Services web

Composants, Méthodes
Méthodes de classes bibliothèques,drivers...

Func () { ---Func () { -----} --}

Func () { ---Func () { -----} --}

2 1

Systèmes & Ressources
Serveurs, Bases de données..

DB DB

I0II0I0I0I0 I0II0I0I0I0 II0III00I0I II0III00I0I 0I0III0I0I0 0I0III0I0I0 I0I0I0 I0I0I0

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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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 13 14 15

HyperText Transfer Protocol HTTP Secure Simple Mail Transfer Protocol Extensible Markup Language

ISET Djerba | TriTux

PAGE 17

Rapport PFE Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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 services web.  Structure d’un document WSDL :

pour décrire les

16 17

Simple Object Access Protocol Web Services Description Language

ISET Djerba | TriTux

PAGE 18

Rapport PFE Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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 Walid KARRAY | 2009 - 2010 -

Urbanisation d’un SI universitaire SOA & BPM 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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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 Walid KARRAY | 2009 - 2010 -

Urbanisation d’un SI universitaire SOA & BPM 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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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 Walid KARRAY | 2009 - 2010
Services partenaire (Google Maps Service partenaire (GSM Tracking) API)
{Donnée: Rayon (real) min=0.1 max=10.0}

Urbanisation d’un SI universitaire SOA & BPM Chapitre 2 : Etat de l’art
L'appareil Mobile Service partenaire (Internet Banking Service)
Entrée: (Aucun)

Saisir le rayon (zone de recherche - Valeur en km)

Sortie: - SN (Subscriber number) (number) - numéro de compte (number)

Entrée: - SN (Subscriber Number) (number) Entrée: Cherche (string) = "Salon de thé" Rayon en KM (real) Longitude (string) Lattitude (string) Sortie: - Logitude (string) - Lattitude (string) HTTPS (SSL)

Quel est son numéro de tel et le numéro de sa carte de crédit ?

Saisir code confidentiel

Sortie: - Nombre (integer) - Liste des salons de thé (string XML)

Quel est mon solde ? [Solde >= 10 Dinars]

[Solde < 10 Dinars] Afficher message « Ce n’est pas le moment pour aller au salon de thé !!! »

Quelle est ma géoposition (longitude & latitude)

Enrée: - numéro de compte (number) - code (string) Sortie: - Solde (real)

Quelles sont les espaces 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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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 WSBPEL 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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM Chapitre 2 : Etat de l’art

Business Expert

End User / Application

Design Time

Run Time

BPEL Designer

Generates

Process flow template

Executes

BPEL Engine

Figure 11

20

– 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

Figure - Référence: http://www.developer.com/services/article.php/3609381/AnIntroduction-to-BPEL.htm
ISET Djerba | TriTux

20

PAGE 29

Rapport PFE Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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 Walid KARRAY | 2009 - 2010 La balise <invoke> :

Urbanisation d’un SI universitaire SOA & BPM Chapitre 2 : Etat de l’art

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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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 Walid KARRAY | 2009 - 2010 -

Urbanisation d’un SI universitaire SOA & BPM 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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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. 3.2.2.1.

Urbanisation du SI de l’établissement 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 Walid KARRAY | 2009 - 2010  Description des attributs : Champ id nom prenom dep spec niveau Tel email loginftp adrmac refrecu process Identifiant de l’étudiant Nom de l’étudiant. Prénom de l’étudiant. Code de département Code de spécialité Niveau

Urbanisation d’un SI universitaire SOA & BPM Chapitre 3 : Etude conceptuelle

Description

Numéro de téléphone personnel (GSM). Adresse email. Login du compte FTP sur le réseau de l’institut. Adresse MAC de l’interface réseau sans fil de l’ordinateur portable de l’étudiant. Référence de l’accusé de payement. 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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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 Walid KARRAY | 2009 - 2010 

Urbanisation d’un SI universitaire SOA & BPM Chapitre 3 : Etude conceptuelle

Description des attributs de la classe BDetu: Description Ressource PostgreSQL Client Description des méthodes de la classe BDetu : Description Renvoi les informations sur un étudiant depuis la base de données. getStudientById Entrée id : Identifiant. String Sortie Informations sur l’étudiant (id,nom, prénom, dep,spec,niveau,te l,email,loginftp,adr mac,refrecu,proce ss). Array Vrai si succès de la mis à jour. boolean null Valeur initiale

Nom de l’attribut conn 

Nom de la méthode

Service

Service

Met à jour une ou plusieurs informations sur un étudiant tel que, son email, tel, login ftp… updateStudentById

id :Identifiant. String Tel String adrmac String ftp String refrecu String process String

Renvoi l’identifiant de l’étudiant suivant. Service

getNextId

id : Identifiant. (Optionnel) -’Si elle prend null c’est pour récupérer le premier identifiant’ String Code état du process (Filtre)

Identifiant. String

Envoi la requête SQL au SGBD et revoie le résultat. executeSQL

sql : Requête SQL String

Résultat de la requête. Array Numrows : Nombre de ligne retournées integer

connect

Se connecter au serveur

Vrai si succès de la

ISET Djerba | TriTux

PAGE 40

Rapport PFE Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM Chapitre 3 : Etude conceptuelle connexion. boolean Vrai en cas de succès de la déconnexion. boolean

PostgreSQL (initialise la ressource conn) disconnect Se déconnecter du serveur PostgreSQL et libère la ressource conn.

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 Walid KARRAY | 2009 - 2010
PodBridge 1.2 SOA Middleware

Urbanisation d’un SI universitaire SOA & BPM Chapitre 3 : Etude conceptuelle
postgresql (5432)

Frontend
Monitor transactions log

PB1.2 Core

PB1.2 Connector « Bdetu.connector.php »

End system PostgreSQL DBMS

Trace requests and responses Setup PB1.2 PodBridge admin Get WSDL Authenticate and check privilege HTTP (80) Call method : getStudentById() << Include >> SQL Execute : SELECT .. FROM .. WHERE ..

SOAP web service API
Call method : executeSQL() << Include >> Invoke WS : getSudentByID << Include >> << Include >> << Include >> SQL Execute : UPDATE .. SET .. WHERE .. DBA

Call method : getNextId() << Include >>

Invoke WS : updateStudentById Service Consumer Invoke WS : getNextId

Handle request

Tell PostgreSQL Server to perform the operation Call method : updateStudentById()

<< Include >>

if cached

Get response from cache

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

ISET Djerba | TriTux

PAGE 42

Rapport PFE Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM Chapitre 3 : Etude conceptuelle

Description des attributs de la classe FTPAccount : Description Ressource sshclient Pour identifier si la connexion au serveur SSH est établit et en cours. Renferme différentes expressions régulières. null False Expression régulière d’un nom d’utilisateur. Valeur initiale

Nom de l’attribut sshCon authenticated regexValidator

Description des méthodes de la classe FTPAccount : Nom de la méthode Description Génère un mot de passe aléatoire. Entrée len : Longueur du mot de passe (optionnel) 5 par défaut Integer Vérifie si un utilisateur existe déjà sur le système. user : Nom d’utilisateur String date : Une date (JJ/MM/AAAA) String user : Nom d’utilisateur String expiry_date : Date d’expiration boolean use_welcome : Utiliser le message de bienvenu par défaut (Vrai par Vrai si l’utilisateur est déjà existant. boolean Une date (MM/JJ/AAAA) String (login, mot de passe, nom de domaine et n° port ftp) Array Sortie Mot de passe. String

generateRandomPasswd

ifUserExists

getUnixDate

Converti une date au format JJ/MM/AAAA en une date au format MM/JJ/AAAA. Créer un nouveau compte d’utilisateur FTP.

SERVICE

doCreateFTPUserAccoun t

ISET Djerba | TriTux

PAGE 45

Rapport PFE Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM Chapitre 3 : Etude conceptuelle défaut) boolean Modifie la date d’expiration d’un compte utilisateur FTP. user : Nom d’utilisateur String expiry_date : Date d’expiration String Modifie le fichier « welcome.msg » qui existe dans la racine du compte utilisateur FTP. user : Nom d’utilisateur. String message : Message de bienvenu. String user : Nom d’utilisateur. String user : Nom d’utilisateur. String password : Ancien mot de passe. String new_password : Nouveau mot de passe. String Vérifie si le mot de passe passé en paramètre est correct. user : Nom d’utilisateur. String password : Mot de passe String Vrai si la vérification est positive et faux dans le cas contraire. boolean Vrai si le compte d’utilisateur a été supprimé avec succès. boolean Vrai si la date d’expiration du compte à été modifiée avec succès. boolean

SERVICE

setFTPUserAccountExpir yDate

setFTPUserWelcomeMs g

Vrai si le contenu du fichier « welcome.msg à été modifier. boolean Vrai si le fichier « welcome.msg à été supprimer. boolean Vrai si le mot de passe a été changé avec succès. boolean

SERVICE

SERVICE

doDisableFTPUserW elcomeMsg

Supprime le fichier « welcome.msg » qui existe dans la racine du compte utilisateur FTP. Modifie le mot de passe d’un compte utilisateur FTP.

SERVICE

doChangeFTPUserPa ssword

doCheckPassword

SERVICE

doDeleteFTPUserAcc ount

Supprime un compte user : Nom utilisateur FTP du système. d’utilisateur. String

ISET Djerba | TriTux

PAGE 46

Rapport PFE Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM Chapitre 3 : Etude conceptuelle Fait une copie des fichiers ou dossiers d’une source à un compte utilisateur FTP. file : Chemin du fichier ou du répertoire source. String user : Nom d’utilisateur. String Demande au serveur SSH cmd : La d’exécuter une commande commande. Shell. String exception : Lever une exception dans le cas où le résultat retourné par la commande est une erreur. (Vrai par défaut) boolean readResponse : si elle prend vrai, on récupère le résultat retourné par la commande (Faux par défaut) boolean Se connecter au serveur SSH (initialise la ressource sshCon). Se déconnecter du serveur SSH et libère la ressource sshCon. Vrai en cas de succès de la connexion. boolean Vrai en cas de succès de la déconnexion. boolean Le résultat d’exécution de la commande. String Vrai si la copie de fichiers est terminée avec succès. boolean

SERVICE

doFTPsendFile

ssh2Exec

connect

disconnect

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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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
M o n ito r tr a n s a c tio n s lo g

P B 1 .2 C o re

P B 1 .2 C o n n e c to r « F T P A c c o u n t.c o n n e c to r.p h p »

T r a c e r e q u e s ts a n d re s p o n s e s S e tu p P B 1 . 2

< < In c lu d e > > 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()

C a ll m e th o d : g e n e r a te R a n d o m P a s s w d ()

E n d s y s te m O penSSH and p ro F T P d o n U b u n tu s e rv e r

P B a d m in

G et W SD L A u th e n tic a te a n d c h e c k p r iv ile g e

< < In c lu d e > > C a ll m e th o d : ifU s e r E x is ts ( ) < < In c lu d e > > < < In c lu d e > > < < In c lu d e > > C a ll m e th o d : < < In c lu d e > > s e tF T P U s e r W e lc o m e M s g ( ) C a ll m e th o d : s s h 2 E x e c () S h e ll e x e c u te : u s e r m o d - e .... F T P S e rv e r a d m in S h e ll e x e c u te : u s e r a d d … - g F T P ...

H T T P (8 0 )

S O A P w e b s e r v ic e A P I

In v o k e W S : d o C r e a te F T P U s e rA c c o u n t

< < In c lu d e > >

In v o k e W S : s e tF T P U s e r A c c o u n tE x p ir y D a te

H a n d le r e q u e s t

< < In c lu d e > > < < In c lu d e > > 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 v o k e W S : s e tF T P U s e r W e lc o m e M s g 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 v o k e W S : d o F T P s e n d F ile < < In c lu d e > > T e ll S S H S e r v e r to p e r fo r m th e o p e r a tio n S h e ll E x e c u te : c p …

S e r v ic e C onsum er

< < In c lu d e > >

S h e ll E x e c u te : c h o w n ...

G e t r e s p o n s e fr o m cache

C a ll m e th o d : 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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM Chapitre 3 : Etude conceptuelle

Description des attributs de la classe APACLManager : Description Renferme différentes expressions régulières. Valeur initiale Expression régulière d’une adresse MAC.

Nom de l’attribut regexValidator

Description des méthodes de la classe APACLManager :

Nom de la méthode

Description Ajoute une adresse MAC dans l’ACL du point d’accès sans fil. (Autorise l’accès au réseau) Supprime une adresse MAC depuis l’ACL du point d’accès sans fil. (Interdit l’accès au réseau)

Entrée macaddr : Adresse MAC. String

Sortie Vrai si adresse à été ajoutée à la liste de contrôle du point d’accès. boolean Vrai si adresse à été supprimer de la liste de contrôle du point d’accès. boolean (clé d’authentificatio n, SSID). Array Vrai en cas de succès de la connexion. boolean Vrai en cas de succès de la déconnexion. boolean

doForwardMACaddr

SERVICES

doRomoveForwordedM ACaddr

macaddr : Adresse MAC. String

getAccesPointInfo

Renvoi des informations sur le point d’accès (l’SSID et la clé d’authentification). Se connecter au serveur TELNET.

connect

disconnect

Se déconnecter du serveur TELNET.

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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM Chapitre 3 : Etude conceptuelle

PodBridge 1.2 SOA Middleware

TELNET (23)

Frontend
Monitor transactions log

PB1.2 Core

PB1.2 Connector « APACLManager.connector.php »

End system Wireless Access Point

Trace requests and responses Setup PB1.2 PodBridge admin Get WSDL Call method : doForwardMACaddr() Authenticate and check privilege << Include >> << Include >> Invoke WS : doForwardMACaddr << Include >> << Include >> Network admin Remove mac address from ACL Call method : SocketSend() Add mac address to ACL << Include >>

HTTP (80)

SOAP web service API

Call method : doRomoveForworded MACaddr()

Service Consumer

Invoke WS : doRomoveForworded MACaddr

Handle request

Tell Telnet Server to perform the operation

<< Include >>

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

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

ISET Djerba | TriTux

PAGE 53

Rapport PFE Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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 ipp Description Objet de la classe CupsPrintIPP. Valeur initiale null

ISET Djerba | TriTux

PAGE 54

Rapport PFE Walid KARRAY | 2009 - 2010 

Urbanisation d’un SI universitaire SOA & BPM Chapitre 3 : Etude conceptuelle

Description des méthodes de la classe IPPService : Nom de la méthode Description Envoyer un ordre d’impression d’une page web à une imprimante partagée. Entrée url : URL de la page web. String jobname : Nom du job d’impression (optionnel) String Sortie Vrai si l’ordre d’impression à été envoyé. boolean

SERVICES

doPrintWebPage

getPrinters

Renvoie les adresses (URI) des imprimantes partagées par CUPS Envoyer un ordre d’impression à une imprimante partagée d’un document présent sur le serveur. filepath : Chemin d’accès à un document présent sur le serveur. String jobname : Nom du job d’impression (optionnel) String Se connecter au serveur CUPS.

Des URI délimités par des points virgules. String Vrai si l’ordre d’impression à été envoyé. boolean

doPrintInternalDocument

connect

Vrai en cas de succès de la connexion. boolean Vrai en cas de succès de la déconnexion. boolean

disconnect

Se déconnecter du serveur CUPS.

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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM Chapitre 3 : Etude conceptuelle

PodBridge 1.2 SOA Middleware

cups (631)

Frontend
Monitor transactions log

PB1.2 Core

PB1.2 Connector « IPPService.connector.php »

End system CUPS Server

Trace requests and responses Setup PB1.2 PodBridge admin Get WSDL Authenticate and check privilege HTTP (80) Call method : doPrintInternalDocument() << Include >> Scan for available printers

SOAP web service API

<< Include >> Invoke WS : doPrintWebPage << Include >>

<< Include >>

Tell CUPS Server to perform the operation

Network admin start print job

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

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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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 curl_handle Description ressource curl null Valeur initiale

Description des méthodes de la classe wwwsubscr :

ISET Djerba | TriTux

PAGE 57

Rapport PFE Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM Chapitre 3 : Etude conceptuelle

Nom de la méthode

Description Renvoi la référence de l’accusé de paiement pour une année universitaire donnée. (si paiement effectué)

Entrée studentident : Identifiant de l’étudiant. String au : Année universitaire (AAAA/AAAA). String studentident : Identifiant de l’étudiant. String au : Année universitaire (AAAA/AAAA). String

Sortie Référence de l’accusé de paiement. String

getAccuseRef

getAccuse

Renvoi la référence et l’URL de l’accusé de paiement pour une année universitaire donnée. Si getAccuseRef renvoie la référence de l’accusé.

SERVICE

Référence et url de l’accusé de paiement. Array

connect

Initialisation de la ressource

Vrai si la ressource à été initialisée. boolean Vrai si la ressource à été libérée. boolean

Ressource libérée disconnect

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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM Chapitre 3 : Etude conceptuelle

PodBridge 1.2 SOA Middleware

HTTP (80)

Frontend
Monitor transactions log

PB1.2 Core

PB1.2 Connector « wwwsubscr.connector.php »

Trace requests and responses Setup PB1.2 PodBridge admin Get WSDL Authenticate and check privilege HTTP (80) Call method : getAccuse() << Include >>

End System HTTP Server (inscription.edu.demo )

Get page of requested URL

SOAP web service API
<< Include >>

<< Include >> << Include >> Invoke WS : getAccuse

Tell WEB Server To perform the operation Authenticate Web user

<< Include >> 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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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 : Description Ressource client ssh Pour identifier si la connexion au serveur SSH est établit et en cours. null False Valeur initiale

Nom de l’attribut sshCon authenticated

ISET Djerba | TriTux

PAGE 60

Rapport PFE Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM Chapitre 3 : Etude conceptuelle Expression régulière d’un numéro de téléphone de 8 chiffres.

regexValidator

Renferme différentes expressions régulières.

Description des méthodes de la classe SMSService : Description Envoyer un SMS. Entrée destinataire : numéro de téléphone du destinataire. String message : Message texte court à envoyer String Supprimer des espaces qui phonenumber : existent dans le numéro Numéro de de téléphone et valider téléphone String son format. Numéro de téléphone sans espaces blanc String Sortie Vrai si l’SMS a été envoyé au destinataire boolean

Nom de la méthode

SERVICE

doSendSMS

stripSpaces

Demande au serveur SSH cmd : La d’exécuter une commande commande. Shell. String exception : Lever une exception dans le cas où le résultat retourné par la commande est une erreur. (Vrai par défaut) boolean readResponse : si elle prend vrai, on récupère le résultat retourné par la commande (Faux par défaut)

Le résultat d’exécution de la commande. String

ssh2Exec

ISET Djerba | TriTux

PAGE 61

Rapport PFE Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM Chapitre 3 : Etude conceptuelle boolean Se connecter au serveur SSH (initialise la ressource sshCon). Se déconnecter du serveur SSH et libère la ressource sshCon. Vrai en cas de succès de la connexion. boolean Vrai en cas de succès de la déconnexion. boolean

connect

disconnect

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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM Chapitre 3 : Etude conceptuelle

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

Frontend
Monitor transactions log

PB1.2 Core

PB1.2 Connector «SMSService.connector.php »

SSH (22)

Trace requests and responses Setup PB1.2 PodBridge admin Get WSDL Authenticate and check privilege HTTP (80) Call method : stripSpaces()

End System Server

SOAP web service API
<< Include >> << Include >> << Include >> Invoke WS : doSendSMS Call method : doSendSMS() << Include >> Handle request Send SMS command Server Admin

Service Consumer

<< Include >>

Tell SSH Server to 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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM Chapitre 3 : Etude conceptuelle

3.2.3. 3.2.3.1.

Urbanisation du SI du RNU 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 autogé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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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 sshCon authenticated Description Ressource sshclient Pour identifier si la connexion au serveur SSH est établit et en cours. Renferme différentes expressions régulières. null False Expression régulière pour un nom d’utilisateur (mail), prénom et adresse email. Valeur initiale

regexValidator

ISET Djerba | TriTux

PAGE 65

Rapport PFE Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM Chapitre 3 : Etude conceptuelle

Description des méthodes de la classe MailAccount : Nom de la méthode Description Génère un mot de passe aléatoire. Entrée len : Longueur du mot de passe (optionnel) Integer user : Nom d’utilisateur String fstname : prénom. String lstname : nom. String emailaddr : adresse email. String Sortie Mot de passe. String

generateRandomPasswd

ifUserExists

Vérifie si un utilisateur existe déjà sur le système. Génère un nom d’utilisateur à partir du nom et prénom passés en paramètres. Extrait le nom d’utilisateur à partir d’une adresse email du domaine (rnu.edu.demo). Créer un nouveau compte mail (1)

Vrai si l’utilisateur est déjà existant. boolean Nom d’utilisateur. String

generateUserName

doStripAtDomain

Nom d’utilisateur. String

user : Nom d’utilisateur String genpswd: vrai pour auto générer le mot de passe. boolean password: mot de passe (si genpswd reçoit faux). String

SERVICE

doCreateMailUserAcco unt

(adresse email, mot de passe, port POP3, port SMTP, adresse url du webmail ‘SquirrelMail’) Array

SERVICE

Créer un nouveau compte mail (2) doCreateMailUserAcco unt2

fstname : prénom. String lstname : nom. String genpswd: vrai pour auto

(adresse email, mot de passe, port POP3, port SMTP, adresse url du webmail ‘SquirrelMail’)

ISET Djerba | TriTux

PAGE 66

Rapport PFE Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM Chapitre 3 : Etude conceptuelle générer le mot de passe. boolean password: mot de passe (si genpswd reçoit faux). String Array

SERVIC E

doDeleteMailUserAcco unt

Supprime un compte mail.

emailaddr : adresse mail. String emailaddr : adresse mail. String emailaddr : adresse mail. String emailaddr: adresse email. String password : Ancien mot de passe. String new_password Nouveau mot de passe. String

Vrai si le compte mail a été supprimé avec succès. boolean Vrai si le compte mail a été activé. boolean Vrai si le compte mail a été désactivé. boolean Vrai si le mot de passe a été changé avec succès. boolean

SER VICE

doUnlockMailUserAcco unt

Active un compte mail.

SERVIC E

doLockMailUserAccoun t

Désactive un compte mail.

Modifie le mot de passe d’un compte mail. SERVICE doChangeMailUserPass word

SERVICE

Permet (à un administrateur) l’envoi de messages à n’importe quelle adresse électronique. doSendMail

from: adresse email de l’envoyeur. String to : adresse email du destinataire. String message : Corps du message String subject : Sujet du

Vrai si le message à été envoyé avec succès. boolean

ISET Djerba | TriTux

PAGE 67

Rapport PFE Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM Chapitre 3 : Etude conceptuelle message String Vérifie si le mot de passe passé en paramètre est correct. user : Nom d’utilisateur. String password : Mot de passe String Demande au serveur SSH d’exécuter une commande Shell. cmd : La commande. String exception : Lever une exception dans le cas où le résultat retourné par la commande est une erreur. (Vrai par défaut) boolean readResponse : si elle prend vrai, on récupère le résultat retourné par la commande (Faux par défaut) boolean Vrai si la vérification est positive et faux dans le cas contraire. boolean Le résultat d’exécution de la commande. String

doCheckPassword

ssh2Exec

connect

Se connecter au serveur SSH (initialise la ressource sshCon). Se déconnecter du serveur SSH et libère la ressource sshCon.

Vrai en cas de succès de la connexion. boolean Vrai en cas de succès de la déconnexion. boolean

disconnect

ISET Djerba | TriTux

PAGE 68

Rapport PFE Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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 Walid KARRAY | 2009 - 2010
PodBridge 1.2 SOA Middleware

Urbanisation d’un SI universitaire SOA & BPM Chapitre 3 : Etude conceptuelle

Frontend
Monitor transactions log

PB1.2 Core

PB1.2 Connector « MailAccount.connector.php »
Call method : generate generateUserName()

SSH (22) POP (110) SMTP (25) HTTP (80)

Trace requests and responses Setup PB1.2

<< Include >> Call method : doCreateMail UserAccount2()

End system OpenSSH and Postfix and Dovecot on Ubuntu server

PB admin

Get WSDL Authenticate and check privilege

<< Include >> Call method : ifUserExists() << Include >> Call method : << Include >> doSendMail()

HTTP (80)

SOAP web service API
<< Include >> Invoke WS : doCreateMail UserAccount2 << Include >>

Shell execute : useradd … -g mail ...

<< Include >>

Call method : ssh2Exec() Invoke WS : doChangeMail UserPassword Handle request << Include >> << Include >> Call method : doDeleteMail UserAccount() << Include >> Tell SSH Server to perform the operation if cached Call method : doChangeMail UserPassword() << Include >> Invoke WS : doSendMail Get response from cache Call method : doCheckPassword()

Shell execute : userdel -r ....

Mail Server admin

<< Include >> Service Consumer Invoke WS : doDeleteMail UserAccount

Shell Execute : mail -s…

Shell Execute : usermod -p...

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

ISET Djerba | TriTux

PAGE 70

Rapport PFE Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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 Walid KARRAY | 2009 - 2010
«interface» PodBridgeConnectorInterface +connect() : boolean +disconnect() : boolean

Urbanisation d’un SI universitaire SOA & BPM Chapitre 3 : Etude conceptuelle

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

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

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

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

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

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

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

ISET Djerba | TriTux

PAGE 72

Rapport PFE Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM Chapitre 3 : Etude conceptuelle

Donner l’identifiant de l'étudiant RECEIVE: ProcessRUByIdIn

Mettre à jour la BD, état process EXE INVOKE: « updateStudentById »

Récupérer les informations de l’étudiant depuis la base de données INVOKE: « getStudentById »

Récupérer la référence de l’accusé de paiement et son URL depuis le site inscription.edu.demo INVOKE: « getReceipt »

[Paiement non effectué] [Paiement effectué]

Lancer un nouveau job d’impression pour l’accusé de paiement INVOKE: « doPrintWebPage »

Possède-il un compte e-mail ? [non] [oui] Mettre à jour la BD, état process PAI 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 est-il ‘TI’ ?

A-t-il donné son 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 INVOKE: « setFTPUserWelcomeMsg »

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

Envoyer les paramètres du nouveau compte FTP par SMS INVOKE: « doSendSMS »

Etendre le délai d’expiration INVOKE: «setFTPUserAccountExpiryDate »

Envoyer les paramètres du nouveau compte FTP par mail INVOKE: « doSendMail »

Envoyer le calendrier ,les cours & TP INVOKE: « doFTPsendFile »

Est-il niveau 2 ou plus ? [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 INVOKE: « doSendSMS »

Envoyer un mail de bienvenue INVOKE: « doSendMail »

Renvoyer OK REPLY: ProcessRUByIdOut

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

ISET Djerba | TriTux

PAGE 76

Rapport PFE Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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).

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

22

ISET Djerba | TriTux

PAGE 77

Rapport PFE Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM Chapitre 3 : Etude conceptuelle

Donner le filtre (soit ‘PAI’, ‘ATT’ ou ‘ * ‘) RECEIVE: BatchProcessRUIn Récupérer l’indentifiant Suivant INVOKE: « getNextId »

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

Invoquer le service (ProcessRUById) pour l’identifiant courant INVOKE: « ProcessRUById » [non] Dernier identifiant ?

[oui]

Notifier l’administrateur par SMS INVOKE: « doSendSMS »

Notifier l’administrateur par Mail 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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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 Walid KARRAY | 2009 - 2010
DirectoryIndex index.php

Urbanisation d’un SI universitaire SOA & BPM Chapitre 3 : Etude conceptuelle

<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 Walid KARRAY | 2009 - 2010
$ sudo /etc/init.d/postfix start

Urbanisation d’un SI universitaire SOA & BPM Chapitre 3 : Etude conceptuelle

-

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 postgres=# \q owner podbridge;

ISET Djerba | TriTux

PAGE 82

Rapport PFE Walid KARRAY | 2009 - 2010
$ ./pbadmin pb-build-all-load

Urbanisation d’un SI universitaire SOA & BPM Chapitre 3 : Etude conceptuelle

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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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 Walid KARRAY | 2009 - 2010  Accès au nouveau compte FTP:

Urbanisation d’un SI universitaire SOA & BPM Chapitre 3 : Etude conceptuelle

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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM Chapitre 3 : Etude conceptuelle

Réseau local de l’établissement (LAN)
Modem GSM connecté à un serveur Debian Lenny debian5-02.intranet.demo BD étudiants PostgreSQL postgres-83.intranet.demo
Administrateur Système

Réseau National Universitaire (WAN)
Serveur Web du site d’inscription universitaire inscription.edu.demo
Admin. Système Admin. PodBridge

Point d’accès Sans Fil ap-21.intranet.demo

Serveur FTP ftp-etu.intranet.demo

Serveur CUPS cups.intranet.demo

SSH : 22
Admin. PodBridge
FTPAccount.connector.php

Telnet : 23
APACLManager.connector.php

IPP : 631

Pgsql : 5432

SSH : 22

HTTP : 80

SSH : 22

APACLManager

IPPService.connector.php

SMSService.connector.php

wwwsubscr.connector.php

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

PodBridge 1.2 ws.rnu.edu.demo

WS SOAP
Consommateur Operation X de service
Operation Y Operation Z

WS SOAP
Operation X Operation Operation Z Y

WS SOAP
Operation X Operation Operation Z Y

WS SOAP
Operation X Operation Operation Z Y

WS SOAP
Operation X Operation Operation Z Y

WS SOAP
Operation X Operation Operation Z Y

WS SOAP
Operation Consommateur X Operation de service Operation Z Y

Serveurs d’application, Ressources
Systèmes hétérogènes

Protocoles de communication
Règles de communication

Connecteurs PodBridge
Logique métier

Middleware SOA – PodBridge1.2
Intermédiation entre serveurs d’application et consommateurs de services

WSDL & Services Web SOAP
SOAP endpoint, description, XML, XSD..

Figure 33 –1

ère

phase de l’urbanisation des deux réseaux (Services Web)

MailAccount.connector.php

FTPAccount

BDetu.connector.php

SMSService

IPPService

wwwsubscr

MailAccount

BDbetu

Serveur Mail – SMTP & POP3 rnu.edu.demo

ISET Djerba | TriTux

PAGE 88

Rapport PFE Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM Chapitre 3 : Etude conceptuelle

WS SOAP
Operation X Operation Operation Z Y

WS SOAP
Operation X Operation Operation Z Y

WS SOAP
Operation X Operation Operation Z Y

WS SOAP
Operation X Operation Operation Z Y

WS SOAP
Operation X Operation Operation Z Y

WS SOAP
Operation X Operation Operation Z Y

WS SOAP
Operation X Operation Operation Z Y

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

GlassFish ESB 2.1
Reply invoke composant sun-bpel-engine bpel-engine.intranet.demo

Receive

invoke

BPEL

BPEL

Reply

ProcessRUById
WS SOAP
ProcessRUById

BatchProcessRU
WS SOAP
BatchProcessRU

Figure 34 –Déploiement de ProcessRUById et BatchProcessRU

ISET Djerba | TriTux

PAGE 90

Rapport PFE Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM Chapitre 3 : Etude conceptuelle

3.6.1.
 Requête :

Test de ProcessRUById (Invocation du service composite)

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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM Chapitre 3 : Etude conceptuelle

Notification par SMS – Message de bienvenu :

Compte FTP :

ISET Djerba | TriTux

PAGE 93

Rapport PFE Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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 Walid KARRAY | 2009 - 2010
Content-Length: 382

Urbanisation d’un SI universitaire SOA & BPM Chapitre 3 : Etude conceptuelle

<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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM Chapitre 3 : Etude conceptuelle

3.7. Développement des applications
Réseau local de l’établissement (LAN)
Modem GSM connecté à un serveur Debian Lenny debian5-02.intranet.demo BD étudiants PostgreSQL postgres-83.intranet.demo Point d’accès Sans Fil ap-21.intranet.demo Serveur FTP ftp-etu.intranet.demo

Réseau National Universitaire (WAN)
Serveur Web du site d’inscription universitaire inscription.edu.demo

Serveur CUPS cups.intranet.demo

Serveur Mail – SMTP & POP3 rnu.edu.demo

Serveurs d’application, Ressources
Systèmes hétérogènes Protocoles de communication
Règles de communication

SSH : 22
FTPAccount.connector.php

Telnet : 23
APACLManager.connector.php

IPP : 631

Pgsql : 5432

SSH : 22

SSH : 80

SSH : 22

Connecteurs PodBridge
Logique métier

APACLManager

IPPService.connector.php

SMSService.connector.php

wwwsubscr.connector.php

MailAccount.connector.php

FTPAccount

BDetu.connector.php

SMSService

IPPService

wwwsubscr

MailAccount

Middleware SOA – PodBridge1.2
Intermédiation entre serveurs d’application et consommateurs de services

BDbetu

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 SOAP
Operation X Operation Operation Z Y

WS SOAP
Operation X Operation Operation Z Y

WS SOAP
Operation X Operation Operation Z Y

WS SOAP
Operation X Operation Operation Z Y

WS SOAP
Operation X Operation Operation Z Y

WS SOAP
Operation X Operation Operation Z Y

WS SOAP
Operation X Operation Operation Z Y

invoke invoke invoke invoke Receive invoke Invoke Process invoke

GlassFish ESB 2.1
Reply invoke composant sun-bpel-engine bpel-engine.intranet.demo

Receive

invoke

BPEL

BPEL

Reply

ProcessRUById
WS SOAP
ProcessRUById

BatchProcessRU
WS SOAP
BatchProcessRU

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

ping.java formulaire.php start-pru-0910-att.sh

deleteftp.pl

Figure 35 - SI après urbanisation

ISET Djerba | TriTux

PAGE 96

Rapport PFE Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM Chapitre 3 : Etude conceptuelle

3.7.1.
 Exemple :
1 <?php 2

Appel web-service SOAP en PHP5

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 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 } 32 catch (SoapFault $e) { 33 echo '['.$e->getCode().']'; 34 echo $e->getMessage(); 35 } 36 37 ?> //Affiche le message renvoyé par podBridge (reponse) echo $result->status->message ."\n"; //Affiche le prénom echo $result->response->prenom."\n"; //Affiche l'adresse email echo $result->response->email."\n"; //Arguements (paramètres d'entrées) $arguments=array( 'key'=>'691292877050480f54b5', 'sync'=>'1', 'id'=>'12345678' ) ; //Apel de la méthode getStudentById $result = $client->getStudentById($arguments); //Affiche toute la réponse - Type: stdClass Object print_r ($result); //Affiche status - Type: stdClass Object print_r ($result->status);

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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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 69 70 ……… ……… pbns.PodBridgePingService service = new pbns.PodBridgePingService(); 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 78 79 80 String resultString = sourceToXMLString(result); System.out.println("Received xml: \n" + resultString); } catch (Exception ex) { System.out.println("An error has occured: \n" + ex.getMessage());

ISET Djerba | TriTux

PAGE 98

Rapport PFE Walid KARRAY | 2009 - 2010
81 82 83 84 ……… ……… }

Urbanisation d’un SI universitaire SOA & BPM Chapitre 3 : Etude conceptuelle

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-bpelengine.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 Walid KARRAY | 2009 - 2010 

Urbanisation d’un SI universitaire SOA & BPM 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 Walid KARRAY | 2009 - 2010  proFTPD 1.3.1 (Serveur FTP) : Site web officiel : http://www.proftpd.org

Urbanisation d’un SI universitaire SOA & BPM Chapitre 3 : Etude conceptuelle

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 Walid KARRAY | 2009 - 2010  SoapUI 3.0.1 : Site web officiel : http://www.soapui.org

Urbanisation d’un SI universitaire SOA & BPM Chapitre 3 : Etude conceptuelle

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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM Chapitre 3 : Etude conceptuelle

Figure 36 - Architecture de PodBridge 1.2

ISET Djerba | TriTux

PAGE 104

Rapport PFE Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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 Walid KARRAY | 2009 - 2010

Urbanisation d’un SI universitaire SOA & BPM 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. 1.1. 1.2. 1.3. 1.4. 2. 2.1. 2.1.1. 2.1.2. 2.2. 2.2.1. 2.2.2. 2.2.3. 2.2.4. 2.2.5. 2.2.6. 2.2.7. 2.3. 2.3.1. 2.3.2. 2.3.3. 2.3.4. 2.4. 2.5. 2.5.1. 2.5.2. 2.6. 3. 3.1. 3.2. 3.3. 3.4. 3.5. 3.6. 3.7. 3.8. FICHIERS DE CONFIGURATION.................................................................................................................. 3
ETC/HOSTS (RESOLUTION D 'ADRESSE)................................................................................................................. 4 ETC/POSTFIX /MAIN.CF (CONFIGURATION DE POSTFIX - SMTP SERVER)............................................................... 5 ETC/APACHE2/APACHE2.CONF (CONFIGURATION D ’APACHE) ............................................................................. 6 ETC/PHP 5/APACHE2/PHP.INI (CONFIGURATION DE PHP) .................................................................................. 8

CODES SOURCES ........................................................................................................................................ 12 SCRIPTS SQL ................................................................................................................................................... 13 Création (create.sql) ............................................................................................................................. 13 Insertion (insert.sql).............................................................................................................................. 15 CODES SOURCES DES CONNECTEURS PODBRIDGE 1.2........................................................................................ 16 Classe du connecteur : APACLManager ............................................................................................ 16 Classe du connecteur : BDetu.............................................................................................................. 18 Classe du connecteur : pbFTPAccountConnecto r ............................................................................ 24 Classe du connecteur : pbIPPServiceConnector ............................................................................... 34 Classe du connecteur : pbMailA ccountConnecto r........................................................................... 37 Classe du connecteur : pbSMSServiceConnecto r ............................................................................. 49 Classe du connecteur : pbwwwsubscrConnector............................................................................. 50 FICHIERS WSDL .............................................................................................................................................. 53 WSDL exposé par PodBridge1.2 su r « podbridge.intranet.demo » .............................................. 53 WSDL exposé par PodBridge1.2 su r « ws.rnu.edu.demo » ............................................................ 74 WSDL du service « ProcessRUById » .................................................................................................. 85 WSDL du service « BatchProcessRU » ............................................................................................... 86 FICHIER XSD (DEFINITION DES PARAMETRES D’E/S DU PROCESSUS BATCHPROCESSRU).................................... 87 FICHIERS BPEL ................................................................................................................................................ 88 Fichier source : ProcessRUById.bpel .................................................................................................. 88 Fichier Source : BatchProcessRU.bpel .............................................................................................. 110 CODE SOURCE DE L ’APPLICATION PHP (FORMULAIRE INFO ETUDIANT) ............................................................. 116 CAPTURES D’ECRAN ................................................................................................................................ 119 SQUIRREL MAIL (HTTP://WEBMAIL .RNU.EDU.DEMO) ...................................................................................... 120 CUPS W EB ADMINISTRATION (HTTP://CUPS.INTRANET.DEMO:631) .............................................................. 120 SITE WEB D’INSCRIPTION UNIV. EN LIGNE - (HTTP://INSCRIPTION.EDU.DEMO).................................................. 121 SOAPUI 3.0.1............................................................................................................................................... 121 PODBRIDGE 1.2 (I NTERFACES D’ADMINISTRATION)......................................................................................... 122 PROJET PROCESSRUBYI D (QUELQUES CAPTURES D ’ECRANS)........................................................................... 128 PROJET BATCHPROCESSRU (QUELQUES CAPTURES D ’ECRANS) ........................................................................ 132 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 # ~~~~~~~ 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

localhost

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 The Debian default

# line of that file to be used as the name. # 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 MaxSpareServers MaxClients MaxRequestsPerChild 5 10 150 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 MaxClients MinSpareThreads MaxSpareThreads ThreadsPerChild MaxRequestsPerChild </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 2 150 25 75 25 0

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 5 6 7 8 9 10 11 12 13 private $regexValidator = array ( 'macaddr'=>'/^([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}$/'); /** * Add adress to MAC filter (forwording) * * @service * @cacheable false * * @param string macaddr address // Method not yet implemented

ISET Djerba | TriTux

PAGE 16

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

14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57

* * @type (ssid:string,auth_key:string) doForwardMACaddrOut * @return doForwardMACaddrOut information about the Wireless AP */ public function doForwardMACaddr($macaddr) { if ( ! preg_match($this->regexValidator['macaddr'],$macaddr)) Throw new Exception('Wrong Mac address format !', 805);

// Method not yet implemented $doForwardMACaddrOut = array(); $doForwardMACaddrOut['ssid']=$this->params['ssid']; $doForwardMACaddrOut['auth_key']=$this->params['auth_key']; return $doForwardMACaddrOut; } /** * Remove adress from MAC filter * * @service * @cacheable false * * @param string macaddr address * * @return boolean true if MAC address was removed from ACL // Method not yet implemented

*/ public function doRomoveForwordedMACaddr($macaddr) { if ( ! preg_match($this->regexValidator['macaddr'],$macaddr)) Throw new Exception('Wrong Mac address format !', 805); // Method not yet implemented return true; } /* * Make connection to the Server and authenticate * * @return */ public function connect() { bool true on connection success, false if not

ISET Djerba | TriTux

PAGE 17

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

58 59 60 61 62 63 64 65 66 67 68 69 70 } 71

return true; } /* * Disconnect from the server by executing a logout command * * @return */ bool true (allways)

public function disconnect() { return true; }

2.2.2.

Classe du connecteur : BDetu

Code source : BDetu.connector.php
1 <?php 2 class BDetu extends PodBridgeConnector implements PodBridgeConnectorInterface { 3 4 5 6 7 8 9 10 11 12 13 /** * Returns all information about a student by his id * * @service * @cacheable false * * @param string * id student identifier private $conn=null;

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 16 17 18 19 20 ); * @return getStudentByIdOut information a student */ public function getStudentById($id) { if (! preg_match("/^[0-9]{8}$/", $id) ) 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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 /** * Update information about a Student in the database * * @service * @cacheable false * * @param string * @param string* * @param string* * @param string* * @param string* * @param string* * @param string* * id student identifier } $getStudentByIdOut['id']=$res['id']; $getStudentByIdOut['nom']=$res['nom']; $getStudentByIdOut['prenom']=$res['prenom']; $getStudentByIdOut['dep']=$res['dep']; $getStudentByIdOut['spec']=$res['spec']; $getStudentByIdOut['niveau']=$res['niveau']; $getStudentByIdOut['tel']=$res['tel']; $getStudentByIdOut['email']=$res['email']; $getStudentByIdOut['loginftp']=$res['loginftp']; $getStudentByIdOut['adrmac']=$res['adrmac']; $getStudentByIdOut['refrecu']=$res['refrecu']; $getStudentByIdOut['process']=$res['process']; return $getStudentByIdOut;

tel personal phone number email email address loginftp ftp login (user name) adrmac mac address refrecu receipt identifier process process execution out state

* @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 68 69 70 71 72 ); 73 74 //Validate Mac address } //Validate identifier if (! preg_match("/^[0-9]{8}$/", $id) ) throw new Exception ("Student id should be 8 digit number", 822 $rows['tel']=$tel;

75 if ($email!=null) { 76 if (! preg_match("/^[^0-9][A-z0-9_]+([.][A-z0-9_]+)*[@][A-z09_]+([.][A-z0-9_]+)*[.][A-z]{2,4}$/", $email) ) 77 78 79 80 81 82 83 84 $loginftp) ) 85 86 87 88 89 90 } //Validate mac address //Validate ftp login if ($loginftp!=null) { if (! preg_match("/^[^0-9][A-z0-9_]+([.][A-z0-9_]+)*$/", throw new Exception ("Wrong ftp login !", 824 ); $rows['loginftp']=$loginftp; } throw new Exception ("Wrong email address !", 823 ); $rows['email']=$email;

91 if ($adrmac!=null) { 92 if (! preg_match("/^[0-9a-fA-F]{2}[:-][0-9a-fA-F]{2}[:-][0-9afA-F]{2}[:-][0-9a-fA-F]{2}[:-][0-9a-fA-F]{2}[:-][0-9a-fA-F]{2}$/", $adrmac) ) 93 94 95 96 97 98 99 100 //Validate receipt identifier if ($refrecu!=null) { if (! preg_match("/^[0-9]{16}$/", $refrecu) ) throw new Exception ("Receipt identifier should be a 16 } throw new Exception ("Wrong mac address !", 825 ); $rows['adrmac']=$adrmac;

101 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 104 105 106 107 108

$rows['refrecu']=$refrecu; } //Validate process state code if ($process!=null) { 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 112 113 114 115 116 117 118 119 120 121 122 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 132 133 134 135 136 137 138 139 140 identifier 141 142 /** * Returns the next identifier of the given one (if exists) * If $id param is set to null this method will return the first * * @service return true; } } if (!$cols_to_update) throw new Exception ("Null value not permitted !", 828 ); $cols_to_update=null; foreach ($rows as $rowname=>$value) { if ($cols_to_update!='') $cols_to_update.=','; $cols_to_update.=$rowname."='".$value."'"; $rows['process']=$process; }

ISET Djerba | TriTux

PAGE 21

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

143 144 145 146 147 148 149 150 151 152 153 154 851 ); 155

* @cacheable false * * @param string* id * @param string filter

identifier filter

* * @type (nextid:string,last:boolean) retArray * @return retArray blabla */ public function getNextId($id,$filter) { if ( !preg_match("/^(ATT|PAI|\*)$/", $filter) ) throw new Exception ("Filter value should be ATT or PAI (*)" ,

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 160 161 if ($filter!='*') $filter_sql="and process in ('".$filter."') ";

162 $res = $this->executeSQL("select id from etudiant where id > '".$id."' ".$filter_sql." order by id asc limit 2",$numrows); 163 if (!$numrows) 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 /* * Executes an sql statement in pgsql server * and returns results as array * * @param string * sql sql query } throw new Exception ("No result" , 853 ); $retArray = array(); $retArray['nextid']=$res['id']; //$numrows can be 1 or 2 $retArray['last']=($numrows==1); return $retArray;

ISET Djerba | TriTux

PAGE 22

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

185 186 187 188 189 190 191 870 ); 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208

* @return Array */ private function executeSQL($sql,&$numrows) { $result = pg_query($this->conn, $sql); if (!$result) throw new Exception ("Error in SQL query: " . pg_last_error(), $numrows = pg_numrows($result); $resultArray = pg_fetch_array($result); pg_free_result($result); return $resultArray; }

/* * Make connection to the Server and authenticate * * @return */ boolean true on connection success, false if not

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 213 214 215 216 217 if (!$this->conn) 218 throw new Exception ( "Cannot connect to database: " . $this->params ['dbname'], 201 ); 219 220 221 222 223 224 225 } } return true; } catch ( Exception $e ) { $this->setLastError ( $e->getCode (), $e->getMessage() ); return false; if (!empty($this->params['password'])) $connect.=" password=".$this->params['password']; $this->conn=pg_connect ($connect);

ISET Djerba | TriTux

PAGE 23

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

226 227 228 229 230 231 232 233 234 235 236 237 238 239 } 240

/* * Disconnect from the server by executing a logout command * * @return */ boolean true (allways)

public function disconnect() { pg_close($this->conn); $this->conn=null; return true; }

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 7 8 9 10 11 12 13 14 15 16 17 private $sshCon = null; private $authenticated = false; private $regexValidator = array ( 'username'=>'/^[^0-9][A-z0-9_]+([.][A-z0-9_]+)*$/'); /* * Generate random password from a set of chars ($pool) * * @param * @return */ integer $len string Password length

Rand password

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 25 26 27 28 29 30 31 32 33 } /*

} return $string;

* Check if the user exists in host * * @param string user User name * @return boolean True if user exist */ private function ifUserExists($user) {

34 $this->ssh2Exec ( 'grep "^'.$user.':" /etc/passwd',true,true,$response); 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 /** } } if ($response==null) return false; return true;

/* * Convert dd/mm/yyyy format dates to unix date format * * @param string date * * @throws * * */ Exception 770 Date error

@return string Unix date

private function getUnixDate($date) { $datearray=explode('/',$date); $dd=$datearray[0]; $mm=$datearray[1]; $yyyy=$datearray[2]; if ( ! checkdate($mm, $dd, $yyyy) ) Throw new Exception('Date error ('.$date.')', 770); //Convert to unix date format mm/dd/yyyy $unixdate=$mm.'/'.$dd.'/'.$yyyy; return $unixdate;

ISET Djerba | TriTux

PAGE 25

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

66 67 68 69 70 71 72 73 74 75 76 77

* Create a new FTP account * * @service * @cacheable false * * @param string user The FTP user login * @param string expiry_date Expiry date * @param boolean use_welcome If use welcome message when user connect * * @throws * @throws * Exception Exception 803 804 Pattern matching error in user n ame User already exists

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 84 803); 85 86 87 88 89 90 91 92 93 94 if ( $this->ifUserExists($user) ) Throw new Exception('User ('.$user.') already exists', 804); //Convert dd/mm/yyyy expiry date to unix date if ( $expiry_date != 0 ) $unix_expdate = $this->getUnixDate($expiry_date); $userhome = $this->params ['ftp_users_path'].'/'.$user; // Generate a random password if ( ! preg_match($this->regexValidator['username'],$user)) Throw new Exception('Pattern matching error in user name',

95 $password = $this->generateRandomPasswd ( $this->params ['autogen_pswd_length'] ); 96 97 98 99 $cryptedPassword = crypt ( strip_tags ( $password ) ); // 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 103 if ($use_welcome) { //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 108 109 110 ['domain']; 111 ['ftp_port']; 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 /** * Set or Update user login welcome message * } $this->ssh2Exec ( 'usermod -e '.$unix_expdate.' '. $user ); return true; } /** * Set Ftp account expiry date * * @service * @cacheable false * * @param string user The FTP user login * @param string expiry_date Expiry date * * @throws * * @return boolean True when the expiry dates is updated */ public function setFTPUserAccountExpiryDate( $user,$expiry_date) { if ( ! $this->ifUserExists($user) ) Throw new Exception('User ('.$user.') seems inexistant', 850); //Convert dd/mm/yyyy expiry date to unix date if ( $expiry_date != 0 ) $unix_expdate = $this->getUnixDate($expiry_date); Exception 850 User seems inexistant $doCreateFTPUserAccountOut = array (); $doCreateFTPUserAccountOut ['UserLogin'] = $user; $doCreateFTPUserAccountOut ['Password'] = $password; $doCreateFTPUserAccountOut ['ServerDomain'] = $this->params $doCreateFTPUserAccountOut ['FTPPort'] = $this->params return $doCreateFTPUserAccountOut;

ISET Djerba | TriTux

PAGE 27

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

146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164

* @service * @cacheable false * * @param string user user name * @param string message message to display * * @throws * @throws * * @return boolean True when the message is set */ public function setFTPUserWelcomeMsg($user,$message) { if ( ! $this->ifUserExists($user) ) Throw new Exception('User ('.$user.') seems inexistant', 850); if ($message==null) Throw new Exception('Cannot set an empty message !' , 849); Exception Exception 850 849 User seems inexistant Cannot set empty message

165 $userhome = $this->params ['ftp_users_path'].'/'.$user; 166 $this->ssh2Exec ( 'echo -e "'.$message.'">' . $userhome . '/welcome.msg'); 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 if ( ! $this->ifUserExists($user) ) Throw new Exception('User ('.$user.') seems inexistant', 850); /** * Disable user welcome message while ftp connection * * @service * @cacheable false * * @param string user user name * * @throws * Exception 850 User seems inexistant } return true;

* @return boolean True when the message is set */ public function doDisableFTPUserWelcomeMsg($user) {

ISET Djerba | TriTux

PAGE 28

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

190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 /**

$userhome = $this->params ['ftp_users_path'].'/'.$user; $this->ssh2Exec ( 'rm -f ' . $userhome . '/welcome.msg'); return true; }

* Change an FTP User account password * * @service * @cacheable false * @param string user User name * @param string oldpassword The old user password * @param string newpassword The new user password * 840 841 842 Password verification failed Your password must be between Password should be different from

207 * @throws Exception 208 * @throws Exception {RANGE} characters in length 209 * @throws Exception the old one 210 211 212 213 { 214 215 216

* * @return boolean True when password changed */ public function doChangeFTPUserPassword($user,$password,$new_password)

if ( ! $this->doCheckPassword($user,$password) ) 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 225 226 227 228 $cryptedNewPassword = crypt ( strip_tags ( $new_password ) ); //Change the user password $this->ssh2Exec ( 'usermod -p \''.$cryptedNewPassword.'\' '.$user); 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 234 235 236 237 238 239 password 240 241 242 243 244 245 246 247 248 249

}

/* * Check if the user password is correct * * @param string user User name * @param string password User password * * @throws * @throws Exception Exception 850 851 Entered user name seems inexistant Unexpected error while checking

* * @return boolean True If password check success and False otherwise */ private function doCheckPassword($user,$password) { //Check if the user exist if ( ! $this->ifUserExists($user) ) Throw new Exception('User ('.$user.') seems inexistant', 850); //Retrieve crypted user password from /etc/shadow

250 $this->ssh2Exec ( 'grep ^'.$user.': /etc/shadow | cut -d":" f2',true,true,$refpswd); 251 252 851); 253 254 255 if ($refpswd==null) Throw new Exception("Unexpected error while checking password",

$cryptedReferencePassword = trim($refpswd); //Comparing passwords

256 if ( crypt( strip_tags ( $password ),$cryptedReferencePassword ) != $cryptedReferencePassword ) 257 258 259 260 261 262 263 264 265 266 267 268 269 } return false; return true;

/** * Delete FTP user account * * @service * @cacheable false * @param * @throws string user FTP user name 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 ftp user 271 272 273 274 275 276 277 278 279 280 281 282 user", 860); 283 284 285 286 287 288 289 290 291 292 293 294 295 296

* @throws * @return */

Exception boolean

860

Cannot do such operation on a non True When user is deleted

public function doDeleteFTPUserAccount($user) { //Check if the user exist if ( ! $this->ifUserExists($user) ) Throw new Exception('User ('.$user.') seems inexistant', 850); //Verify if FTP user $this->ssh2Exec ( 'groups '.$user,true,true,$groupname); if (trim($groupname)!=$this->params ['ftp_group_name']) Throw new Exception("Cannot do such operation on a non FTP

// Delete the user $this->ssh2Exec ( 'userdel -r '.$user); return true; }

/** * Transfer files/directories to an FTP account root directory * * @service * @cacheable false * string file Source file or directory inside string user FTP user name boolean True copy complete

297 * @param {files_source_root} 298 * @param 299 300 301 302 303 304 305 306 307 308 309 310 311 * * @return */

public function doFTPsendFile($file,$user) { $recursive=null; $dest=$this->params ['ftp_users_path'].'/'.$user.'/'.$file; $srcfile = $this->params ['files_source_root'].'/'.$file; if ( ! is_file($srcfile) ) { if (! is_dir($srcfile) ) { 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 313 314 315 316 317 }

} else { $recursive='-R'; }

$this->ssh2Exec ( 'cp '.$recursive.' '.$srcfile.' '.$dest);

318 $this->ssh2Exec ( 'chown '.$recursive.' '.$user.':'.$this->params ['ftp_group_name'].' '.$dest); 319 320 321 322 323 324 325 on-demand 326 /* * Executes a $cmd on the SSH connection and return $readable response * string bool bool $cmd Command to execute $exception Whether to throw exception on error $readResponse Whether to return a readable The readable response if requested If ($exception) AND we got an error return true; }

327 * @param 328 * @param or return false 329 * @param response or not 330 * @param will be here

pointer $response 200

331 * @throws Exception while executing the command 332 * @return ressource

The ssh2_exec return

333 */ 334 private function ssh2Exec($cmd, $exception = true, $readResponse = false, &$response = null) { 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 $this->setSessionLog ( 'sent', $cmd ); $stream = ssh2_exec ( $this->sshCon, $cmd ); //get the content of ssh2 stderr $stderr = ssh2_fetch_stream ( $stream, SSH2_STREAM_STDERR ); stream_set_blocking ( $stderr, true ); $response_stderr = stream_get_contents ( $stderr ); fclose ( $stderr ); if ($response_stderr) { if ($exception) { $this->setSessionLog ( 'received', $response_stderr ); throw new Exception ( "Error executing cmd: [$cmd]", 200 ); } else { $this->setSessionLog ( 'received', $response_stderr ); 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 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 200 ); */ /*

} } if ($readResponse) { stream_set_blocking ( $stream, true ); $response = stream_get_contents ( $stream ); fclose ( $stream ); $this->setSessionLog ( 'received', $response ); } else { $this->setSessionLog ( 'received', '[PB:noerror]' ); } return $stream; }

* Make connection to the Server and authenticate * * @return bool true on connection success, false if not

public function connect() { try { $this->sshCon = ssh2_connect ( $this->params ['host'] ); if (! $this->sshCon) throw new Exception ( "SSH Connection failure To the Host",

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 382 383 384 385 386 387 388 389 390 391 392 } /* * Disconnect from the server by executing a logout command * * @return bool true (allways) $this->authenticated = true; return true; } catch ( Exception $e ) { $this->setLastError ( $e->getCode (), $e->getMessage () ); return false; }

ISET Djerba | TriTux

PAGE 33

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

393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 } 409

*/ public function disconnect() { if ($this->sshCon) { if ($this->authenticated) { ssh2_exec ( $this->sshCon, "logout" ); } else $this->sshCon = null; } return true; }

2.2.4.

Classe du connecteur : pbIPPServiceConnector

Code source : IPPService.connector.php
1 <?php 2 class IPPService extends PodBridgeConnector implements PodBridgeConnectorInterface { 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 700); 20 private $ipp = null; /** * Print Web pages * * @service * @cacheable false * * @param string url web page location exemple: http://mydomain/mypage * @param string* jobname new job name * * @return boolean always true */ public function doPrintWebPage($url,$jobname=null) { if ( ! file_get_contents($url,null,null,null,1)) Throw new Exception('Cannot get page contents from ('.$url.')', $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 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 } } /**

//Convert web page to a PS document system ( 'html2ps '.$url.'>'.$tmpPSdoc); $this->doPrintInternalDocument( $tmpPSdoc,$jobname); //Cleaning system ( 'rm -f '.$tmpPSdoc); return true;

* * Print documents located in server * * @service * @cacheable false * * @param string filepath path to file * @param string* jobname new job name * * @return boolean always true */ public function doPrintInternalDocument($filepath,$jobname=null) { if ( ! file_exists($filepath)) Throw new Exception('File does not exists !', 705); if ( !$jobname ) $jobname=$filepath; $this->ipp->setJobName($jobname); $this->ipp->setData($filepath); // Path to file. $this->ipp->printJob(); return true;

/** * Returns all available printers * * @service * @cacheable false * * * @return string Liste all printers uri delimited by ";" */

ISET Djerba | TriTux

PAGE 35

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

65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107

public function getPrinters() { $this->ipp->getPrinters(); $printers=null; foreach( $this->ipp->available_printers as $printer) { if ( $printers ) $printers.=";"; $printers.=$printer; } return $printers; } // Method not yet implemented public function getAllJobs() { return true; } // Method not yet implemented public function killJobById($jobid) { return true; } // Method not yet implemented public function killAllJobs() { return true; }

// Method not yet implemented public function getLastJob() { //return $this->ipp->last_job; } /* * Make connection to the Server and authenticate * * @return bool true on connection success, false if not */ public function connect() {

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 110 111 112

require_once("PrintIPPclasses/CupsPrintIPP.php"); $this->ipp = new CupsPrintIPP; $this->ipp->setUserName($this->params['user']);

113 $this->ipp->setAuthentication($this->params['user'],$this>params['password']); // username & password 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 } 134 } return true; } /* * Disconnect from the server by executing a logout command * * @return bool true (allways) $this->ipp->setHost($this->params['ipp_host']); $this->ipp->setPort($this->params['ipp_port']); $this->ipp->setPrinterURI($this->params['printer_uri']);

*/ public function disconnect() { unset ($this->ipp); return true;

2.2.5.

Classe du connecteur : pbMailAccountConnector

Code source : MailAccount.connector.php
1 <?php 2 3 class MailAccount extends PodBridgeConnector implements PodBridgeConnectorInterface { 4 5 6 7 8 9 private $sshCon = null; private $authenticated = false; private $regexValidator = array ( 'fstname_lstname'=>'/^[A-z]{2,24}$/', '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-z09_]+([.][A-z0-9_]+)*[.][A-z]{2,4}$/'); 11 /* 12 13 14 15 16 17 */ private function generateRandomPasswd($len = 10) { * Generate random password from a set of chars ($pool) * * @param * @return integer $len string Password length

Rand password

18 $string = ''; 19 $pool = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' ; 20 21 22 23 24 25 26 27 28 29 30 31 32 */ } /* * Check if the user exists in host * * @param string user User name * @return boolean True if user exist for($i = 1; $i <= $len; $i ++) { $string .= substr ( $pool, rand ( 0, 61 ), 1 ); } return $string;

33 private function ifUserExists($user) { 34 $this->ssh2Exec ( 'grep "^'.$user.':" /etc/passwd',true,true,$response); 35 if ($response==null) 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 */ /* * Generate an unique user name by fstna me and lstname * * @param string fstname The user first name * @param string lstname The user last name * * @throws * @throws * * @return string user name Exception Exception 895 896 Invalid first name Invalid last name } return false; return true;

ISET Djerba | TriTux

PAGE 38

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

52 53 54 55 56 57 58 59 60

private function generateUserName($fstname,$lstname) {

$fstname = strtolower(trim($fstname)); $lstname = strtolower(trim($lstname)); $fstname=str_replace(' ', '_', $fstname); $lstname=str_replace(' ', '_', $lstname); //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 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 [domain] 86 87 88 89 90 91 */ private function doStripAtDomain($emailaddr) { //Check email address to local user name /* * Retrieve user name from an email address * * @param string emailaddr address * * @throws * @throws Exception Exception 870 890 Invalid email address Cannot do this operation on return ($username.$suffix); } } $username=$fstname.'.'.$lstname ; $suffix=null; while ($this->ifUserExists($username.$suffix)) { if (! $suffix ) $suffix=0 ; $suffix++;

* * @return string 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 94 95 96 97 98 99 100 101

Throw new Exception('Invalid address: ('.$emailaddr.')', 870);

//Convert user email address to user name $part=explode('@',trim(strtolower($emailaddr))); $domain=$part[1]; //Check the domaine name if ( $domain != $this->params['domain'] )

102 Throw new Exception('This email is not registered at ' .$this>params['domain'] , 890); 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 /** * Create new mail user Version 2 * * @service * @cacheable false * * @param string fstname The user first name * @param string lstname The user last name * @param boolean genpswd For auto generated password * @param string password User defined password } $user=$part[0]; return $user;

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 132 133 } return $retMailAccount2;

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 138 139 140 141 142 143 144 145

/** * Create new mail user Version 1 * * @service * @cacheable false * @param string user The mail user logins * @param boolean genpswd For auto generated password * @param string password User defined password * * @throws Exception 803 804 841 Password verification failed User already exists Your password must be between

146 * @throws Exception 147 * @throws Exception {RANGE} characters in length 148 *

149 * @type (EmailAdress:string,Password:string,POP3Port:integer,SMTPPort:integer,WebMailUrl:s tring) retMailAccount 150 151 152 153 154 155 803); 156 157 158 159 160 161 162 163 $UserHomeDir = $this->params ['mail_users_path'].'/'.$user; * @return retMailAccount information about the created mail account */ public function doCreateMailUserAccount($user,$genpswd,$password) { if ( ! preg_match($this->regexValidator['username'],$user)) Throw new Exception('Pattern matching error in user name' ,

if ( $this->ifUserExists($user) ) Throw new Exception('User ('.$user.') already exists', 804);

// Generate a random password 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 177 ; 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 /** * Cahnge a user password * * @service * @cacheable false * @param string emailaddr user email address * @param string oldpassword The old user password * @param string newpassword The new user password * 840 841 842 Password verification failed Your password must be between Password should be different from } $retMailAccount ['Password'] = $password; $retMailAccount ['POP3Port'] = $this->params ['pop3_port']; $retMailAccount ['SMTPPort'] = $this->params ['smtp_port']; $retMailAccount ['WebMailUrl'] = $this->params ['web_mail_url']; return $retMailAccount; $retMailAccount = array(); $retMailAccount ['EmailAdress'] = $user.'@'.$this->params['domain']

197 * @throws Exception 198 * @throws Exception {RANGE} characters in length 199 * @throws the old one 200 201 202 Exception

* * @return boolean True when password changed */

203 public function doChangeMailUserPassword($emailaddr,$password,$new_password) { 204 205 206 207 208 209 //Convert user email address to user name $user = $this->doStripAtDomain($emailaddr); if ( ! $this->doCheckPassword($user,$password) ) 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 218 219 220 221 222 223 224 225 226 227 228 229 230 231 password 232 233 234 235 236 237 238 239 240 241 242 //Check if the user exist if ( ! $this->ifUserExists($user) ) Throw new Exception('User ('.$user.') seems inexistant', 850); //Retrieve crypted user password from /etc/shadow return true; } /* * Check if the user password is correct * * @param string emailaddr user user login * @param string password user password * * @throws * @throws * * @return boolean True If password check success and False otherwise */ private function doCheckPassword($user,$password) { Exception Exception 850 851 Entered user name seems inexistant Unexpected error while checking $cryptedNewPassword = crypt ( strip_tags ( $new_password ) ); //Change the user password $this->ssh2Exec ( 'usermod -p \''.$cryptedNewPassword.'\' '.$user);

243 $this->ssh2Exec ( 'grep ^'.$user.': /etc/shadow | cut -d":" f2',true,true,$refpswd); 244 245 851); 246 247 248 if ($refpswd==null) Throw new Exception("Unexpected error while checking password",

$cryptedReferencePassword = trim($refpswd); //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 253 254 255 256 257 258 259 260 261 262 mail user 263 264 265 266 267 268 269 270 271 272 273 274 275 276

return true; } /** * Delete a mail user account * * @service * @cacheable false * @param * @throws * @throws * @return string emailaddr mail user name or full email adress Exception 850 Entered user name seems inexistant Exception boolean 860 Cannot do such operation on a non True When user is deleted

*/ public function doDeleteMailUserAccount($emailaddr) { //Convert user email address to user name $user = $this->doStripAtDomain($emailaddr); //Check if the user exist if ( ! $this->ifUserExists($user) ) Throw new Exception('User ('.$user.') seems inexistant', 850); //Verify if mail user $this->ssh2Exec ( 'groups '.$user,true,true,$groupname); if (trim($groupname)!=$this->params ['mail_group_name']) Throw new Exception("Cannot do such operation on a non mail

277 user", 860); 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 mail user /** }

// Delete the user $this->ssh2Exec ( 'userdel -r '.$user); return true;

* Unlock a mail user account * * @service * @cacheable false * @param string emailad dr mail user name or full email adress * @throws * @throws Exception Exception 850 860 Entered user name seems inexistant Cannot do such operation on a non

ISET Djerba | TriTux

PAGE 44

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

293 unlocked 294 295 296 297 298 299 300 301 302 303 304 305 306 307 user", 860); 308 309 310 311 312 313 314 315 316 317 318 319 320 321 mail user 322 locked 323 324 325 326 327 328 329 330 331 332 333

* @return */

boolean

True When user account is

public function doUnlockMailUserAccount($emailaddr) { //Convert user email address to user name $user = $this->doStripAtDomain($emailaddr); //Check if the user exist if ( ! $this->ifUserExists($user) ) Throw new Exception('User ('.$user.') seems inexistant', 850); //Verify if mail user $this->ssh2Exec ( 'groups '.$user,true,true,$groupname); if (trim($groupname)!=$this->params ['mail_group_name']) Throw new Exception("Cannot do such operation on a non mail

// Activate the user account $this->ssh2Exec ( 'passwd -u '.$user); return true; } /** * Lock a mail user account * * @service * @cacheable false * @param string emailaddr mail user name or full email adress * @throws * @throws * @return */ public function doLockMailUserAccount($emailaddr) { //Convert user email address to user name $user = $this->doStripAtDomain($emailaddr); //Check if the user exist if ( ! $this->ifUserExists($user) ) Throw new Exception('User ('.$user.') seems inexistant', 850); //Verify if mail user Exception Exception boolean 850 860 Entered user name seems inexistant Cannot do such operation on a non True When user account is

ISET Djerba | TriTux

PAGE 45

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

334 335 336 user", 860); 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 850); 370 371 372 373 374 375 376 /** }

$this->ssh2Exec ( 'groups '.$user,true,true,$groupname); if (trim($groupname)!=$this->params ['mail_group_name']) Throw new Exception("Cannot do such operation on a non mail

// Disable the user account $this->ssh2Exec ( 'passwd -l '.$user); return true;

* Send email (internal) * * @service * @cacheable false * @param * @param * @param * @param * * @throws * @throws * @throws * * * @return boolean True when message sent */ public function doSendMail($from,$to,$message,$subject=null) { //Convert sender email address to user name $user_sender = $this->doStripAtDomain($from); string from string to string message string subject Exception Exception Exception Sender email address or user name Receiver email address Message body The subject of the message 850 870 871 Entered user name seems inexistant Invalid receiver email address Cannot send empty message

//Check if the sender user exist if ( ! $this->ifUserExists($user_sender) ) Throw new Exception('User ('.$user_sender.') seems inexistant',

if ( ! preg_match($this->regexValidator['emailaddress'],$to)) Throw new Exception('Invalid address: ('.$to.')', 870); if ( $message==null ) Throw new Exception('Cannot send empty message', 871);

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 380 381 382 383 384 /* 385 * Executes a $cmd on the SSH connection and return $readable response on-demand 386 * string bool bool $cmd Command to execute $exception Whether to throw exception $readResponse Whether to return a The readable response if If ($exception) AND we got 387 * @param 388 * @param on error or return false 389 * @param readable response or not 390 * @param requested will be here } return true;

pointer $response 200

391 * @throws Exception 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 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 } if ($readResponse) { stream_set_blocking ( $stream, true ); } $this->setSessionLog ( 'sent', $cmd ); $stream = ssh2_exec ( $this->sshCon, $cmd ); //get the content of ssh2 stderr $stderr = ssh2_fetch_stream ( $stream, SSH2_STREAM_STDERR ); stream_set_blocking ( $stderr, true ); $response_stderr = stream_get_contents ( $stderr ); fclose ( $stderr ); if ($response_stderr) { if ($exception) { $this->setSessionLog ( 'received', $response_stderr ); throw new Exception ( "Error executing cmd: [$cmd]", 200 ); } else { $this->setSessionLog ( 'received', $response_stderr ); return false;

ISET Djerba | TriTux

PAGE 47

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

416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 200 ); */ /* }

$response = stream_get_contents ( $stream ); fclose ( $stream ); $this->setSessionLog ( 'received', $response ); } else { $this->setSessionLog ( 'received', '[PB:noerror]' ); } return $stream;

* Make connection to the Server and authenticate * * @return bool true on connection success, false if not

public function connect() { try { $this->sshCon = ssh2_connect ( $this->params ['host'] ); if (! $this->sshCon) throw new Exception ( "SSH Connection failure To the Host",

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 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 } /* * Disconnect from the server by executing a logout command * * @return bool true (allways) */ public function disconnect() { if ($this->sshCon) { if ($this->authenticated) { ssh2_exec ( $this->sshCon, "logout" ); $this->authenticated = true; return true; } catch ( Exception $e ) { $this->setLastError ( $e->getCode (), $e->getMessage () ); return false; }

ISET Djerba | TriTux

PAGE 48

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

458 459 460 461 462 463 464 465 466 467 468 } 469 470

} else $this->sshCon = null; } return true; }

2.2.6.

Classe du connecteur : pbSMSServiceConnector

Code source : SMSService.connector.php
1 <?php 2 3 class SMSService extends PodBridgeConnector implements PodBridgeConnectorInterface { 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 //cannot be delivered /** * doSendSMS * * @service * @cacheable false * * @param string destinataire Destination Phone number * @param string message Message Text * * @return boolean true if message successfully sent */ public function doSendSMS($destinataire,$message) { //cannot be delivered private $regexValidator = array ( 'sn_regex'=>'/^(00|\+|[0-9])[0-9]{7}$/');

ISET Djerba | TriTux

PAGE 49

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

25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 } 62 63

return true; }

private function stripSpaces($phonenumber) { $fixed=str_replace(' ', '',$phonenumber); if ( ! preg_match($this->regexValidator['sn_regex'],$fixed)) Throw new Exception('Phone number format error', 808); return $fixed; } /* * Make connection to the Server and authenticate * * @return */ public function connect() { //cannot be delivered return true; } /* * Disconnect from the server by executing a logout command * * @return bool true (allways) bool true on connection success, false if not

*/ public function disconnect() { //cannot be delivered return true; }

2.2.7.

Classe du connecteur : pbwwwsubscrConnector

Code source : wwwsubscr.connector.php
PAGE 50

ISET Djerba | TriTux

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 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 } private $curl_handle = null; /** * Returns the receipt identifier and URL for the web site * * @service * @cacheable false * * @param string studentident Identifiant de l'étudiant * @param string au AU format exp: 2009/2010 * * @type (refaccuse:string,urlaccuse:string) getAccuseOut * @return getAccuseOut Return refaccuse & urlaccuse */ public function getAccuse($studentident,$au) { $ref=$this->getAccuseRef($studentident,$au); $url='http://inscription.edu.demo/recu.php?ref='.$ref; $getAccuseOut = array (); $getAccuseOut['refaccuse']=$ref; $getAccuseOut['urlaccuse']=$url; return $getAccuseOut;

/* * @param string studentident Student identifier * @param string au AU format exp: 2009/2010 * * @return string Référence du reçu */ private function getAccuseRef($studentident,$au) { 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 54 preg_match('/[0-9]{16}/', (string)$buffer,$matches2);

55 if ( ! $matches0[0]) 56 Throw new Exception('Identifiant de l\'étudiant est non reconnu' , 807); 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 */ public function connect() { try { $this->curl_handle = curl_init(); /* * Make connection to the Server and authenticate * * @return bool true on connection success, false if not } if ( $matches1[0]!=$au) Throw new Exception('Payement non effectué !' , 809); $ref=$matches2[0]; return $ref;

77 curl_setopt( $this>curl_handle,CURLOPT_URL,"inscription.edu.demo"); 78 79 80 81 82 83 } catch ( Exception $e ) { curl_setopt( $this->curl_handle,CURLOPT_CONNECTTIMEOUT,2); curl_setopt( $this->curl_handle,CURLOPT_RETURNTRANSFER,1); return true;

ISET Djerba | TriTux

PAGE 52

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

84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 } 103 104 } }

$this->setLastError ( $e->getCode (), $e->getMessage () ); return false; }

/* * Disconnect from the server by executing a logout command * * @return */ bool true (allways)

public function disconnect() { curl_close($this->curl_handle); return true;

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 4 xmlns="http://schemas.xmlsoap.org/wsdl/" 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 10 11 12 13 14 15 16 17 18 </xsd:schema> </types> <message name="BatchProcessRUOperationRequest"> <part name="part1" type="ns:input"/> </message> <message name="BatchProcessRUOperationResponse"> <part name="part1" type="ns:output"/> </message> <portType name="BatchProcessRUPortType"> <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>'CoursUML.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-httpbinding/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 4 5 6 7 8 9 10 11 <head> <link rel="stylesheet" type="text/css" href="main.css" /> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>:: Remplir ce formulaire :: </title> </head> <body> <center> <?php // init client

12 $client = new SoapClient("http://podbridge.intranet.demo/projects/unstable/podbridge/web/index.p hp/wsdl/all"); 13 $key="691292877050480f54b5"; 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 $getStudentById_out = $client>getStudentById($arguments); 29 30 31 32 33 $_POST['mac']!=null ) { 34 35 36 37 if ($getStudentById_out->status->code=='0') $connected=true; if ($_POST['tel']!=null || $_POST['mail']!=null || if (isset ($_POST['submit']) && $_POST['id']!=null ) { try { //Arguements $arguments=array( 'key'=>$key, 'sync'=>'1', 'notify'=>'', 'abort'=>'', 'id'=>$_POST['id'] ) ;

//Arguements $arguments=array( 'key'=>$key,

ISET Djerba | TriTux

PAGE 116

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

38 39 40 41 42 43 44 45 46 47 48 49

'sync'=>'1', 'notify'=>'', 'abort'=>'', 'id'=>$_POST['id'], 'tel'=>$_POST['tel'], 'email'=>$_POST['mail'], 'loginftp'=>'', 'adrmac'=>$_POST['mac'], 'refrecu'=>'', 'process'=>'' ) ;

50 $updateStudentById_out = $client>updateStudentById($arguments); 51 52 53 54 55 56 >status->msg); ?></h3><?php 57 58 59 60 61 62 63 64 65 66 67 68 69 70 } ?> <form id="formulaire" method="post" > <h2> } catch (SoapFault $e) { print $e->getMessage(); } } } if ($updateStudentById_out->status->code=='0') { $updated=true; }else { if ($updateStudentById_out->status->code=='2') ?><h3><?php echo ($updateStudentById_out-

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 77 </h1> <table>

ISET Djerba | TriTux

PAGE 117

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

78 align="left" > 79 echo $_POST['id']; ?>"> 80 81

<tr align="right"><td>Votre identifiant:</td><td <input name="id" maxlength="8" value="<?php

</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; 89 chiffres</td></tr> ?>"></td></tr> <tr align="right"><td id="exemple" colspan="2">8

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 97 98 value="OK"/> 99 100 </table> <center> <input id="bouton" name="submit" type="submit" </center> <br>

101 <div align="left" id="exemple" >Vous serez notifier par mail et SMS, dès que nous traitons votre demande. </div> 102 103 104 105 107 106 </html> </form> </center> </body>

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