4D v16.3

Introduction aux process

Accueil

 
4D v16.3
Introduction aux process

Introduction aux process  


 

 

Le multi-tâche dans 4D représente la possibilité d'exécuter simultanément plusieurs opérations de base de données distinctes. Ces opérations sont appelées des process.

Créer de multiples process équivaut à avoir plusieurs utilisateurs travaillant sur le même ordinateur, chacun effectuant sa tâche. Cela signifie principalement que chaque méthode peut être exécutée comme une tâche de base de données distincte.

Cette section traite des sujets suivants :

  • Créer et supprimer des process
  • Eléments du process
  • Process utilisateurs
  • Process créés par 4D
  • Process locaux et globaux
  • Verrouillage d'enregistrements entre process.

Note : Cette section ne traite pas des procédures stockées. Pour cela, reportez-vous à la section Procédures stockées dans le manuel de référence de 4D Server.

Il existe plusieurs manières de créer un nouveau process :

  • Exécuter une méthode en mode Développement en sélectionnant la case à cocher Nouveau process dans la boîte de dialogue d'exécution de méthode. La méthode choisie dans ce dialogue est la méthode process.
  • Les process peuvent être démarrés par les commandes de menu. Dans l'éditeur de menus, sélectionnez la commande de menu et cochez l'option Démarrer un process. La méthode associée à la commande de menu est la méthode process.
  • Utiliser la fonction New process. La méthode passée en paramètre à la fonction New process est la méthode process.
  • Utiliser la fonction Execute on server afin de créer une procédure stockée sur le serveur. La méthode passée en paramètre à la fonction est la méthode process.
  • Utiliser la commande CALL WORKER. Si le process du worker n'existe pas déjà, il est créé.

Un process peut être supprimé dans les conditions suivantes. Les deux premières sont automatiques :

  • Lorsque la méthode process a terminé son exécution
  • Lorsque l'utilisateur quitte la base
  • Si vous stoppez le process par le langage ou utilisez le bouton Stop dans le débogueur
  • Si vous choisissez Tuer dans l'Explorateur d'exécution
  • Si vous appelez la commande KILL WORKER (pour supprimer un process worker uniquement).

Un process peut créer un autre process. Les process ne sont pas organisés hiérarchiquement. Tous les process sont égaux, et cela indépendamment du process à partir duquel ils ont été créés. Une fois qu'un process "parent" a créé un process "enfant", le process enfant pourra se poursuivre que le process parent soit toujours en cours d'exécution ou non. 

Chaque process contient certains éléments spécifiques. Il y a trois types d'éléments bien distincts dans un process :

  • Les éléments d'interface : ce sont les éléments nécessaires à l'affichage du process.
  • Les éléments de données : ce sont les informations liées aux données de la base.
  • Les éléments de langage : ce sont les éléments utilisés par le langage ou importants pour le développement de l'application.

Les éléments d'interface sont les suivants :

  • Barre de menus : Chaque process peut avoir sa propre barre de menus courante. La barre de menus du process de premier plan est la barre de menus courante de la base.
  • Une ou plusieurs fenêtres : Chaque process peut contrôler plusieurs fenêtres ouvertes simultanément. A l'inverse, des process peuvent n'avoir pas de fenêtre du tout.
  • Une fenêtre active (de premier plan) : Bien qu'un process puisse disposer de plusieurs fenêtres ouvertes simultanément, chaque process n'a qu'une fenêtre active. Pour avoir plusieurs fenêtres actives à la fois, vous devez démarrer plusieurs process.

Notes :

  • Par défaut, les process ne comportent pas de barre de menus, ce qui signifie que les raccourcis standard du menu Edition (notamment couper / copier / coller) ne sont pas disponibles dans les fenêtres du process. Lorsque vous appelez les dialogues ou les éditeurs de 4D (éditeur de formules, éditeur de recherches, Request...) depuis un process, assurez-vous que l'équivalent d'un menu Edition est installé dans le process si vous souhaitez que l'utilisateur bénéficie des raccourcis clavier de type copier/coller.
  • Les process exécutés sur le serveur (procédures stockées) et les process préemptifs ne doivent pas contenir d'éléments d'interface.

Les éléments de données se réfèrent aux données de la base. Ce sont les suivants :

  • Sélection courante par table : Chaque process a sa propre sélection courante. La même table peut avoir différentes sélections courantes dans différents process.
  • Enregistrement courant par table : Chaque table peut avoir un enregistrement courant différent dans chaque process.

Note : Cette description des éléments de données est valide si les process sont des process globaux. Par défaut, tous les process sont globaux. Reportez-vous plus bas au paragraphe traitant de ce point.

Les éléments de langage d'un process sont tous les éléments liés à la programmation dans 4D.

  • Variables : Chaque process a ses propres variables process. Reportez-vous à la section Variables pour plus d'informations. Les variables process ne sont reconnues que dans le cadre de leur process natif.
  • Table par défaut : Chaque process a sa propre table par défaut. Cependant, notez que la commande DEFAULT TABLE est seulement une convention de programmation.
  • Formulaires entrée et sortie : Les formulaires entrée et sortie par défaut peuvent être choisis par programmation pour chaque table et chaque process.
  • LockedSet et ensembles process : Chaque process a ses propres ensembles process. LockedSet est un ensemble process. Les ensembles process sont effacés dès que la méthode du process est terminée.
  • Appel sur erreur par process : Chaque process a sa propre méthode de gestion d'erreurs.
  • Fenêtre de débogueur : Chaque process peut avoir sa propre Fenêtre de débogueur.

Les process utilisateur sont des process que vous créez pour effectuer certaines tâches. Ils partagent le temps machine avec les process principaux. Par exemple, les process de connexion Web sont des process utilisateur.

L'application 4D crée également des process pour ses propres besoins. Voici les principaux process créés et gérés par 4D :

  • Process principal : Le process principal gère les fenêtres d'affichage de l'interface utilisateur.
  • Process développement : Le process développement gère les fenêtres et éditeurs de l'environnement de Développement. Il n'y a pas de process développement dans une base compilée ne contenant pas de code interprété.
  • Process Server Web : Le process Server Web est créé lorsque la base est publiée sur le Web. Reportez-vous à la section Mise en route du serveur Web et gestion des connexions pour plus d'informations.
  • Process Gestionnaire du cache : Le process Gestionnaire du cache gère les entrées/sorties disque de la base. Ce process est créé dès que 4D ou 4D Server est lancé.
  • Process d'indexation : Le process d'indexation gère les index des champs de la base dans un process séparé. Ce process est créé lorsqu'un index est créé ou détruit pour un champ.
  • Process de Gestion d'événements : Ce process est créé quand une méthode de gestion d'événement est installée par la commande ON EVENT CALL. Ce process exécute la méthode d'appel sur événement installée par la commande ON EVENT CALL à chaque fois qu'un événement se produit. La méthode événement est la méthode process de ce process. Elle s'exécute continuellement, même s'il n'y a pas de méthode en exécution. La gestion d'événements fonctionne aussi en mode Développement.

A compter de 4D v15 R5 64 bits, 4D vous permet de créer des process utilisateur préemptifs en mode compilé. Dans les versions précédentes, seuls les process utilisateur coopératifs étaient disponibles.

Lorsqu'il est exécuté en mode préemptif, un process est dédié à un CPU (processeur). La gestion du process est alors déléguée au système, qui peut allouer chaque CPU séparément sur une machine multi-coeurs. Lorsqu'ils sont exécutés en mode coopératif, tous les process sont gérés par le thread (process système) de l'application parente et partagent le même CPU, même sur une machine multi-coeurs.

Par conséquent, en mode préemptif, les performance globales de l'application sont améliorées, particulièrement avec des machines multi-coeurs, car de multiples threads peuvent véritablement être exécutés simultanément. Les gains effectifs dépendent cependant de la nature des opérations exécutées. En contrepartie, puisqu'en mode préemptif chaque thread est indépendant des autres et non géré directement par l'application, des conditions spécifiques sont à respecter dans les méthodes qui doivent être exécutées en préemptif. De plus, le mode préemptif est disponible uniquement dans certains contextes.

La gestion des process préemptifs est détaillée dans la section Process 4D préemptifs

La portée (l'aire d'action) des process peut être globale ou locale. Par défaut, tous les process sont globaux.

Les process globaux peuvent effectuer n'importe quelle opération, y compris accéder aux données et les manipuler. Dans la plupart des cas, vous utiliserez des process globaux.

Les process locaux ne doivent être utilisés que pour des opérations qui n'accèdent pas aux données. Par exemple, vous pouvez utiliser un process local pour contrôler les éléments d'interface comme les palettes flottantes ou exécuter une méthode de gestion d'événements.

Vous spécifiez qu'un process est local via son nom. Le nom d'un process local doit commencer par le symbole dollar ($).

Attention : Si vous tentez d'accéder aux données à partir d'un process local, vous accédez aux données par l'intermédiaire du Process principal, et prenez donc le risque d'entrer en conflit avec les opérations effectuées dans ce process.

4D Server : Avec 4D Server, l'utilisation de process locaux côté client, pour des opérations qui ne nécessitent pas d'accès aux données, permet d'allouer davantage de temps machine à des tâches qui sollicitent intensivement le serveur.

Un enregistrement est verrouillé pour un process lorsqu'un autre process l'a déjà chargé pour modification. Un enregistrement verrouillé peut être chargé par un autre process mais ne peut pas être modifié. L'enregistrement est déverrouillé seulement dans le process dans lequel l'enregistrement est modifié. Une table doit être en mode lecture/écriture pour qu'un enregistrement puisse être chargé non verrouillé. Pour plus d'informations, reportez-vous à la section Verrouillage d'enregistrements.



Voir aussi  

Méthodes
Méthodes projet
Variables

 
PROPRIÉTÉS 

Produit : 4D
Thème : Process

 
HISTORIQUE 

 
UTILISATION DE L'ARTICLE

4D - Langage ( 4D v16)
4D - Langage ( 4D v16.1)
4D - Langage ( 4D v16.2)
4D - Langage ( 4D v16.3)