Ricordate i tempi in cui dovevate usare cicli annidati e dichiarazioni condizionali per recuperare gli attributi di un oggetto? Così si finiva per ottenere un pezzo di codice lungo e complicato? Bene, quei giorni sono finiti! Grazie alla notazione degli oggetti, combinata con le collezioni e i loro metodi, potrete scrivere codice più velocemente e in modo più leggibile!
Trovare il valore di un attributo specifico non è mai stato così facile. Diamo un’occhiata a uno scenario reale e scopriamo come!
Scenario reale
Immaginiamo di voler filtrare i processi in esecuzione in base al loro tipo.
Come forse già sapete, il comando Get process activity consente di recuperare un elenco di processi in esecuzione e di utenti connessi. Come mostrato di seguito, una parte delle informazioni restituite è il tipo di processo:
{
{
"processi":[
{
"name": "Main",
"sessionID":"",
"numero":0,
"ID":0,
"visible":false,
"systemID":"140736073646912",
"type":-39, //Processo 4D principale
"state":0,
"cpuUsage":0.033,
"cpuTime":922.62008,
"preemptive":true
},
{
"name": "Application process",
"sessionID":"",
"number":1,
"ID":13,
"visibile":true,
"systemID":"123145536053248",
"tipo":-1, //processo principale
"state":2,
"cpuUsage":0.002,
"cpuTime":187.902836,
"preemptive":false
},
{}
]
}
Proviamo a trovare il processo principale. Se lo facessimo alla vecchia maniera, useremmo un ciclo For con un’istruzione condizionale, il che ci lascerebbe con un pezzo di codice piuttosto lungo:
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
Il vecchio metodo funziona a meraviglia, ma dobbiamo ammettere che è un po’ lungo da scrivere solo per trovare un singolo elemento. Buone notizie! Grazie al metodo query è possibile estrarre facilmente il valore desiderato… in una sola riga di codice!
C_COLLECTION($result).
$risultato:=Get process activityprocesses.query("type = :1";Main process)
E il gioco è fatto! Il codice è pulito, facile da capire e più leggibile. Viva la semplicità!
Abbiamo appena scalfito la superficie di ciò che si può fare. Naturalmente, il metodo query supporta operazioni più complesse! Oltre a interrogare un insieme, è possibile ordinarlo, ridurlo, espanderlo o filtrarlo. Sono disponibili più di 40 metodi per un uso ottimale delle collezioni!
Comments are not currently available for this post.