4D v14Procédures stockées |
||
|
4D v14
Procédures stockées
Procédures stockées
L'expression "Procédure Stockée" provient du monde des serveurs SQL. Lorsqu'une station cliente envoie une requête à un serveur SQL, elle envoie en réalité du texte en langage SQL au serveur SQL. Cette requête fait l'objet d'une analyse syntaxique (parsing) et est interprétée sur le serveur SQL avant d'être exécutée. De toute évidence, si le texte de la requête est important et si la requête est envoyée plusieurs fois au cours d'une session, il peut y avoir beaucoup de temps passé pour l'envoi de ce code sur le réseau, le parsing et l'interprétation de la requête. Ainsi est née l'idée de faire en sorte que la requête soit envoyée sur le réseau, analysée et interprétée en une seule fois, et qu'ensuite elle soit exécutée à chaque fois qu'elle est envoyée par la station cliente. La solution était de conserver le code source de la requête (en d'autres termes, une procédure) sur le serveur et que le client envoie une requête comportant seulement le nom de la procédure à exécuter. En conséquence, cette procédure est dite "stockée" sur le serveur, d'où le nom de Procédure Stockée. Notez qu'une procédure SQL est une procédure qui peut recevoir des paramètres venant de la station cliente, exécuter les tâches pour lesquelles elle est faite (de façon synchrone ou asynchrone) et le cas échéant retourner un résultat au client. Quand un client demande l'exécution d'une procédure stockée, ce qu'il fait, c'est dans une certaine mesure déléguer l'exécution du code sur le serveur. Bien que nous utilisions aussi le terme "procédures stockées" par analogie, puisqu'il est compréhensible par tous dans l'industrie, les objets que nous appelons ainsi dans 4D Server ont des fonctionnalités plus larges que celles que l'on trouve habituellement. Avec 4D en mode local, lorsque par exemple vous utilisez la commande Nouveau process, vous pouvez ouvrir un process utilisateur dans lequel vous allez exécuter une méthode. Cette méthode est appelée une méthode process (voir à ce sujet la section Méthodes projet dans le manuel Langage de 4D). Avec 4D Server, vous pouvez faire la même chose sur un poste client. De plus, en utilisant la commande Executer sur serveur, vous pouvez créer sur le serveur un process utilisateur dans lequel vous allez exécuter une méthode. De même, en utilisant la commande EXECUTER SUR CLIENT, vous pouvez exécuter une méthode dans un autre process sur un autre poste client. La différence principale entre une procédure stockée SQL et une procédure stockée 4D Server est que dans le premier cas vous exécutez une procédure SQL et dans le second, vous exécutez un process 4D autonome. Comme un process 4D normal, une procédure stockée dispose de son propre environnement :
En termes d'interface utilisateur, une procédure stockée peut ouvrir des fenêtres et afficher des données (i.e. AFFICHER ENREGISTREMENT). Vous pouvez démarrer autant de procédures stockées que vous le souhaitez dans la mesure où votre matériel et la mémoire le permettent. En fait, la machine serveur doit être considérée comme une machine qui est non seulement capable de répondre à des clients 4D et à des navigateurs Web, mais aussi capable d'exécuter des process qui peuvent interagir avec d'autres process fonctionnant aussi bien sur le serveur que sur des 4D distants. De la même façon que 4D fournit un environnement multitâche aux process utilisateurs fonctionnant sur le poste, 4D Server fournit un environnement multitâche aux procédures stockées. Par exemple, 4D Server maintient une table des variables interprocess qui peuvent être utilisées par les procédures stockées pour communiquer entre elles. Note : La propriété de méthode "Exécuter sur serveur" permet elle aussi d'exécuter une méthode dans un process sur le serveur, mais la méthode utilise dans ce cas le process "jumeau" du process client, ce qui lui permet en particulier de bénéficier de l'environnement de ce process client. Il ne s'agit pas dans ce cas d'une procédure stockée 4D. Pour plus d'informations, reportez-vous à la section Attribut Exécuter sur serveur. Une grande partie fonctionnalités des process et des commandes décrites dans le manuel Langage de 4D s'appliquent aussi aux procédures stockées — à l'exception de la saisie de données pour les procédures stockées exécutées sur le serveur. Une procédure stockée peut ajouter, rechercher, trier, mettre à jour ou détruire des enregistrements. Une procédure stockée peut utiliser des ensembles et des sélections temporaires, accéder à des documents sur disque, travailler avec des BLOBs, imprimer des enregistrements, etc. Pensez simplement qu'au lieu d'effectuer une tâche sur votre poste 4D local, vous l'effectuez sur le serveur ou sur un ou plusieurs autres postes clients. Un avantage évident des procédures stockées exécutées sur le serveur est que précisément une procédure stockée s'exécute sur la machine serveur, là où se trouve le moteur de la base de données. Par exemple, un APPLIQUER A SELECTION n'est pas efficace sur le réseau, mais l'est à l'intérieur d'une procédure stockée. L'exemple proposé dans la section Import basé sur les procédures stockées (exemple) montre les optimisations remarquables que vous pouvez obtenir en utilisant une procédure stockée. Les procédures stockées exécutées sur un ou plusieurs autres postes clients autorisent, quant à elles, l'optimisation de la répartition des tâches entre les clients, ou encore la communication inter-clients. La description de la commande INSCRIRE CLIENT fournit un exemple simple de messagerie utilisant des procédures stockées exécutées sur les clients. Cependant, l'avantage le plus évident de l'architecture des procédures stockées se trouve dans la dimension supplémentaire qu'elles apportent à 4D Server : grâce aux procédures stockées, vous pouvez implémenter vos propres services 4D Server. La limite, c'est votre imagination. L'exemple fourni dans la section Services basés sur les procédures stockées (exemple) montre une procédure stockée capable de fournir des informations sur 4D Server à ses clients. Vous pouvez, par exemple, lister les volumes de la machine serveur. Cet exemple pourrait être étendu facilement, pour, notamment, renvoyer les informations sur les répertoires ou documents au client. De manière générale, les procédures stockées exécutées sur le serveur ne doivent pas effectuer d'opérations impliquant des éléments d'interface (menus, fenêtres, formulaires...). En effet, les mécanismes de gestion d'interface ne sont pas pris en charge sur le serveur. Voici la liste des commandes ne devant PAS être utilisées dans le cadre des procédures stockées exécutées sur le serveur. Ces commandes sont classées en trois catégories :
ACTIVER LIGNE MENU
Activation COORDONNEES FENETRE Copier liste Creer document (1) Creer fichier ressources (1) C_GRAPHE DEPLACER FENETRE Desactivation DIALOGUE Ecran principal Ecrire proprietes groupe Ecrire proprietes utilisateur EFFACER CONTENEUR EFFACER FENETRE Element parent Elements selectionnes En entete En pied En rupture Evenement formulaire EXPORTER DONNEES (1) Fenetre premier plan Fenetre suivante FILTRER FRAPPE CLAVIER FIXER IMAGE DANS CONTENEUR FIXER FICHIER HISTORIQUE FIXER MINUTEUR FIXER PROFONDEUR ECRAN FIXER TEXTE DANS CONTENEUR FIXER TITRES CHAMPS FIXER TITRES TABLES FORM ALLER A PAGE FORM FIXER ENTREE FORM FIXER SORTIE FORM DERNIERE PAGE FORM PAGE PRECEDENTE FORM PAGE SUIVANTE FORM Lire page courante FORM LIRE PROPRIETES FORM PREMIERE PAGE Frappe clavier GENERER CLIC GENERER EVENEMENT GENERER FRAPPE CLAVIER Hauteur barre de menus Hauteur ecran IMPORTER DONNEES (1) INACTIVER BOUTON INFORMATION ELEMENT INSCRIRE CLIENT INSERER DANS LISTE INVERSER FOND Largeur ecran LIRE DONNEES CONTENEUR LIRE IMAGE DANS CONTENEUR LIRE LISTE GROUPE LIRE LISTE UTILISATEURS LIRE PROPRIETES ELEMENT LIRE PROPRIETES GROUPE LIRE PROPRIETES LISTE LIRE PROPRIETES UTILISATEUR Lire texte dans conteneur Lire texte edite LISTE DES POLICES LISTE FENETRES LISTE VERS BLOB Liste existante Majuscule enfoncee MARQUER ENREGISTREMENTS MAXIMISER FENETRE MINIMISER FENETRE Modifie MONTRER PROCESS NE PAS VALIDER Nom de police Nombre ecrans Nombre elements Nouvelle liste Numero de police OBJET DEPLACER OBJET FIXER COULEUR OBJET FIXER COULEURS RVB OBJET FIXER NOM ENUMERATION OBJET FIXER FILTRE SAISIE OBJET FIXER FORMATAGE OBJET FIXER SAISISSABLE OBJET FIXER TITRE OBJET FIXER VISIBLE OBJET LIRE COORDONNEES Objet focus Ouvrir document (1) Ouvrir fichier ressources (1) PARAMETRES DU GRAPHE PASSER AU PREMIER PLAN Pendant Pop up menu POSITION SOURIS Position deposer Position element liste Process de la fenetre Process de premier plan PROFONDEUR ECRAN PROPRIETES GLISSER DEPOSER REDESSINER REDESSINER FENETRE REDESSINER LISTE REFUSER SELECTIONNER ELEMENTS PAR POSITION SELECTIONNER ELEMENTS PAR REFERENCE SELECTIONNER TEXTE Selectionner dossier Self STOCKER LISTE SUPPRIMER DANS LISTE SUPPRIMER LISTE SUPPRIMER UTILISATEUR Table du formulaire courant Tester conteneur TEXTE SELECTIONNE Titre fenetre TRIER LISTE TRIER (2) Type fenetre Utilisateur courant Utilisateur supprime VALIDER Valider mot de passe (1) Uniquement lorsque le premier paramètre est une chaîne vide.
FIXER BARRE MENUS
Vous pouvez l'exécuter sur 4D Server ou sur un autre poste 4D client. Notez que, pour que les postes clients 4D apparaissent dans cette liste, ils doivent auparavant avoir été inscrits (cf. sections Procédures stockées sur les clients et commande INSCRIRE CLIENT).
Note : Il n'est pas possible d'utiliser les commandes de gestion des process ENDORMIR PROCESS, SUSPENDRE PROCESS et REACTIVER PROCESS à partir d'un 4D distant avec des procédures stockées sur le serveur.
Les procédures stockées peuvent communiquer entre elles à l'aide des :
Reportez-vous aux sections correspondantes du manuel Langage de 4D. Une fois encore, gardez à l'esprit que les commandes 4D agissent sur le poste qui exécute la procédure stockée (serveur ou clients) de la même manière qu'en local sur un poste client. Note : Les mécanismes APPELER PROCESS et Appel exterieur n'ont pas de signification sur le poste serveur car les procédures stockées ne disposent pas d'interface utilisateur avec saisie de données. En outre, notez cette fonctionnalité importante : les process utilisateur des clients (process tournant sur un poste client) peuvent lire et écrire les variables process (*) d'une procédure stockée à l'aide des commandes LIRE VARIABLE PROCESS, ECRIRE VARIABLE PROCESS et VARIABLE VERS VARIABLE. (*) ainsi que les variables interprocess du poste serveur. Important : La communication process “Intermachine” permise par les commandes LIRE VARIABLE PROCESS, ECRIRE VARIABLE PROCESS et VARIABLE VERS VARIABLE n'est possible que du client vers le serveur. C'est toujours un process client qui lit ou écrit les variables d'une procédure stockée. |
PROPRIÉTÉS
Produit : 4D VOIR AUSSI
Import basé sur les procédures stockées (exemple) UTILISATION DE L'ARTICLE
4D Server - Référence ( 4D v13) Hérité de : Procédures stockées ( 4D Server v12) |