Vzpomínáte si na doby, kdy jste museli pro získání atributu objektu používat vnořené smyčky a podmíněné příkazy? Takže jste skončili s dlouhým a komplikovaným kusem kódu? Tak tyhle časy jsou pryč! Díky objektovému zápisu v kombinaci s kolekcemi a jejich metodami nyní můžete psát kód rychleji a čitelněji!
Vyhledání hodnoty konkrétního atributu nebylo nikdy jednodušší. Pojďme se podívat na reálný scénář a zjistit jak!
Scénář z reálného života
Představte si, že chcete filtrovat běžící procesy podle jejich typu.
Jak už možná víte, metoda Get process activity Příkaz umožňuje získat seznam běžících procesů a připojených uživatelů. Jak je uvedeno níže, součástí vrácených informací je typ procesu:
{ { "processes":[ { "name": "Main", "sessionID":", "number":0, "ID":0, "visible":false, "systemID":"140736073646912", "type":-39, /Hlavní 4D proces "state":0, "cpuUsage":0.033, "cpuTime":922.62008, "preemptive":true }, { "name": "Application process", "sessionID":", "number":1, "ID":13, "visible":true, "systemID":"123145536053248", "type":-1, //Main process "state":2, "cpuUsage":0.002, "cpuTime":187.902836, "preemptive":false }, {} ] }
Zkusme najít hlavní proces. Kdybychom to udělali starým způsobem, použili bychom cyklus For s podmíněným příkazem, čímž bychom získali poměrně dlouhý kus kódu:
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
Starý způsob funguje jako kouzlo, ale musíme přiznat, že je trochu zdlouhavý na psaní jen kvůli nalezení jednoho prvku. Dobrá zpráva! Díky query collection můžete snadno získat požadovanou hodnotu … na jediném řádku kódu!
C_COLLECTION($result)
.
$result:=Get process activityprocesses.query
("type = :1";Main process)
A máte hotovo! Váš kód je čistý, přehledný a čitelnější. Ať žije jednoduchost!
Právě jsme se dotkli povrchu toho, co lze udělat. A metoda query samozřejmě podporuje i složitější operace! Kromě dotazování na kolekci je můžete také uspořádat, zmenšit, rozšířit nebo filtrovat. Pro optimální využití kolekcí je k dispozici více než 40 metod!