Échange de messages entre processus

Traduit automatiquement de Deepl

4D v15 R5 introduit un nouveau moyen, simple et puissant, d’échanger des informations entre processus et également entre processus et formulaires. Cette fonctionnalité est basée sur un système de messagerie asynchrone qui permet d’appeler les processus et les formulaires et de leur demander d’exécuter des méthodes avec des paramètres dans leur propre contexte.

Le processus Worker

Un worker a une boîte de messages. Le processus worker est créé à la première utilisation et son processus associé est également lancé automatiquement à la première utilisation. Contrairement à la commande « New process« , un processus worker reste en vie après la fin de l’exécution de la méthode.

Un worker peut s’appeler lui-même afin de travailler sur des tâches importantes par morceaux. Les workers réduisent considérablement le besoin de variables inter-processus ainsi que le besoin de sémaphores pour permettre un traitement asynchrone parallèle. Un worker est nécessaire pour le multithreading préemptif. Cependant, un worker peut être utilisé avec des processus coopératifs, il est donc également utile avec des environnements 32 bits ou interprétés.

Deux nouvelles commandes sont disponibles :

  • « CALL WORKER » encapsule le nom de la méthode du projet et les éventuels paramètres dans un message et l’affiche dans la boîte de messages du travailleur.

CALL WORKER (nom du processus|numéro du processus;nom de la méthode du projet;param1 ;…;paramN)

  • « KILL WORKER »  » envoie un message au travailleur spécifié lui demandant d’oublier tout message en attente et de se tuer.

KILL WORKER (rien|nom du processus|numéro du processus)

Une base de données d’exemple est disponible pour démontrer la nouvelle fonctionnalité :

Exemple de base de données

Formulaire d’appel

Maintenant, chaque formulaire exécuté dans une fenêtre possède une boîte de message. « CALL FORM » permet d’exécuter une méthode de projet avec des arguments dans le contexte d’un formulaire affiché dans une fenêtre, quel que soit le processus propriétaire de la fenêtre.

La commande permet d’utiliser « CALL PROCESS » avec des variables inter-processus pour passer des messages. « CALL FORMLa commande  »  » peut être utilisée à l’intérieur d’un contexte de formulaire pour s’appeler elle-même afin d’empiler ou d’empiler le travail. Ceci élimine le besoin de solutions de contournement telles que SET TIMER(1). Bien qu’extrêmement nécessaire pour les processus préemptifs, il fonctionne également avec les processus coopératifs, avec les environnements 32 bits ou interprétés.

La syntaxe est la suivante :
CALL FORM (référence de fenêtre;nom de méthode de projet;param1 ;…;paramN)

De la même manière que « CALL WORKER« , « CALL FORM » encapsule le nom de la méthode et les arguments de la commande dans un message qui est affiché dans la boîte de message du formulaire. Le formulaire exécute ensuite le message dans son propre processus.

Un exemple de base de données est disponible pour démontrer la nouvelle fonctionnalité :

Exemple de base de données

Pour plus de détails, veuillez consulter le manuel de mise à niveau de 4D v15 R5.

Vanessa Talbot
- Product Owner -Vanessa Talbot a rejoint l'équipe du programme 4D en juin 2014. En tant que Product Owner, elle est chargée de rédiger les user stories puis de les traduire en spécifications fonctionnelles. Son rôle est également de s'assurer que l'implémentation des fonctionnalités livrées répond aux besoins des clients.Depuis son arrivée, elle a travaillé à la définition des fonctionnalités clés de 4D. Elle a travaillé sur la plupart des nouvelles fonctionnalités de multithreading préemptif et aussi sur un sujet très complexe : la nouvelle architecture pour les applications enginées. Vanessa est diplômée de Telecom Saint-Etienne. Elle a commencé sa carrière à l'Institut de Recherche Criminelle en tant que développeur pour le département audiovisuel. Elle a également travaillé dans les domaines des médias et du médical en tant qu'experte en support technique, en production ainsi qu'en documentation de nouvelles fonctionnalités.