Sage X3 - Eclipse Web Services
Sage X3 - Eclipse Web Services
Support de formation
Web Services
Version 6
SAFE X3 – WEB SERVICES
SOMMAIRE
SOMMAIRE ............................................................................................................................................. 3
1. PRESENTATION ............................................................................................................................ 4
1.1. GENERALITES SUR LES SERVICES WEB ....................................................................................... 4
1.2. LES SERVICES WEB DE SAFE X3................................................................................................. 4
1.3. METHODES DES SERVICES WEB SAFE X3 ................................................................................... 5
2. PRINCIPE DE FONCTIONNEMENT .............................................................................................. 9
2.1. NOTION SUR LES SOLUTIONS SAGE ERP X3................................................................................ 9
2.2. ZOOM SUR LE SERVEUR WEB................................................................................................... 10
2.3. TRAITEMENT D’UNE REQUETE WEB SERVICES ........................................................................... 11
2.4. FONCTIONNEMENT DU POOL DE CONNEXION .............................................................................. 13
3. INSTALLATION ET CONFIGURATION ....................................................................................... 14
3.1. INSTALLATION DU SERVEUR ...................................................................................................... 15
3.2. CONFIGURATION DU SERVEUR .................................................................................................. 15
3.3. LA PAGE TECHNIQUE DU SERVEUR ............................................................................................ 18
4. MISE EN ŒUVRE ......................................................................................................................... 20
4.1. LA MODELISATION DANS X2 ...................................................................................................... 20
4.2. PUBLICATION DES WEB SERVICES ............................................................................................ 25
4.3. GESTION DE LA COHERENCE ..................................................................................................... 30
4.4. LA MISE AU POINT..................................................................................................................... 31
4.5. LES TESTS DE CHARGE ............................................................................................................. 40
4.6. MISE EN ŒUVRE DES WEB SERVICES ........................................................................................ 42
4.7. TRAVAUX PRATIQUES ............................................................................................................... 44
5. INTEGRATION DANS L’APPLICATION CLIENTE ..................................................................... 45
5.1. FLUX XML REÇU ...................................................................................................................... 47
5.2. FLUX XML ENVOYE .................................................................................................................. 48
5.3. APPLICATION CLIENTE EN JAVA................................................................................................ 49
5.4. APPLICATION CLIENTE EN .NET ................................................................................................ 55
1. PRÉSENTATION
• Un service web est une technologie qui permet à une application de s’ouvrir vers
l’extérieur pour proposer des fonctionnalités à d’autres applications, en dialoguant
à distance via Internet. Ceci, indépendamment des plates-formes et des
langages sur lesquelles elles reposent.
Les services web adonix reposent sur des standards définis et non sur un protocole propriétaire.
Ils permettent la communication entre X3 et d’autres applications.
1. Méthodes des Objets : permet d’accéder à X3 via les objets «métier» du progiciel.
2. Méthodes des Sous Programmes : permet l’exécution de programmes développés dans X3.
3. Méthodes des listes : permet la consultation d’informations basées sur le paramétrage des
objets «métier», liste gauche des objets sage X3.
Les méthodes des Objets permettent d’accéder aux objets « métier » du progiciel. Tels que :
9 Commandes de ventes
9 Articles
9 Clients
9 … Tout objet X3 est éligible
− Seuls les objets liés aux cycles de vente sont certifiés par Sage ( commandes, articles,
clients )
− Les méthodes liés aux objets peuvent être appliquées à n’importe quel objet, elles
restent figées même si l’objet évolue ( patch, changement de version … )
9 On transmet à X3 les valeurs de clé ainsi que les champs devant être mis à
jour.
9 X3 effectue la mise à jour nous répond en nous donnant les messages
d’erreurs éventuels. Les tables annexes sont mise à jours. C’est l’équivalent
du bouton enregistrer de la gestion objet.
Les méthodes des Sous Programmes permettent d’exécuter des traitements L4G
9 Demander un prix
9 Obtenir la photo d’un produit
9 Interroger le stock
9 Mettre à jour des réservations client …
9 … Tout sous programme X3 est éligible
Une fois la description du sous programme enregistré dans le dictionnaire X3, celui – ci peut être
déclenché dans X3 par le web service.
Exemple sur une demande de [Link] demande à X3 d’exécuter le sous programme « TARIF »
en transmettant le code de l’article, le code du client.
9 X3 nous répond en nous transmettant tous les paramètres du sous programme
décrits dans le dictionnaire : code de l’article, code du client et enfin le prix.
9 Il ne reste plus qu’a exploiter décoder ce prix dans l’application cliente pour
l’utiliser
Les critères utilisés pour construire le filtre sont cependant limités aux colonnes présentes dans
le paramétrage de la liste gauche.
La liste interrogée est la liste principale de l’objet, les autres tiroirs ne sont pas disponibles.
1.3.5. En résumé
Si l’on désire gérer des enregistrements dans X3, en tenant compte des règles de gestion et des
contrôles applicatifs.
− L’utilisation du service web objet est tout a fait indiqué.
− La contrainte essentielle est bien entendu que l’objet existe dans X3 et que celui-ci
n’ouvre pas de fenêtres complémentaires.
− Aucun développement n’est à priori nécessaire dans X3, seule la conformité de l’objet est
a vérifier dans ce mode d’exploitation.
Si l’on désire consulter des listes en tenant compte des restrictions liées au paramétrage des
habilitations utilisateurs et des rôles
− L’utilisation du service web liste est une des solutions possibles mais, les informations
devant être consultées par l’application tierce doivent être paramétrées préalablement
dans X3 dans une liste gauche.
− Un nouvel objet peut cependant être créé uniquement pour sa liste gauche
Si l’on désire exécuter des tâches particulières n’étant pas disponibles sous la forme d’objet dans
X3
− Le service web sous-programme est le seul permettant de répondre à cette demande.
− La contrainte principale est que le sous programme doit être autonome (pas d’interaction
avec l’utilisateur)
2. PRINCIPE DE FONCTIONNEMENT
Une installation Sage X3 comprend un et un seul dossier mère et n dossiers fils qui héritent des
éléments définis dans les dossiers de niveau supérieur selon les règles de propagation sage X3.
9 Chaque dossier de l’arborescence possède des tables dans la base de données et un
ensemble de répertoires sur disque. Il est possible de localiser les éléments sur disque
sous différentes racines en utilisant le concept d’adxvolume.
9 Pour chaque installation le nom de dossier est discriminant, mais il est possible d’avoir sur
la même machine (ou sur des machines différentes) des installations différentes
comportant des dossiers de même nom que l’on souhaite publier sur le même serveur
Web.
9 Il convient donc de différencier ces éléments en caractérisant chaque « installation ».
9 Une installation prend pour nom une solution Adonix et est caractérisée par un code
alphanumérique défini au niveau de la console.
9 Ce code est stocké dans le fichier de configuration [Link] qui se trouve au dessus
du répertoire racine du dossier mère (classiquement dans le répertoire DOSSIERS sur
une installation Windows)
Windows
Client
LAN
IE Client (Web)
http
Serveur WEB X3
Conteneur de servlets
Servlets
Serveur de cache
Serveur de session
Serveur de connexion Connexion sur X3
Serveur de web service n simultaneous
Tomcat permanent
connexions
Pool de connexion
Sérialisation XML
Dé sérialisation XML
Connexion application
tierce
Java, .NET, JavaScript , PHP etc..
Serveur HTTP
Apache
Internautes
1 1
7
Internet / Intranet
7
Site WEB
22 © 2006/2007 Sage – Midsize And Large Businesses
• Le message SOAP est encapsulé dans une requête HTTP et envoyé au site WEB
4 entrées APP
Dossier APP
Requête 3
Requête 4
Requête 5
3. INSTALLATION ET CONFIGURATION
Version 140 :
Le serveur de web service est une des applications du serveur WEB X3 (servlet), il faut donc
que le serveur WEB X3 soit préalablement installé. Son installation consiste à :
¾ Publication de la solution
Version 5.0 :
¾ Publication de la solution
9 Déclarer le nom de l’Alias de la solution à publier
9 Spécifier le chemin d’installation du serveur HTTP installé sur le serveur
d’application X3
− Dans cette version une supervision a été ajoutée pour tenir compte des architectures
client qui incluent un firewall.
Ou en V5 utiliser l’icône
7 Renseigner les paramètres suivants : Langue : Code langue X3 utilisé pour le démarrage du groupe
Utilisateur Adonix : Code user X3 utilisé pour le démarrage du groupe
Mot de passe Adonix : Mot de passe user X3 utilisé pour le démarrage du groupe
Utilisateur système : Code de l’utilisateur réseau ( compte windows )
Mot de passe système : Mot de passe du user réseau
Taille du groupe : Nombre de connexion simultanée maximum possible
Taille initiale du groupe : Nombre de connexion ouverte dès le démarrage du groupe
Connexion automatique : Démarrage automatique du groupe de connexion
Entrée réservée : Obligation de signer chaque requête
… ou depuis la console
Arret du groupe
Suspension du
groupe de
connexions
Identification du numéro de
processus adonix
4. MISE EN ŒUVRE
Les sous-programmes
Les objets
− Celui-ci permet l’utilisation des services web Objet et Liste
− Ce modèle permet d’être indépendant du mode d’utilisation :
9 Client windows
9 Client Internet explorer
9 Import de données
9 Web Service
N’oubliez pas de cocher la case Web Services pour que le sous programme soit utilisable dans ce
mode
La colonne longueur permet de dimensionner les variables de type caractère, blob et clob,
définissant ainsi une taille de réceptacle pour les blob et clob. Ceci permet à l’application cliente
d’effectuer un contrôle supplémentaire.
Les messages sont transmis dans le flux XML de réponse et sont exploitables dans l’application
cliente.
Les limites
50 variables au maximum pour un sous-programme, mais toutes les variables peuvent être
dimensionnées.
La table de description des sous-programmes est une table système (c’est la même pour tous les
dossiers de la solution).
50 messages maximum.
Les programmes qui sont modélisés ne doivent pas ouvrir de fenêtre pour faire saisir des
informations à l’utilisateur. Il doit être autonome avec les paramètres fournis.
Toutes les instructions liées aux affichages sont à proscrire, en revanche toutes les instructions de
lecture et de mise à jour de la base de données sont bien entendu disponibles.
Les objets X3 sont bien entendu eux aussi stockés dans des dictionnaires dans lesquels on
retrouve :
Le dictionnaire n’est, à priori, pas à compléter. Si l’objet est disponible en client/serveur il l’est
aussi en mode web service. Cependant de légères adaptations peuvent être nécessaire pour
accéder aux écrans de saisie complémentaires ( adresse dans la commande par exemple ).
L’objet est le modèle le plus couramment utilisé dans X3, les fonctions qui n’ont pas été
développées avec ce modèle sont en général encapsulable dans un sous programme à réaliser
en spécifique.
Les zones non transmises au client sont bien entendus disponibles dans la classe [M]
Cela évite de grossir inutilement les flux client/serveur
9 exemple KCNTSRV=«K»+CNTSRV)
− Le dernier champ de type numérique ( C ) et invisible du bloc détail est considéré comme
la variable de contrôle du numéro de ligne dans le tableau et est initialisée en tant que
telle par le programme wrapper lors de l’appel de chaque ligne, exemple : KNOLIG dans
CNTBPC.
Seuls les champs du tableau sont exportés en XML. Les champs invisibles du bloc tableau sont
automatiquement ajoutés.
Le programme de contrôle déverse les lignes du tableau dans le bloc détail ligne par ligne et
effectue les contrôles sur champ définis dans l’écran
Attention :
− Les actions du tableau ne sont pas exécutées
− Il faut en cas d’action MODIFY, et de modification dans ce tableau, charger la zone
précisant le nombre de lignes du tableau (exemple NBCNT dans les contact), faute de
quoi c’est le plus grand numéro de ligne indiqué qui est pris comme dimensionnement du
tableau
− Pris en compte dans la structure XML produite lors de la génération du Web service,
comme des écrans de la fenêtre
− Ouverts par le programme automatique associé à la fenêtre
− Déclarés comme des onglets de la fenêtre lors de l’ouverture de la fenêtre dans
l’instruction Inpbox
− Chargés dans les variables du flux XML de réponse du Web service
− Chargés via une instruction Saizo à partir des informations envoyées par le Web service
lors d’une action de CREATE ou MODIFY
− L’applicatif devra assurer dans le contexte Web service (GWEBSERV=2)
− Le chargement des masques complémentaires (étiquette lien)
− La mise à jour des tables à partir des masques lors de l’écriture
Une évolution a été faite pour illustrer le principe de fonctionnement des écrans complémentaires.
Elle concerne l’objet SOH.
− Récupérer le source SPESOH livré à titre d’exemple et soit le mettre en ligne, soit inclure
son contenu dans le SPESOH existant
− Définir 5 masques complémentaires comme suit dans l’objet SOH
9 ADRBPC ADB1
9 ADRBPC ADB2
9 ADRBPC ADB3
9 ACLOB ACL1
9 ACLOB ACL2
Programme Wrapper
Une fois l’objet ou le sous programme décrit dans le dictionnaire, il faut le publier.
Ce flux sera utilisé ensuite par le serveur web pour décoder les requêtes émanant de l’application
tierce.
Les web service X3 étant génériques, les éléments variables tels que les noms des champs pour
un objet ou les paramètres pour un sous programme, sont passés sous la forme d’un flux XML, la
structure de celui-ci est déterminé par la description donnée dans le dictionnaire.
Les programmes wrapper sont appelés par le serveur de Web services dont le rôle est de sérialiser /
désérialiser le flux soap de / vers les paramètres attendus.
Fonction de publication
Menu « Développement > Dictionnaire Traitements > Traitements > Web Services »
Cette fonction permet de publier des objets avec pour chacun le choix
− de la transaction (si cet objet a des variantes)
− de la publication ou non des champs invisibles (les champs de type technique ne sont
jamais publiés)
Il est à noter que lorsqu’un nom de publication a été donné à un élément (objet ou sous-
programme), ce nom est systématiquement re-proposé lors des générations suivantes. Il n’est pas
possible de publier 2 fois le même couple objet-variante avec deux noms différents, ni de publier
un couple objet-variante avec et sans les champs invisibles.
Les éléments générés sont horodatés et un contrôle est effectué par le serveur de Web services
avant tout appel à un programme wrapper pour s’assurer que la version publiée et utilisée est bien
la plus à jour.
Le fichier XML produit est écrit en codage UTF8, ce fichier XML peut être
demandé par l’application cliente ( méthode GetDescription ) qui peut
l’exploiter, pour générer des écrans par exemple.
L’entête du document est décrite dans le nœud ADXDOC.
Ses propriétés sont les suivantes :
Le nœud GRP décrit soit un bloc écran soit un groupe de paramètres d’un sous programme :
Le nœud FLD décrit soit le champ d’un écran soit un paramètre d’un sous programme :
Les éléments publiés sont nativement multi-langue et la structure XML est stockée dans le
répertoire WEBS du dossier sous X3_PUB/GEN/ALL
La description d’un objet ou d’un sous programme indique que celui-ci peux être utilisé par une
une application tierce, en revanche rien n’oblige à utiliser ce fichier dans l’application cliente.
Si la description XML du Web service appelée n’est pas à jour, elle sera automatiquement
rafraîchie par le serveur de Web services qui récupérera la nouvelle description XML et mettra à
jour ses structures.
Pour forcer l’utilisation de la nouvelle version du programme wrapper une instruction de flush
mémoire adxmpr=adxmpr est provoquée sur les différentes entrées du pool.
Pour qu’un web service bénéficie de la modification d’un programme L4G alors que celui-ci a déjà
été exécuté, il faut republier l’objet.
L’utilisateur X3 web service ne doit pas avoir le serveur batch en démarrage automatique à la
connexion
Lors de la lecture d’une fiche objet, si les champs UPDDAT, UPDTIM et UPDUSR sont
définis dans la table principale de l’objet ces informations sont retournées dans le flux
XML de réponse dans le groupe ADXTEC
− WW_MODSTAMP Horodatage de la dernière mise à jour
− WW_MODUSER Code utilisateur X3 du dernier modifieur
Dans ce cas un message d’erreur sera envoyée donnant le nouveau timestamp, et les modifications
seront refusées avec le message : « Enregistrement modifié depuis la dernière lecture » + timestamp
de la modification + utilisateur ayant modifié (si disponible )
Une fois la modélisation terminée il faut tester pour vérifier si les objets et les sous programmes
publiés sont bien compatibles avec le mode web service.
Des tests sont nécessaires, en fonction des paramétrage propre à chaque dossier, les objets
peuvent réagir de manière différentes (ouverture de fenêtres complémentaires, questions posées
à l’utilisateur … ) .
L’instruction infbox ne bloque pas le web service mais elle ne ne permet pas de renvoyer un
message à l’application cliente
L’utilisation de la syntaxe #@ pour accéder aux postes client n’est pas compatible (elle plante
le web service), attention aux imports silencieux !
L’envoi de mail : l’instruction Send ne fonctionne pas, il faut utiliser le [Link] pour faire un
workflow serveur.
Programme Wrapper
La génération du programme wrapper est une des étapes de la génération du Web service. A
l’intérieur du programme wrapper on trouve un programme de test qui permet de valider le
fonctionnement de l’objet ou du sous-programme en mode Web service, en simulant une
exécution, sans avoir à tester depuis l’application tierce.
Lors de l’appel d’un Web service, le serveur de Web service transmet au programme wrapper
l’horodatage de sa structure locale. Le serveur X3 vérifie si cet horodatage est conforme à celui
stocké sur le serveur. Si oui il répond à la requête, si non il renvoie une erreur et le serveur de
Web service envoie une requête technique pour récupérer la dernière version.
Subprog TEST_LISTE(NBLISTE)
Value Integer NBLISTE
Call OUVRE_TRACE("") From LECFIC
Gosub DEFLISTE From WJSOHSTD
WW_ACTION="LIST“ # Action liste gauche
WW_IDENT="~DIS001~~~~~~“ # Critère:commande du client
DIS001
Gosub WEBLISTE From WJSOHSTD # Déclenchement de la liste
Gosub ANALRESOBJ From WJSOHSTD # Analyse du résultat
For indice=1 To WW_NB
If indice=1
Call ECR_TRACE(mess(223,123,1),0) From GESECRAN
Call ECR_TRACE("----------",0) From GESECRAN
Endif
Call ECR_TRACE(num$(indice)+":"
& -WW_SEL1(indice)
& -WW_SEL2(indice)
& -WW_SEL3(indice)
& -WW_SEL4(indice)
& -WW_SEL5(indice)
& -WW_SEL6(indice)
& -WW_SEL7(indice),0) From GESECRAN # Affichage de la liste
Next indice
Call ECR_TRACE("-----------------",0) From GESECRAN
Call FERME_TRACE From LECFIC
Call LEC_TRACE From LECFIC
End
74 © 2006/2007 Sage – Midsize And Large Businesses
Subprog TEST
Local Char TEXTE(20)
Local Integer I , J , K
Call OUVRE_TRACE("") From LECFIC
Gosub DEFVAR From WJSOHSTD : # Appel programme wrapper
WW_ACTION = "READ" : # READ, CREATE, MODIFY, DELETE
WW_IDENT = "NOR1204TOU00001" : # Clé de l'objet
Val1~Val2
Gosub WEBSERV From WJSOHSTD : # Simulation web service
Gosub ANALRESOBJ From WJSOHSTD : # Affichage du statut
Gosub DETAILRES From WJSOHSTD : # Affichage des champs
Call FERME_TRACE From LECFIC
Call LEC_TRACE From LECFIC
End
Trace du résultat
###########
## Test de création
###########
Call TEST
End
Subprog TEST
Local Char TEXTE(20)
Local Integer I , J , K
Call OUVRE_TRACE("") From LECFIC
Gosub DEFVAR From WJSOHSTD
WW_ACTION = "READ" :# On commence par lire
WW_IDENT = "NOR1204TOU00001" : # Clé de l'objet
Val1~Val2
Gosub WEBSERV From WJSOHSTD : # Simulation lecture
WW_ACTION = "CREATE" : # Maintenant on crée
Gosub WEBSERV From WJSOHSTD : # Création
Gosub ANALRESOBJ From WJSOHSTD : # Analyse du résultat
Gosub DETAILRES From WJSOHSTD : # Affichage des champs
Call FERME_TRACE From LECFIC
Call LEC_TRACE From LECFIC
End
Ceci permet à l’intérieur même du programme à publier de prévoir des séquences de test (elles
ne seront appelées que par le programme de test intégré avec le wrapper) afin :
Mémorisation du contexte
79 © 2006/2007 Sage – Midsize And Large Businesses
Le testeur java est un outil de validation technologique muni d’une interface de contrôle et de
saisie, il permet de s’affranchir dans un premier temps de la problématique de constitution des flux
XML.
Il est fourni à titre d’exemple et ne fait pas parti des livrables de la solution Sage X3
Cet outil,
Implémente les trois web service (Objet / liste / s/s programme)
Affiche les traces d’exécution
Affiche les flux XML de la réponse
Donne les temps d’exécution
Construit les flux XML automatiquement
Implémente un outil de test de charge
Il utilise le fichier [Link] contenant les paramètres de base pour accéder aux WEB services X3
Afficher la trace
L’interface permet
d’invoquer les autres web
services
84 © 2006/2007 Sage – Midsize And Large Businesses
Une fois le debugger lancé il faut invoquer un web service en précisant dans la chaine de
connexion : Le nom du serveur du debugger
Le debuggeur s’arrête dans le traitement AWEB puis sur chacun des dbgaff
ajoutés
86 dans
© 2006/2007 Sage – le code.
Midsize And Large Businesses
Il faut savoir qu’une création d ’enregistrements par le biais du web service objet est moins
rapide qu’un import.
Les tests de charge permettent aussi de déterminer le nombre de licence nécessaire pour avoir
des temps de réponse acceptable.
Ils permettent d’avoir une idée de la charge CPU et de la consommation mémoire sur le
serveur web et sur le serveur X3. Le parsing des fichiers XML est consommateur de ressources.
Les tests de charge peuvent être réalisés par le testeur JAVA qui permet de simuler une activité
utilisateur en fonction d’un scénario donné et pour nombre simultané d’utilisateur paramétré.
Process : Numéro de l'utilisateur rowInDistribStack : Rang d’empilage dans la file d’attente à l’arrivée de la requête
N° : Numéro de la requête pour un utilisateur nbDistributionCycle : Nombre de test effectué avant de trouver une connexion
disponible
Info : Indique l'objet du web service
poolEntryIdx : N° de l’entrée dans le pool de connexion
Error : Si = 1 une erreur s'est produite
T0 : Time stamp de la demande poolDistribDuration : Temps de recherche d’une connexion libre
T1-T0 : Temps d'attende poolWaitDuration : Temps d’attente de la requête avant d’être en tête de la liste d’attente
89 poolRequestDuration : Temps total de la demande de traitement
© 2006/2007 Sage – Midsize And Large Businesses
4.6.1. Résumé
9 Standards based, pure Java, implementation of HTTP versions 1.0 and 1.1
9 Full implementation of all HTTP methods (GET, POST, PUT, DELETE,
HEAD, OPTIONS, and TRACE) in an extensible OO framework.
9 Supports encryption with HTTPS (HTTP over SSL) protocol.
9 Transparent connections through HTTP proxies.
9 Tunneled HTTPS connections through HTTP proxies, via the CONNECT
method.
L’objectif est d’invoquer les web service X3 depuis une application tierce.
Le standard web service comporte une norme qui décrit le service WEB, il se présente sous la
forme d’un fichier XML. Ce fichier (*.wsdl) décrit les méthodes et les propriétés fournies par le
service.
Mais dans le contexte où l’application serveur est un ERP qui n’est pas figé dans sa structure il
n’est pas possible de fournir un service web immuable.
Pour ne pas avoir à modifier les applications clientes parce qu’on a ajouté un champ dans un
écran, nous proposons des services web génériques où seules les méthodes sont fixes.
La partie variante est constituée des paramètres à transmettre à ces méthodes. Ceux – ci sont
transmis via un flux XML qui est a coder et à décoder dans les applications clientes.
De nombreuses librairies sont disponibles dans différents langages pour effectuer ce travail
<RESULT>
</RESULT>
<GRP ID="ITM0_1">
</GRP>
<PARAM>
</PARAM>
Le flux à transmettre est identique au flux reçu, mais il peut être plus souple :
− Si le champ peut être identifié sans ambiguïté, il n’a pas besoin d’être dans un nœud
groupe
− Les types de données ne sont pas à préciser
− Les intitulés des menus locaux sont inutiles
− Seuls les champs modifiés sont à transmettre
− Indiquer le nombre de lignes des tableaux est facultatif
− Indiquer pour chaque ligne d’un tableau son numéro est facultatif
Ce fichier donne des informations sur les méthodes proposées par le service web ainsi qu’une
description des paramètres à passer pour les utiliser
Sur le serveur WEB vous trouverez 3 fichiers WSDL aux URL suivantes :
− Version 14W20 :
9 [Link]
9 [Link]
9 [Link]
− A partir de la version 14W31
9 [Link]
Dans une application cliente java ou .NET ces fichiers peuvent être directement utilisés pour
générer le code java permettant l’appel aux web services respectifs
L’objectif est de constituer un flux SOAP qui soit conforme à ce que le serveur web attend, c’est à
dire conforme à la description donnée dans le fichier wsdl. Les étapes pour y parvenir sont les
suivantes :
1. Chaque méthode appelée doit contenir un contexte d’appel, c’est l’un des paramètres de
la méthode, il contient les informations suivantes :
9 Code langue X3
9 Code utilisateur X3
9 Mot de passe X3
9 Pool de connexion : il s’agit de l’alias donné dans la console
9 Serveur web : nom et port (80 ou 1898 par défaut) du serveur web X3
9 Chaine de configuration : indique les différents niveaux de trace pour la mise au
point
3. Une fois la méthode exécutée, celle – ci retourne des paramètres, ceux – ci sont
regroupés en un seul.
9 Ce paramètre est à décoder, il est présenté sous la forme d’un flux XML qu’il
faudra parser pour récupérer les informations
La requête de configuration
Il s’agit d’une chaîne de caractères qui fait partie du header à transmettre dans le flux SOAP,
chaque paramètre est séparé par «&»
− Le CAdxCallContext est une des classes générées, elle stocke le contexte d’appel
Les classes Cadx… sont les classes générées (soit téléchargées sur le serveur
web, soit générées depuis le WSDL )
Décodage du résultat
Lors du retour du web service le résultat est stocké dans une classe CadxResultXml qui
permet de :
− Récupérer le flux de la réponse ( c’est ici que x3 à mis le stock de notre article )
String Result = [Link]();
− Récupérer une structure avec les temps et les traces ( très utile lors du débugage )
CadxTechicalInfo = [Link]();
Préparation de l’environnement
Tout comme java il y a une étape d’intégration de fichier WSDL, appelé référence web en
environnement dot NET.
Les soucis d’interopérabilité entre le serveur axis et le client dot NET nous imposaient en 14W25,
l’utilisation d’une dll qui contenait déjà les classes stubs packagées pour être directement
utilisable dans un projet dot NET.
Depuis la version 14W31 il est possible d’intégrer dans un projet visual studio le fichier WSDL.
Lors de son intégration les classes se génèrent automatiquement et sont directement utilisables.
Ajout du WSDL :
/* Classe de base */
using System;
/* Classe des web service X3 */
using [Link]; // Le nom dépend du nom de la référence web
7. Récupération de la trace
[Link]("trace="+[Link]);
La configuration du serveur web service dans un système Sage X3 inclut l'installation préalable du serveur WEB X3 car celui-ci fait partie intégrante des applications serveur. Le paramètre serveur d’édition, notamment le paramètre superviseur SERIMP, doit être renseigné pour assurer un bon fonctionnement. Les programmes wrappers doivent être configurés et publiés correctement, en tenant compte des paramètres d'entête, des messages et des flux de données .
La publication d'un objet ou d'un sous-programme crée un flux XML décrivant l'élément, utilisé pour décoder les requêtes des applications tierces. Elle génère également un programme wrapper qui gère les paramètres d'entête et le flux de données. Cette publication assure que chaque élément est horodaté et surveillé par le serveur de Web services, garantissant que la version utilisée est la plus à jour, ce qui maintient l'intégrité des web services .
Le processus de traitement d'une requête web service dans un système Sage X3 commence par la demande d'une page par un internaute. Le site web, intégrant un service WEB X3, fait une invocation par une requête HTTP contenant un message SOAP dirigée vers le serveur WEB X3. Celui-ci décode le message et le transmet au serveur X3, qui exécute le traitement et retourne le résultat au serveur WEB. Celui-ci encode la réponse en un message SOAP dans une requête HTTP qu'il renvoie au site web, lequel met à jour la page pour l'internaute .
Les programmes wrappers dans l'architecture Sage X3 fonctionnent comme une interface entre le développement X3 et le serveur de Web services. Ils gèrent les paramètres d'entête, les messages, et le flux montant et descendant de données. Ils sont appelés par le serveur de Web services pour sérialiser et désérialiser le flux SOAP vers et depuis les paramètres attendus. Ce processus comprend la publication dans le dictionnaire, générant un programme qui sert à valider le fonctionnement des objets ou sous-programmes en mode Web service .
Le pool de connexion dans un environnement Sage X3 démarre généralement avec le serveur web, ou sur demande explicite, et gère les requêtes simultanées en distribuant les requêtes selon les connexions disponibles. S'il n'y a pas de connexion disponible, le pool empile les requêtes, qui sont ensuite dépilées au fur et à mesure de la disponibilité des connexions de manière FIFO (First In, First Out). Le nombre de connexions utilisées dépend du paramétrage du serveur de web service et du nombre total de licences disponibles sur le serveur X3 .
Les tests de charge dans l’environnement Sage X3 permettent de mesurer la performance globale du système en termes de temps de réponse et de consommation de ressources telles que la CPU et la mémoire. Ils identifient le besoin de licences web service pour des temps de réponse acceptables. Cependant, les tests peuvent également révéler que la création d'enregistrements via des web services est moins rapide qu'un import, ce qui constitue une limitation à corriger pour une meilleure performance .
Pour mettre en place un testeur Java de web services dans Safe X3, il faut d'abord télécharger et lancer le débogueur Java depuis le serveur web. Ensuite, il est nécessaire d'invoquer un web service en précisant le nom du serveur du débogueur et le numéro de port. Pendant les tests, il est possible d'afficher la trace des serveurs, les flux XML, et de sauvegarder ces informations pour analyser la performance des services testés .
La gestion des licences Web Service est essentielle dans l'architecture Sage X3 car elle détermine le nombre maximum de connexions simultanées pouvant être soutenues par le système, influant directement sur les performances. Lors des requêtes, le pool de connexion déploie les requêtes selon la disponibilité des connexions, utilisant le nombre maximum permis par les licences disponibles pour répondre efficacement .
Le fichier de configuration solution.xml dans un système Sage X3 contient un code alphanumérique qui est défini au niveau de la console. Il est typiquement stocké au-dessus du répertoire racine du dossier mère, classiquement dans le répertoire DOSSIERS sur une installation Windows, et joue un rôle critique dans la configuration et le bon fonctionnement du système .
Le fichier XML généré par la fonction de publication est crucial car il sert à orchestrer les transactions entre le serveur web et le service X3 via des messages SOAP. Il contient des informations telles que l'entête du fichier, le nom de publication de l'objet, l'utilisateur ayant déclenché la génération, et la version utilisée, assurant la traçabilité et le bon suivi des traitements réalisés .