DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Fonctions WLangage / Communication / Webservices
  • Fonctionnement
  • Cas particulier : Utilisation d'un WebService intermédiaire
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Permet de déclarer une liste de variables dont la valeur sera persistante entre les appels successifs à un Webservice. Cette fonction indique quelles variables sauver et restaurer lors de chaque appel au webservice. Il est ainsi possible de gérer un contexte dans le webservice.
La gestion des contextes est réalisée sur disque. Pour plus de détails, consultez Générer un Webservice.
La fonction DéclareContexteWebservice est prise en compte uniquement lors de l'exécution de Webservices déployés sur le serveur d'application WEBDEV (Webservice en .AWWS).
Il est conseillé d'utiliser cette fonction dans l'événement "Initialisation" du projet (pour les variables du projet) et / ou dans le code d'initialisation des collections de procédures ou des classes. En règle générale, il faut utiliser cette fonction dans le traitement où sont déclarées et initialisées les variables.
Si votre projet utilise les sessions prélancées, cette fonction ne doit pas être utilisée dans l'événement "Initialisation" du projet. Cette fonction doit être utilisée dans l'événement "Initialisation lors d'une connexion à une session prélancée".
Attention :
  • Cette fonction est destinée aux développeurs maîtrisant WINDEV/WEBDEV.
  • Par défintion, un webservice REST est sans contexte. Cette fonction ne peut donc pas être utilisée dans un webservice REST.
// -- Evénement "Initialisation" du projet 
gnNumProduitEnCours est un entier = 1

// On indique que l'on souhaite sauver la valeur de gnNumProduitEnCours
// à chaque appel du Webservice
DéclareContexteWebservice(gnNumProduitEnCours)

// Lors des prochains appels du Webservice :
// - soit la valeur gnNumProduitEnCours n'est pas récupérée 
// et elle est automatiquement réinitialisée avec "1"
// (par exemple, lors du premier appel par un nouveau client)
// - soit la valeur gnNumProduitEnCours est récupérée et utilisée
// (par exemple, lors d'appels successifs par un même client)
Syntaxe
<Résultat> = DéclareContexteWebservice(<Nom de la variable 1> [, <Nom de la variable 2> [... [, <Nom de la variable N>]]])
<Résultat> : Booléen
  • Vrai si la ou les variables indiquées ont bien été restaurées,
  • Faux dans le cas contraire (lors du premier appel du Webservice par exemple).
<Nom de la variable 1> : Type de la variable
Nom de la première variable à sauver à la fin de l'affichage. La valeur de cette variable sera récupérée lors des appels successifs du Webservice.
<Nom de la variable 2> : Type de la variable
Nom de la seconde variable à sauver à la fin de l'affichage. La valeur de cette variable sera récupérée lors des appels successifs du Webservice.
<Nom de la variable N> : Type de la variable
Nom de la Nième variable à sauver à la fin de l'affichage. La valeur de cette variable sera récupérée lors des appels successifs du Webservice.
Remarques

Fonctionnement

  • Le contexte est toujours sauvé sur le disque et transmis via un entête SOAP.
  • La fonction DéclareContexteWebservice utilise les contextes sur disque. Les valeurs des variables sont toujours restaurées.
  • La taille totale des valeurs des différentes variables n'est pas limitée.
  • La fonction DéclareContexteWebservice peut être utilisée pour des données sensibles (mot de passe de l'utilisateur par exemple).
  • Si deux variables sauvées ont le même nom (par exemple une dans le projet et l'autre dans une page), les deux variables sont mémorisées indépendamment.
  • La fonction DéclareContexteWebservice renvoie Faux si une des variables n'a pas été restaurée.
  • Toutes les variables passées à la fonction DéclareContexteWebservice lors de l'appel d'un Webservice pourront être récupérées lors de l'appel suivant. Les variables passées précédemment sont automatiquement sauvegardées une nouvelle fois.
  • Les variables de type simple (entier, chaîne, ...) sont gérées, ainsi que les variables de type structure, classe, tableau ou tableau associatif.
  • Ne sont pas gérés : les tableaux fixes, les membres globaux de classes, les tableaux associatifs de structures locales et les types avancés du WLangage (comme par exemple les variables de type Connexion).

Cas particulier : Utilisation d'un WebService intermédiaire

Dans certains cas, il peut être nécessaire d'utiliser un Webservice intermédiaire pour utiliser les variables.
Examinons le cas suivant :
  • Un Webservice "WS1" utilise la fonction DéclareContexteWebservice pour une variable globale "globaleChaine". Ce Webservice contient 2 fonctions:
    • "Ecrit(param)" qui affecte le "param" dans "globaleChaine"
    • "Lit()" qui renvoie le contenu de "globaleChaine".
  • Un exécutable client, consommateur de WS1, appelle "WS1.Ecrit("Coucou")", puis "WS1.Lit()" récupère bien la chaîne envoyée.
  • Un Webservice intermédiaire "WS2", consommateur de WS1, contient 2 fonctions :
    • "Ecrit(param)" qui appelle "WS1.Ecrit()".
    • "Lit()" qui appelle "WS1.Lit()".
  • Un exécutable client, consommateur de WS2, appelle "WS2.Ecrit("Coucou")", puis "WS2.Lit()" NE récupère PAS la chaîne envoyée.
Solution : Dans le Webservice WS2, utiliser une fonction "EcritLit()" qui fait "WS1.Ecrit()" et "WS1.Lit()" dans le même traitement.
Composante : wd300awws.dll
Version minimum requise
  • Version 16
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 01/07/2024

Signaler une erreur ou faire une suggestion | Aide en ligne locale