Action utilisateur
Introduction
Une action utilisateur XTEND se traduit soit par une action effectuée directement par le serveur XTEND, soit par l'appel d'un web service X3 qui peut être soit un sous-programme soit une action associée à un objet X3.
L'action utilise les web services X3 lorsqu'elle est associée à une interface.
Une action Web attend des paramètres en entrée, effectue un traitement et valorise un certain nombre de paramètres en retour comme l'appel d'un sous-programme en L4G.
Dans le cas d'une application XTEND, les paramètres en entrée sont généralement saisis par l'utilisateur dans un formulaire HTML et les valeurs renvoyées par le sous-programmes sont stockées en mémoire dans la session utilisateur (mapping) dans le but d'être affichées dans une page HTML ou utilisées comme paramètres d'autres actions.
Ce document indique la méthode à suivre pour créer de nouvelles actions utilisateurs.
Programmation et test dans X3
La première étape consiste à programmer et TESTER en mode client X3 le traitement L4G ou l'objet X3 qui sera appelé par l'action XTEND.
Cas des objets X3
Avant d'utiliser un objet X3 dans une application XTEND il est nécessaire de s'assurer que cet objet X3 peut être utilisé au travers des web service.
En particulier il faut s'assurer que le traitement des actions ne nécessite pas la présence d'un utilisateur (humain) devant un écran pour répondre aux éventuels questions ou messages renvoyés par le serveur X3.
Messages utilisateurs
Le traitement AWEB contient des sous-programmes utilitaires pour la gestion des messages utilisateurs.
Envoie de message d'information, de warning ou d'erreur :
- Subprog ADDMESSINF(MESSAGE)
- Subprog ADDMESSWARN(MESSAGE)
- Subprog ADDMESSERR(MESSAGE)
En mode test
- Subprog INITABMES
- Subprog VISUALLMES
Une action utilisateur est considérée comme validée si l'appel du web service n'a renvoyé aucun message d'erreur.
Les messages d'erreur sont postés en L4G via le sous programme ADDMESSERR (Call ADDMESSERR("Message") From AWEB)
L'affichage des messages X3 est effectué via le token AXUSERMSG.
Ex : <span id="userMsg" class="userMsg" adx="aMsgUser"></span>
Cas des sous-programmes
Il est important de bien noter que l'appel d'un traitement X3 via un web service est 'sans état' (stateless) c'est à dire que le contexte de la session X3 (globales) utilisée pour traiter un web service n'est valide que pendant le traitement du service. Ce contexte est perdu après exécution du traitement. Il est réinitialisé à chaque appel.
Toutes les données contextuelles doivent être transportées dans les paramètres d'appel du web service.
Lors de l'appel d'un web service de type sous-programme le serveur XTEND ajoute les paramètres contextuels à l'appel de ce sous programme en valorisant les paramètres AXPARCOD et AXPARVAL du groupe de publication AX_PAR si le groupe AX_PAR a été défini lors de la publication du sous-programme.
Les paramètres dont contextuels par défaut sont les suivants:
Code |
Description |
SITCOD |
Code du site XTEND |
USRCOD |
Code utilisateur XTEND si l'utilisateur est identifié |
USRPRF |
Code profile utilisateur XTEND si l'utilisateur est identifié |
USRLANG |
Code langue XTEND (langue du site) |
Publication et test des web services
Cette étape permet de s'assurer que les web services sont bien disponibles et qu'il fonctionnent correctement.
Voir la page web services.
Création d'une action
-1- Paramétrage de l'interface
Créer une fiche interface via la fonction Développement/Safe X3 WAS/Lien SAFE X3/Interface.
-2- Création des champs
L'appel d'un web service de type Action renvoie des données qui sont soit des paramètres d'un sous-programme soit des champs d'un objet X3.
Tous les champs utilisés pour l'affichage ou le passage de paramètres de type web ou XTEND doivent être déclarés dans le dictionnaire des champs.
Après avoir créé l'interface il est recommandé de créer tous les champ renvoyés par le web service via le menu 'Outils/Création token champ' de la fiche interface.
-3- Création des entités
Les paramètres en sortie, renvoyés par le web services sont regroupés par groupes de publication.
Cette étape consiste à créer une entité XTEND par groupe de publication.
Pour créer les entités utiliser la fonction utilitaire création des entités accessible via le menu 'Outils\Aide au remplissage' de la fiche entité.
-4- Création de l'action web
Cette étape consiste à créer l'action web pour définir le mapping entre les paramètres du web service et les entités XTEND.
Le mapping concerne:
- Les paramètres (en entrée) qu'il faut valoriser lors de l'appel du web service
- Les paramètres (en sortie) renvoyé par le web service, qu'il faut conserver en mémoire et à partir desquels seront créés les entités XTEND de type session
-5- Création du lien dynamique
Cette étape consiste à créer le token lien dynamique qui sera inséré dans la page html soit dans une bouton soit dans un ancre pour permettre à l'utilisateur de déclencher l'action via un clique souris.
Le lien dynamique permet aussi d'indiquer comment seront valorisés les paramètres d'appel de l'action web soit à partir de données saisies par l'utilisateur (champs web) soit à partir de données stockée en mémoire (champs XTEND).
Action de login
Principe du login XTEND
XTEND prend en compte 2 types d'utilisateurs qui sont:
- les utilisateurs anonymes
- les utilisateurs identifiés
L'utilisateur s'identifie auprès du serveur XTEND via la page de login en fournissant un code utilisateur et un mot de passe.
L'action de login XTEND appelle un sous-programme L4G (web service) chargé de vérifier l'existence de l'utilisateur et la validité du mot de passe. Une erreur est postée (ADDMESSERR) pour invalider le login.
Une page XTEND 'protégée' sera visible uniquement par les utilisateurs identifiés.
On peut aussi protéger l'accès aux pages XTEND en fonction du profil XTEND dont le code est renvoyé par le programme de login (optionnel).
Voir login du site ASAMPLE.
Interface du sous-programme L4G de login
XTEND peut appeler tout sous-programme L4G dont les 12 premiers paramètres sont les suivants:
Subprog ACTION (AXPARCOD, AXPARVAL, AXUSERCODE, AXPWD, AXUSERPROF, AX3SOL,
AX3FLDR, AX3LANG, AX3USER, AX3PWD, AXLOGCOD ,AXLOGVAL ...)
Variable Char AXPARCOD()()
Variable Char AXPARVAL()()
Variable Char AXUSERCODE()
Value Char AXPWD()
Variable Char AXUSERPROF()
Variable Char AX3SOL()()
Variable Char AX3FLDR()()
Variable Char AX3LANG()()
Variable Char AX3USER()()
Variable Char AX3PWD()()
Variable Char AXLOGCOD()()
Variable Char AXLOGVAL()()
...
Paramètre |
Type |
Description |
AXPARCOD |
Valorisé par le moteur XTEND |
Paramètres contextuels clé/valeur valorisés par le serveur XTEND au moment de l'appel du sous-programme. |
AXUSERCODE |
Saisi par l'utlisateur |
Code utilisateur XTEND saisi par l'utilisateur |
AXPWD |
Saisi par l'utlisateur |
Mot de passe saisi par l'utilisateur |
AXUSERPROF |
Renvoyé par X3 |
Code profil XTEND utilisé pour gérer l'accès aux pages |
AX3SOL |
Renvoyé par X3 |
Code solution X3 |
AX3FLDR |
Renvoyé par X3 |
Code dossier X3 |
AX3LANG |
Renvoyé par X3 |
Code langue X3 pour le login à AX3SOL/AX3FLDR |
AX3USER |
Renvoyé par X3 |
Code utilisateur X3 pour le login à AX3SOL/AX3FLDR |
AX3PWD |
Renvoyé par X3 |
Mot de passe X3 pour le login à AX3SOL/AX3FLDR |
AXLOGCOD |
Renvoyé par X3 |
Informations complémentaires sur l'utilisateur, de type clé/valeur, qui seront stockées dans la session XTEND (bloc ASESSION). |
.... |
|
Le sous programme de login peut renvoyer d'autres informations qui pourront être 'mappées' sur des entités XTEND |
Fiche sous-programme
Fiche de description du sous-programme de login.
Les noms des groupes de publication des paramètres AX* doivent être respectés.
Code |
Type |
Dim |
Type d'argument |
Groupe de publication |
AXPARCOD |
Char |
20 |
Par adresse |
AX_PAR |
AXPARVAL |
Char |
20 |
Par adresse |
AX_PAR |
AXUSERCODE |
Char |
1 |
Par valeur |
AXLOG_PAR |
AXPWD |
Char |
1 |
Par valeur |
AXLOG_PAR |
AXUSERPROF |
Char |
1 |
Par adresse |
AXLOG_PAR |
AX3SOL |
Char |
10 |
Par adresse |
AXLOG_X3 |
AX3FLDR |
Char |
10 |
Par adresse |
AXLOG_X3 |
AX3LANG |
Char |
10 |
Par adresse |
AXLOG_X3 |
AX3USER |
Char |
10 |
Par adresse |
AXLOG_X3 |
AX3PWD |
Char |
10 |
Par adresse |
AXLOG_X3 |
AXLOGCOD |
Char |
50 |
Par adresse |
AXLOG_RES |
AXLOGVAL |
Char |
50 |
Par adresse |
AXLOG_RES |
Les paramètres suivants sont donnés à titre d'exemple et gérés par le développeur XTEND.
Une liste d'adresses de livraison et une liste d'adresses de facturation (10 lignes max) qui eront 'mappées' sur les entités SHIPADDR et INVADDR
SHIPADDR |
Char |
10 |
Par adresse |
SHIPADDR |
SHIPCITY |
Char |
10 |
Par adresse |
SHIPADDR |
SHIPZIP |
Char |
10 |
Par adresse |
SHIPADDR |
INVADDR |
Car |
10 |
Par adresse |
SHIPADDR |
INVCITY |
Char |
10 |
Par adresse |
SHIPADDR |
INVZIP |
Char |
10 |
Par adresse |
SHIPADDR |