fiz um processo que dispara um determinado concurrent várias vezes (dentro de um loop), fiz uma lógica pra fazer uma espécie de paralelismo e quebrar um processamento em várias partes para melhoria de performance, até aí tudo bem, funcionou e tal
mas preciso fazer outra validação após a execução desses concurrents que são chamados dentro do loop, e preciso saber se todos os que foram chamados terminaram com sucesso, pra só daí então continuar
me passaram o exemplo da api/function core FND_CONCURRENT.WAIT_FOR_REQUEST, mas não consegui entender bem o funcionamento dela, podem me dar umas dicas?
fiz assim:
Armazeno os request_ids no type l_tRequests dentro do loop que dispara os concurrents quantas vezes forem necessárias (controlo isso de acordo com a qtde de registros a serem processados)
com o type carregado com os resquest_ids dos concurrents que estão sendo executados no momento eu faço:
FOR l_nInd IN l_tRequests.FIRST..l_tRequests.LAST LOOP
--
l_bCall_Status :=
FND_CONCURRENT.WAIT_FOR_REQUEST ( request_id => l_tRequests(l_nInd).request_id
,interval => 1 -- IN
,max_wait => 0 -- IN
,phase => l_vPhase -- OUT
,status => l_vStatus -- OUT
,dev_phase => l_vDev_phase -- OUT
,dev_status => l_vDev_status -- OUT
,message => l_vMessage -- OUT
);
END LOOP;
como funcionam os parâmetros de entrada e saída, como utilizá-los?
como eu faço pra testar se todos os concurrents terminaram o processamento???
o retorno da WAIT_FOR_REQUEST é TRUE somente quando o concurrent termina com sucesso?
para cara chamada da WAIT_FOR_REQUEST ela fica em "espera" até que o concurrent termine?