Vous vous souvenez de l’époque où vous deviez utiliser des boucles imbriquées et des instructions conditionnelles pour récupérer l’attribut d’un objet ? Vous vous retrouviez donc avec un morceau de code long et compliqué ? Eh bien, cette époque est révolue ! Grâce à la notation objet combinée aux collections et à leurs méthodes, vous pouvez désormais écrire du code plus rapidement et de manière plus lisible !
Trouver la valeur d’un attribut spécifique n’a jamais été aussi facile. Prenons un exemple concret et découvrons comment !
Scénario réel
Imaginez que vous voulez filtrer vos processus en cours d’exécution par leur type.
Comme vous le savez peut-être déjà, la commande Get process activity vous permet de récupérer une liste des processus en cours et des utilisateurs connectés. Comme indiqué ci-dessous, une partie des informations retournées est le type de processus :
{ { "processus" :[ { "name" : "Main", "sessionID" :", "number":0, "ID":0, "visible":false, "systemID":"140736073646912", "type":-39, /Processus 4D principal "state":0, "cpuUsage":0.033, "cpuTime":922.62008, "preemptive":true }, { "name" : "Application process", "sessionID" :", "number":1, "ID":13, "visible":true, "systemID":"123145536053248", "type":-1, //Processus principal "state":2, "cpuUsage":0.002, "cpuTime":187.902836, "preemptive":false }, {} ] }
Essayons de trouver le processus principal. Si nous le faisions à l’ancienne, nous utiliserions une boucle For avec une instruction conditionnelle, ce qui nous donnerait un code assez long :
C_OBJECT($obj)
C_LONGINT ($i)
ARRAY OBJECT (processesCol;0 )
$obj:=Get process activity
OB GET ARRAY($obj ;"processes" ;processesCol)
ARRAY OBJECT ($result;0 )
For ($i;1 ;Size of array(processesCol))
If (OB Get(processesCol{$i}; "type")= Main process)
APPEND TO ARRAY($result;processesCol{$i})
End if
End for
L’ancienne méthode fonctionne à merveille, mais nous devons admettre qu’elle est un peu longue à écrire juste pour trouver un seul élément. Bonne nouvelle ! Grâce à la méthode query collection, vous pouvez facilement extraire la valeur que vous voulez … en une seule ligne de code !
C_COLLECTION($result)
.
$result:=Get process activityprocesses.requête
("type = :1";Main process)
Et voilà, vous avez terminé ! Votre code est propre, facile à comprendre et plus lisible. Vive la simplicité !
Nous n’avons fait qu’effleurer la surface de ce qui peut être fait. Et bien sûr, la méthode query supporte des opérations plus complexes ! Outre l’interrogation d’une collection, vous pouvez également l’ordonner, la réduire, la développer ou la filtrer. Plus de 40 méthodes sont disponibles pour une utilisation optimale des collections !