Le serveur XTEND n'accède pas directement à la base de données X3 via un connecteur de base de données (type JDBC) mais au travers d'appel de web services spécialisés de type 'Accès' (pour 'accès aux données').
Ces web services de type 'Accès' fonctionnent comme l'appel de requêtes SQL, c'est à dire qu'ils disposent de paramètres en entrée permettant de passer les critères de sélection et de paramètres en sortie pour renvoyer le résultat de la requête.
Ces web services résultent donc de la publication de sous-programmes L4G qui présentent tous les même interfaces (ou paramètres). Les traitements L4G qui leurs sont associés effectuent les opérations suivantes:
Les web services de type 'Accès' permettent d'accéder en lecture à toutes les tables et vues X3.
Il est possible de personnaliser les traitements L4G pour ajouter qu'ils renvoient des données calculées comme stock ou le prix d'un article.
La mise en oeuvre des web services 'Accès généré table' et 'Accès généré vue' est entièrement automatisée via la fonction XTEND Interface.
L'écriture du traitement L4G et la publication du sous-programme sont générés après que le développeur ait choisi la table ou la vue X3 à laquelle il veut accéder et sélectionné les champs qu'il souhaite lire.
Un sous-programme 'Accès' doit toujours vérifier l'interface suivante :
Subprog ACCTAB( AXPARCOD,AXPARVAL,AXWHRLFTBRK,AXWHRCOD,AXWHROPE,
AXWHRCODVAL,AXWHRRGTBRK,AXWHRANDOR,AXORDCOD,AXORDTYP,
FIELD1,FIELD2,FIELD2...
)
#Paramètres de la requête SQL
Value Char AXPARCOD()(1..20)
Variable Char AXPARVAL()(1..20)
Value Integer AXWHRLFTBRK(1..14)
Value Char AXWHRCOD()(1..14)
Value Integer AXWHROPE(1..14)
Value Char AXWHRCODVAL()(1..14)
Value Integer AXWHRRGTBRK(1..14)
Value Integer AXWHRANDOR(1..14)
Value Char AXORDCOD()(1..10)
Value Integer AXORDTYP(1..10)
# Données renvoyés
Variable Char FIELD1()(1..)
Variable Char FIELD2()(1..)
Variable ClbFile FIELD3()(1..)
...
$LOADLINE
#Cette étiquette est appelée pour chaque enregistrement et afin de valoriser les paramètres en retour
#Elle est utilisée en personnalisation pour ajouter des champs spécifiques (calculés)
FIELD1(WROWPOS) = [F]FIELD1
FIELD2(WROWPOS) = [F]FIELD2
FIELD3(WROWPOS) = [F]FIELD3
Return
La fiche sous-programme décrit les paramètres du sous-programme, leur dimension et leur attribue des groupes de publication.
Les groupes de publication pour les paramètres et le résultat sont fixés :
Paramètre | Groupe | Description |
AXPARCOD | AX_PAR | Code variable contexte X3 |
AXPARVAL | AX_PAR | Valeur variable contexte X3 |
AXWHRLFTBRK | AX_WHR | Niveau de parenthèse ouvrante |
AXWHRCOD | AX_WHR | Nom du critère de sélection |
AXWHROPE | AX_WHR | Opérateur de comparaison |
AXWHRCODVAL | AX_WHR | Valeur du critère de sélection |
AXWHRRGTBRK | AX_WHR | Niveau de parenthèse fermante |
AXWHRANDOR | AX_WHR | Opérateur logique d'enchainement |
AXORDCOD | AX_ORD | Nom du critère de tri |
AXORDTYP | AX_ORD | Valeur du critère de tri |
FIELD1 | RES | Champs des enregistrements retournés par le web service |
FIELD2 | RES | Champs des enregistrements retournés par le web service |
FIELD3 | RES | Champs des enregistrements retournés par le web service |
Cette interface permet de voir le web service liste gauche d'un objet X3 comme un fournisseur de données XTEND.
Dans ce cas les critères de sélection à renseigner sont ceux utilisés pour les listes gauches.
La personnalisation des interfaces de type 'Accès' est nécessaire dès lors que l'on souhaite renvoyer des données calculées comme par exemple le prix et la disponibilité d'un article.
La méthode pour réaliser ce type de web service est la suivante :
Interface qui pointe sur la table/vue de votre choix .
Les étapes suivantes sont faites automatiquement :
1. Génération traitement et sous-programme
2. Génération du web service + publication
1. Dupliquer le traitement et le sous-programme générés et les renommer à votre convenance
2. Ajouter les paramètres à calculer
3. Valoriser les paramètres dans l'étiquette $LOADLINE
!!Respecter les noms des groupes de publication