Permite recuperar o valor retornado pela última execução de função em modo SÍNCRONO em uma nova Job Thread pela função PoolJobs_runProcess em um dos AppServers/Slaves configurados no POOL Job Threads.
Válido apenas para execuções de funções em modo SÍNCRONO.
O modo síncrono de uma função em modo POOL Job Thread é assumido quando o parâmetro nWait é definido como TRUE. Para mais detalhes acesse a documentação da função PoolJobs_runProcess onde o parâmetro nWait é opcional.
Sintaxe
_ADVPL_PoolJobs_getReturnValue() => CHAR
Retorno
Tipo | Descrição |
---|---|
CHAR | Valor retornado pela função invocada em modo síncrono no POOL Job Threads via função PoolJobs_runProcess. Quando a execução é realizada em modo ASSÍNCRONO (Padrão), o retorno desta função será NULL. |
Exemplo
DATABASE logix GLOBALS DEFINE p_cod_empresa LIKE empresa.cod_empresa END GLOBALS DEFINE m_pooljob_name CHAR(30) DEFINE m_count INTEGER #---------------------------------------# FUNCTION PoolJobs_getReturnValue_test() #---------------------------------------# DEFINE l_repete SMALLINT IF LOG_initApp("PADRAO") <> 0 THEN RETURN END IF #Nome do POOL de processamentos JOB. LET m_pooljob_name = "poolNameExample" #Verificar se existe algum processo JOB em andamento para esse nome de POOL Job Threads IF _ADVPL_PoolJobs_getCountProcess(m_pooljob_name) > 0 THEN CALL conout("PoolJobs está em execução por outro processo. Processamento cancelado.") RETURN END IF #Inicializar o POOL Job Threads, onde fará leitura de chaves de profile e identificará lista #de appservers válidos (ativos e com conexão de banco de dados válida) IF NOT _ADVPL_PoolJobs_init(m_pooljob_name) THEN CALL conout("PoolJobs não iniciado. Appservers do POOL não foram detectados ou houve falha de conexão.") RETURN END IF #Ativar o modo JOB (Não apresentar telas de mensagens durante o processamento realizadas pelas funções de mensagens padrões Logix) CALL LOG_setJobMode(1) #Iniciando Job Thread para função pool1_main() com as seguintes características: # 1 - sem limite de processos em paralelo (3° parâmetro igual a zero) pois o processo # pode ser executado pela mesma rotina a partir de outras execuções de usuários. # 2 - execução em modo síncrono (4° parâmetro igual a TRUE). CASE _ADVPL_PoolJobs_runProcess(m_pooljob_name,"pool1_main",0,TRUE) WHEN 1 CALL conout("[POOL] Processo pool_01 iniciado..."||m_count) WHEN 2 CALL conout("[POOL] Processo pool_01 está em andamento..."||m_count) WHEN 0 CALL conout("[POOL] Ocorreu falha ao iniciar o processo pool_01..."||m_count) END CASE #Recupera o valor da execução da função pool1_main() executada via Pool Job Thread, que somente #será recuperada após término de todo seu processamento (modo síncrono) LET l_retorno = _ADVPL_PoolJobs_getReturnValue() CALL conout("VALOR RETORNADO PELO FUNCÃO pool1_main() = "||l_retorno) END FUNCTION #-----------------------------# FUNCTION pool1_main() #-----------------------------# DEFINE l_cont SMALLINT CALL conout("[pool_01] inicio.........................") WHILE l_cont < 30 SLEEP 1 LET l_cont = l_cont + 1 CALL conout("[pool_01] processando "||l_cont||".........................") END WHILE CALL conout("[pool_01] fim............................") RETURN "OK" END FUNCTION
Informações
Fontes: log1200.prw
Veja também
Observações
Para saber outras informações de como implementar o uso de POOL de Jobs acesse LGX - Exemplo de uso POOL Job Threads.