4D v16

Process

Accueil

 
4D v16
Process

Process    


 

 

En complément des manipulations expliquées dans la vidéo, il faut noter que : 

Un process est un environnement qui possède :

  • son espace mémoire
  • ses sélections courantes (une par table)
  • ses variables propres (les variables process)
  • éventuellement son interface
  • etc.

Les process peuvent communiquer entre eux de différentes manières :

  • variables interprocess
  • lecture ou écriture de variables
  • ...

Ils peuvent :

  • se mettre en attente (process endormi)
  • en hibernation (process suspendus) jusqu’à ce qu’un autre process les réveille

Un process meurt seul, lorsque la méthode qu’il exécute se termine.
On ne peut pas le forcer à mourir par programmation, bien qu’on puisse le programmer pour qu’il meure sous certaines conditions (voir la commande Appeler process)

Les process servent en général à :

  • créer des traitements particuliers (batchs, contrôles “sous-marins”),
  • créer des palettes d’outils (fenêtre autonomes disposant de fonctions particulières),
  • afficher des dialogues de saisie/visualisation pour que l’utilisateur puisse travailler en multi-fenêtrage.

Certains process sont générés directement par 4D.

Par programmation, un process est créé via la commande Nouveau process

 vNumeroProcess:=Nouveau process(Méthode;Pile;Nomprocess;Paramètres;...)

Cette ligne de commande doit figurer elle-même dans une méthode. Pensez à utiliser le principe suivant, vous y gagnerez en temps et en clarté :

 C_TEXTE($1)
 Si(Nombre de paramètres=0) // si la méthode ne reçoit aucun paramètre il faut donc créer le process
    C_ENTIER LONG(<>NumeroProcess)
    <>NumeroProcess:=Nouveau process("Affichage_Stats2";1024*1024;"Statistiques";"Paramètre_Fictif") // on crée le process
 Sinon // la méthode a reçu un paramètre, il faut donc exécuter la méthode d'affichage
    C_ENTIER LONG($Fenetre//créer la fenêtre (conteneur) dans laquelle on affiche le dialogue (contenu)
    $Fenetre:=Creer fenetre formulaire("STATS";Fenêtre standard;Centrée horizontalement;Centrée verticalement)
    DIALOGUE("STATS") //afficher le dialogue
    FERMER FENETRE($Fenetre//une fois le dialogue refermé, refermer la fenêtre
 Fin de si

  • Lors de l’appel de la méthode (sans paramètre), 4D crée un process dans lequel il exécute la méthode
  • La méthode s’appelle elle-même (elle crée une deuxième instance de la méthode dans le nouveau process)
  • et se passe un paramètre :
  • La première instance de méthode se termine
  • tandis que la méthode exécutée par le process continue à se dérouler et présente le tableau de statistiques.

Vous pouvez ainsi continuer à travailler tout en ayant la fenêtre de statistiques à portée de main.

Pour tracer l’exécution d’un process (au moment ou vous exécutez la ligne Nouveau process), utilisez le bouton "pas à pas nouveau process" . Ce bouton exécute la ligne et ouvre une deuxième fenêtre de trace dans laquelle vous pouvez suivre le déroulement de la méthode exécutée dans le process, indépendamment de la méthode appelante.

Vous pouvez créez par exemple un process qui affiche l’heure et le temps écoulé depuis que ce nouveau process est lancé. Cet exemple vous donnera les bases de la mise en oeuvre des compteurs temps.


Les process vous permettent d'envisager des évolutions rapides de votre programmation :

  • vous concevez vos traitements
  • les testez
  • puis en quelques lignes pouvez les paramétrer pour une exécution autonome dans un process.

Les exemples d’utilisation de process sont nombreux. En voici un autre : vous avez des mises à jour à faire sur une base de données importante, or ces mises à jour peuvent être décalées de quelques secondes, voire minutes sans impact sur la bonne marche de l’entreprise. Vous pouvez donc :

  • prévoir une table dans laquelle vous enregistrez une liste de tâches à réaliser.
  • Pour chacune des tâches vous précisez une date, une heure, éventuellement un niveau de priorité et un descriptif du traitement à réaliser (quoi, sur quelle table, quel enregistrement...).
  • Ensuite, vous mettez en route un process dont la seule mission est de consulter cette table et de réaliser l’ensemble des tâches qui y figurent.
  • Lorsqu’il a terminé, il se suspend, jusqu’à ce qu’une nouvelle tâche soit enregistrée et que le process soit réactivé.

Ce fonctionnement est tout à fait réalisable en client/serveur où un process (procédure stockée) "tourne" sur le serveur et réalise les tâches à effectuer :

  • import
  • retraitements
  • impressions pdf
  • envoi de mails
  • ...

Bonjour,

dans cette vidéo nous allons apprendre les cycles de vie d'un process : Naissance, vie et mort.

Les process sont souvent assimilés à du travail multitâche. Ils permettent de réaliser plusieurs travaux simultanément, sans avoir à terminer le premier traitement pour commencer le deuxième ou pour y revenir.

Supposons que vous souhaitiez accéder à un module statistique que nous avons mis en place dans les vidéos précédentes. Vous voulez qu’il puisse rester actif pendant que vous faites autre chose.
Dans ce cas, nous devrons démarrer un process et permettre à l’utilisateur de rafraîchir ses statistiques en cliquant sur un bouton que nous ajouterons dans le formulaire.

Dans un premier temps nous allons créer l'appel du dialogue Statistiques dans le formulaire navigation
Nous allons :

  • dupliquer un bouton
  • l'appeler Stats

et dans sa méthode, comme nous l'avions fait pour le 1er dialogue

  • créer un conteneur
  • afficher le dialogue de stats
  • puis refermer la fenêtre

Si nous testons déjà ceci. Nous disposons bien d'un bouton Stats qui affiche les informations qui nous intéressent et nous obtenons bien les statistiques.

Il se trouve par contre qu'on ne peut plus travailler sur notre formulaire navigation puisque celui-ci est mis en avant plan.

Il existe bien une solution pour travailler avec plusieurs fenêtres ; il est préférable dans ce cas d'utiliser plusieurs process, c'est ce que nous allons faire maintenant.

Un process se crée avec la commande Nouveau process qui bien évidemment doit être appelée à partir d'une méthode.
Ensuite on indique :

  • quelle méthode doit être exécutée dans le process
  • la pile
  • le nom du process
  • et d'éventuels paramètres.

Dans le cas présent nous allons donc créer une méthode d'affichage des Stats (notez que le nom est mis entre guillemets) et cette méthode contiendra la création du formulaire.

  • La pile importe peu
  • le nom du process ce sera statistiques
  • et nous n'avons pas besoin de paramètres particuliers

Il existe dans 4D un paramètre ultime qui peut être l'étoile que vous trouverez dans de nombreuses commandes.
Elle permet de ne pas créer plusieurs fois le même process, nous ne l'utiliserons pas pour l'instant, référez-vous à la documentation pour avoir plus de précisions.

Voyons maintenant ce fonctionnement. Si on clique sur le bouton Stats :

  • nous avons toujours le formulaire de stats qui s'affiche
  • mais nous avons la possibilité cette fois-ci de travailler dans une fenêtre ou dans l'autre.
  • de refermer le process
  • de le réafficher
  • et à ce niveau là il est même possible d'en afficher plusieurs puisque justement nous n'avons pas utilisé l'étoile.

Il serait même possible en supposant que nous ayons paramétré l'année dans le formulaire d'avoir les stats d'une année et les stats de l'autre sur 2 écrans différents.

Il est important de comprendre lorsqu'on utilise des process que chaque process a son propre environnement, c'est-à-dire que si je calcule ici j'obtiens un certain nombre d'informations quel que soit le nombre d'enregistrements trouvés ici.
Je peux n'en prendre que quelques-uns, mes statistiques seront toujours calculées en fonction de l'ensemble des informations qui figurent dans la table.

Il convient donc de bien comprendre qu'un process aura :

  • ses propres sélections
  • ses propres variables

si j'ai 2 process qui exécutent la même méthode, chacun pourra avoir des informations différentes.

Lorsque plusieurs process sont créés et qu'on demande à tracer, 4D propose l'ensemble des process qui ont été créés :

  • les process standard créés par 4D
  • plus les process que nous avons créés, comme celui-ci le process statistique.

Il est donc possible de demander à le tracer et lorsque nous allons faire "calculer", c'est bien la méthode du bouton sur lequel on a cliqué qui est tracée.

Si je demande à tracer un autre process, je vois bien apparaître ici le mode trace de ce process.

Au début de cette vidéo j'ai évoqué la création, la vie et la mort d'un process.

Voyons ces 3 étapes :
1ère étape la création du process : Nouveau process va donc le créer.

Pour tracer ce qui s'exécute dans un Nouveau process il faut utiliser ce bouton : une 2è fenêtre de trace apparaît pour le mode trace de la méthode "Statistiques" qui est en cours d'exécution.
Nous pouvons donc terminer le process créateur.

Ensuite une méthode s'exécute et pendant ce temps-là le process vit.

  • on peut réaliser un certain nombre de choses :
  • faire des échanges inter-process
  • du glisser-déposer

et le process sera détruit au moment ou la méthode qui a été exécutée lors de sa création se termine :

  • Là nous revenons dans la méthode initiale qui a été exécutée lors de la création du process
  • la fenêtre va se fermer
  • la méthode va se terminer
  • le process va mourir

et si nous traçons, nous ne voyons plus le process "statistiques".

 
 

 
PROPRIÉTÉS 

Produit : 4D
Thème : Process
Nom intl. : Processes

 
HISTORIQUE 

 
UTILISATION DE L'ARTICLE

Autoformation ( 4D v16)