L'accès aux données
Principe
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:
- construction de la requête SQL
- exécution de la requête SQL
- valorisation des paramètres en retour
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.
Interface 'Accès généré'
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.
Interface sous-programme 'Accès'
Traitement L4G
Un sous-programme 'Accès' doit toujours vérifier l'interface suivante :
- 10 paramètres en entrée dont les noms sont fixés (AX*) et qui contiennent les critères de la requête SQL
- autant de paramètres en sorties qui contiennent les enregistrements résultat de l'exécution de la requête
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
Fiche sous-programme
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 |
Interface 'Accès liste gauche'
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.
Ajouter des champs calculés ('Accès sous-programme')
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.
Création
La méthode pour réaliser ce type de web service est la suivante :
1. Créer une interface de type {'Accès généré table/vue'}
Interface qui pointe sur la table/vue de votre choix .
2. Générer l'accès
Les étapes suivantes sont faites automatiquement :
1. Génération traitement et sous-programme
2. Génération du web service + publication
3. Dupliquer l'interface en une interface de type 'Accès sous-programme'
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
4. Générer l'accès de cette nouvelle interface
!!Respecter les noms des groupes de publication