Lembra-se dos dias em que tinha de utilizar loops aninhados e declarações condicionais para recuperar o atributo de um objecto? Então acabou com um longo e complicado pedaço de código? Bem, esses dias acabaram! Graças à notação de objectos combinada com colecções e os seus métodos, agora é capaz de escrever código mais rapidamente, e de uma forma mais legível!
Encontrar o valor de um atributo específico nunca foi tão fácil. Vamos dar uma vista de olhos a um cenário da vida real e descobrir como!
Cenário da vida real
Imagine que quer filtrar os seus processos de execução pelo tipo deles.
Como já deve saber, o Get process activity permite recuperar uma lista de processos em execução e utilizadores conectados. Como se mostra abaixo, parte da informação devolvida é o tipo de processo:
{ { "processos":[ { "nome": "Principal", "sessionID":"", "número":0, "ID":0, "visível":falso, "systemID":"140736073646912", "tipo":-39, //Main 4D process "estado":0, "cpuUsage":0.033, "cpuTime":922.62008, "preemptive":true }, { "nome": "Processo de candidatura", "sessionID":"", "número":1, "ID":13, "visível":verdadeiro, "systemID":"123145536053248", "tipo":-1, //Processo principal "estado":2, "cpuUsage":0.002, "cpuTime":187.902836, "preemptivo":falso }, {} ] }
Vamos tentar encontrar o processo principal. Se o fizéssemos da maneira antiga, usaríamos um laço For com uma declaração condicional, o que nos deixa com um pedaço de código bastante longo:
C_OBJECT($obj)
C_LONGINT ($i)
ARRAY OBJECT (processesCol;0 )
$obj:=Get process activity
OB GET ARRAY($obj;"processos";processesCol)
ARRAY OBJECT ($result;0 )
For ($i;1;Size of array(processosCol))
If (OB Get(processosCol{$i}; "tipo")= Main process)
APPEND TO ARRAY($result;processosCol{$i})
End if
End for
O modo antigo funciona como um encanto, mas temos de admitir que é um pouco longo escrever apenas para encontrar um único elemento. Boas notícias! Graças ao query método de recolha, pode facilmente extrair o valor desejado … numa única linha de código!
C_COLLECTION($result)
.
$result:=Get process activityprocesses.consulta
("type = :1";Main process)
E está feito! O seu código é limpo, fácil de compreender e mais legível. Viva a simplicidade!
Acabámos de riscar a superfície do que pode ser feito. E, claro, o método query suporta operações mais complexas! Além de consultar uma colecção, também pode encomendar, reduzir, expandir ou filtrar. Mais de 40 métodos estão disponíveis para uma utilização óptima das colecções!