4D v16

Attribut Exécuter sur serveur

Accueil

 
4D v16
Attribut Exécuter sur serveur

Attribut Exécuter sur serveur  


 

 

L'attribut de méthode projet "Exécuter sur serveur" peut être défini dans la boîte de dialogue de modification globale des attributs ou dans la boîte de dialogue des propriétés de la méthode :

Lorsque cette option est cochée, la méthode projet est toujours exécutée sur le serveur, quel que soit le mode d’appel de la méthode.

Note : Cet attribut est pris en compte uniquement dans le cadre d’une application 4D exécutée en client/serveur.

Lorsque cet attribut est coché, le contexte d’exécution de la méthode projet est comparable à celui des triggers (cf. section 4D Server et le langage 4D) : la méthode sur le serveur partage le même contexte de base de données que le contexte correspondant côté client pour le verrouillage d’enregistrements et les transactions, mais pas le même contexte de langage (variables process, ensembles, sélections courantes). Toutefois, à la différence d'un trigger, la méthode exécutée sur le serveur ne partage pas l'enregistrement courant avec le contexte du client.

Tous les paramètres de la méthode ($1, $2, etc.) sont envoyés sur le serveur et la valeur du paramètre $0, s’il est utilisé, est retournée sur le client.

A la différence de la commande Executer sur serveur, cette option ne provoque pas de création de process sur le serveur. 4D Server utilise le process "jumeau" du process client qui a demandé l’exécution.
En outre, cette option simplifie le principe de délégation de l’exécution d’une méthode sur le serveur car le transfert des paramètres s’effectue automatiquement dans les deux sens, comme pour un appel de méthode "normal".
La commande Executer sur serveur, elle, a un fonctionnement asynchrone et requiert donc davantage de programmation et le recours aux sémaphores pour la lecture des résultats.

Les méthodes ayant l'attribut "Exécuter sur serveur" sont soumises aux mêmes règles que les procédures stockées en matière d'usage des commandes du langage 4D. L'exécution de certaines commandes est interdite sur le serveur, d'autres sont déconseillées. Pour plus d'informations, reportez-vous au paragraphe "Que ne peut pas faire une procédure stockée (exécutée sur le serveur) ?" dans la section Procédures stockées.

Si vous passez un pointeur sur une variable (variable simple, tableau ou élément de tableau), la valeur pointée est également envoyée sur le serveur. Si la valeur pointée est modifiée sur le serveur par la méthode, la valeur modifiée est retournée sur le client pour mise à jour de la variable correspondante côté client.
Les pointeurs sur une table ou un champ sont envoyés sous forme de référence (numéro de table, numéro de champ). La valeur de l’enregistrement courant n’est pas échangée automatiquement.

Note : L’option fonctionne de la même manière en mode interprété et en mode compilé.

Exemple  

Voici le code la méthode projet Monappli ayant l’attribut "Exécuter sur serveur" :

 C_POINTEUR($1`Pointeur sur table
 C_POINTEUR($2`Pointeur sur champ
 C_POINTEUR($3`Pointeur sur tableau
 C_TEXTE($4`Valeur à rechercher
 C_ENTIER LONG($0`Résultat
 
  `Rechercher et rapatrier des valeurs pour chaque enregistrement
 CHERCHER($1->;$2->=$4)
 Tant que(Non(Fin de selection($1->)))
    AJOUTER A TABLEAU($3->;maFormule($1))
    ENREGISTREMENT SUIVANT($1->)
 Fin tant que
 LIBERER ENREGISTREMENT($1->)
 $0:=Enregistrements trouves($1->)

Côté client, l’appel de la méthode s’effectue ainsi :

 TABLEAU TEXTE(monTab;0)
 $vlnombre :=MonAppli(->[Table_1] ;->[Table_1]Champ_1 ;->monTab;"à trouver")

 
PROPRIÉTÉS 

Produit : 4D
Thème : 4D Server et le langage 4D
Nom intl. : Execute on Server attribute

 
HISTORIQUE 

 
UTILISATION DE L'ARTICLE

4D Server - Référence ( 4D v16)