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