Optimize o seu código ORDA com o registo de pedidos

Tradução automática de Deepl

Alguma vez precisou de analisar o tráfego dos seus pedidos ORDA entre um cliente e o servidor 4D? Por vezes pode demorar algum tempo a receber uma resposta do servidor, o que o pode fazer pensar se isso se deve ao tráfego da rede ou a um pedido não optimizado que tenha escrito! Felizmente, 4D v17 R6 torna possível determinar a(s) razão(ões) provável(is) para esta latência com os novos métodos ORDA disponíveis no ds objecto. Não são apenas funções de depuração, permitem-lhe também optimizar o seu código ORDA com uma melhor compreensão dos pedidos enviados.

Activar o registo de pedidos ORDA

O startRequestLog() O método de membro é muito flexível uma vez que pode registar pedidos ORDA num ficheiro ou numa memória.

log a um ficheiro

Para iniciar sessão a um ficheiro, basta chamar startRequestLog() com um File objecto indicando onde os seus pedidos ORDA serão registados. No exemplo abaixo, executamos uma consulta num campo não indexado que pode demorar algum tempo. Graças a esta nova funcionalidade, podemos verificar a duração dos nossos pedidos:

C_OBJECT($employees;$file)
$file :=File("/PACKAGE/Logs/ORDARequests.txt")
$file .delete()
ds .startRequestLog($file)
$employees :=ds.Employee.ds.query("firstname = :1"; "abcd") //firstname is not indexed

.
stopRequestLog()

Cada pedido é registado como uma representação JSON de um objecto.

Aqui está o conteúdo do ficheiro ORDARequests.txt:

[
{
..
.
"startTime": "2019-07-02T12:33:25.922Z",
"endTime": "2019-07-02T12:33:27.681Z",
"duration":4200,
"response":{ ...}

}
]

log to memory

Cada pedido pode ser registado como um objecto numa colecção que pode ser recuperada utilizando a função getRequestLog() método dos membros.

Uma vez que devolve uma colecção, é possível utilizar todos os métodos de colecção disponíveis.

C_OBJECT($first;$e)
C_COLLECTION (
$log)

ds .startRequestLog(10) // Only the last 10 requests will be kept in memory
$first :=ds.Persons.all().first()
$e :=ds.Persons.query("name=:1"; "Brown")
$log :=ds.getRequestLog()
ALERT ("O pedido mais longo durou: "+String($log.max.ds("duração"))+" ms")
.stopRequestLog()

desactivar o registo de pedidos ORDA

Para deixar de registar pedidos ORDA, basta ligar para o stopRequestLog() método de membro, tal como mostrado nos exemplos acima.

Avatar
• Proprietário do produto - Marie-Sophie Landrieu -Yvert entrou ao time 4D Product como Proprietária do Produto em 2017. Como tal, está a cargo de escrever as histórias dos usuários e depois traduzi-las em especificações funcionais. Seu papel também é garantir que a implementação da funcionalidade entregue cumpra com as necessidades do cliente. Marie-sophie se formou na Escola de Engenharia de ESIGELEC e começou sua carreira como engenheira da IBM em 1995. Participou em vários projetos (de manutenção e criação) e trabalhou como desenvolvedora de Cobol. Depois trabalhou como designer de UML e desenvolvedora de Java. Suas principais funções foram analisar e redigir requisitos funcionais, coordenar os times de negócio e de desenvolvimento.