Páginas filhas
  • PoolJobs_getReturnValue


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.

(aviso) 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

PoolJobs_init

PoolJobs_getCountProcess

Observações

Para saber outras informações de como implementar o uso de POOL de Jobs acesse LGX - Exemplo de uso POOL Job Threads.