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
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_TEXT($1) If(Count parameters=0) // si la méthode ne reçoit aucun paramètre il faut donc créer le process C_LONGINT(<>NumeroProcess) <>NumeroProcess:=New process("Affichage_Stats2";1024*1024;"Statistiques";"Paramètre_Fictif") // on crée le process Else// la méthode a reçu un paramètre, il faut donc exécuter la méthode d'affichage C_LONGINT($Fenetre) //créer la fenêtre (conteneur) dans laquelle on affiche le dialogue (contenu) $Fenetre:=Open form window("STATS";Plain window;Horizontally centered;Vertically centered) DIALOG("STATS") //afficher le dialogue CLOSE WINDOW($Fenetre) //une fois le dialogue refermé, refermer la fenêtre End if
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 :
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".