3.4.2.3 Transfert FTP
Une fois le document XML transformé, il doit être
détecté puis transmis à un serveur FTP distant : AIX6
(10.1.101.113 port 21).
Illustration 138 :
Représentation graphique du transfert du fichier XML par FTP,
réalisé sous Netbeans
Pour construire ce transfert, il faut s'appuyer cette fois sur
deux WSDL. Le premier permet d'attendre l'arrivée de certains fichiers
dans un répertoire particulier (à l'image du service To_grc
précédent) et le second permet d'enchaîner directement sur
le transfert FTP vers AIX6. Les paramètres nécessaires à
ces deux opérations sont spécifiés dans les WDSL
(l'adresse du port d'écoute, le nom des fichiers attendus pour le
premier WSDL, l'adresse du port FTP, le répertoire cible, le nom du
fichier cible pour le second WSDL). Les composants sont, cette fois, au nombre
de trois : un composant de type File pour le polling, un autre de type FTP
pour le transfert et un troisième, central, pour orchestrer les deux
autres.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
.../...
xmlns:ns2="http://j2ee.netbeans.org/wsdl/SendInventory/ftpTransfer"
xmlns:ns3="http://j2ee.netbeans.org/wsdl/SendInventory/fileTrigger"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0"
xsi:schemaLocation="http://java.sun.com/xml/ns/jbi ./jbi.xsd">
<service-assembly>
<identification>
<name>PUT_GRC</name>
<description>Represents the Service Assembly of
PUT_GRC</description>
</identification>
<service-unit>
<identification>
<name>PUT_GRC-PUT_GRC</name>
<description>Represents this Service
Unit</description>
</identification>
<target>
<artifacts-zip>PUT_GRC.jar</artifacts-zip>
<component-name>sun-bpel-engine</component-name>
</target>
</service-unit>
<service-unit>
<identification>
<name>PUT_GRC-sun-file-binding</name>
<description>Represents this Service
Unit</description>
</identification>
<target>
<artifacts-zip>sun-file-binding.jar</artifacts-zip>
<component-name>sun-file-binding</component-name>
</target>
</service-unit>
<service-unit>
<identification>
<name>PUT_GRC-sun-ftp-binding</name>
<description>Represents this Service
Unit</description>
</identification>
<target>
<artifacts-zip>sun-ftp-binding.jar</artifacts-zip>
<component-name>sun-ftp-binding</component-name>
</target>
</service-unit>
<connections>
<connection>
<consumer
endpoint-name="OutboundOneWayMessagingPortTypeRole_partnerRole"
service-name="ns1:PartnerLink2"/>
<provider
endpoint-name="OutboundOneWayMessagingPort"
service-name="ns2:OutboundOneWayMessagingService"/>
</connection>
<connection>
<consumer
endpoint-name="fileTrigger_InboundPort"
service-name="ns3:FileInboundService"/>
<provider
endpoint-name="FileInboundPortTypeRole_myRole"
service-name="ns1:PartnerLink1"/>
</connection>
</connections>
</service-assembly>
</jbi>
Illustration 139 :
Assemblage du transfert FTP pour la JBI (Jbi.xml)
L'orchestrateur central permet de définir les
règles d'exécution des deux actions (polling et transfert). BPEL
est le langage communément utilisé pour réaliser cette
orchestration. Il est un dérivé de XML et est devenu depuis sa
version 2, une spécification du consortium OASIS en mars 2007. Le choix
d'un ESB doit également se faire de façon à ce que BPEL
soit supporté dans sa version 2.0. Cette version est bien celle de la
plate-forme de réalisation choisie.
Illustration 140 :
Représentation graphique de l'orchestration, réalisée sous
Netbeans
BPEL définit ainsi le processus, c'est à dire la
logique d'enchaînement des actions (ici : attente et transfert de
fichiers XML vers un serveur FTP). Sa construction est balisée à
l'image d'un fichier XML :
q La balise <Process> constitue la racine du fichier
BPEL. L'attribut « name » permet de nommer le processus,
q La balise <Import> permet d'importer les fichiers
WSDL (un WSDL pour détecter les nouveaux fichiers, et un autre pour le
transfert FTP),
q La balise <PartnerLinks> sert à lier le
rôle de chaque WSDL au BPEL,
q La balise <Variables> définit les variables
utiles au BPEL,
q La balise <Sequences> liste des actions du processus,
elles-mêmes balisées :
<Receive> pour réceptionner le signal du
Partenaire détectant un nouveau fichier,
<Assign> pour véhiculer le message,
<Invoke> pour appeler un Web Service.
Illustration 141 : Actions
du processus BPEL (extrait du PUT_GRC.bpel)
Le BPEL PUT_GRC s'appuie sur deux services unitaires. Le
premier service est dédié à la technologie de
communication (File) correspondant un document XML généré
dans un répertoire en attente de transfert. Le second service est le
service FTP faisant appel à une méthode PUT afin de pousser le
fichier détecté dans le répertoire, vers un autre
répertoire sur le serveur FTP. A cet instant, il est important de
s'assurer que le composant interne FTP de l'ESB retenu, offre les
possibilités de sécurisation SSL (RFC 2228) et non la simple
spécification RFC 959 sans cryptage. Cette condition est bien
vérifiée par rapport à la plate-forme de
réalisation.
|