Páginas filhas
  • PoolJobs_getReturnValue

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Bloco de código
languageruby
linenumberstrue
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:
   #A função pool1_main() precisa existir compilada no RPO em um código fonte .4GL #   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",10,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

  LET#Recupera l_retornoo = _ADVPL_PoolJobs_getReturnValue(

  ##Após cada bloco de START de processos Job é realizada pausa de 5 segundos 
  ##antes da execução do próximo ciclo de execução de processos Job.
  SLEEP 5 

  #Exemplo foi desenvolvido para que após iniciar com sucesso 20 Jobs, o programa principal será finalizado
  RETURN (m_count < 20) 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

#-----------------------------#
 FUNCTION pool2_main()
#-----------------------------#
   DEFINE l_cont SMALLINT

   CALL conout("[pool_02] inicio.........................")
   WHILE l_cont < 180
      SLEEP 1
      LET l_cont = l_cont + 1
      CALL conout("[pool_02] processando "||l_cont||".........................")
   END WHILE
   CALL conout("[pool_02] fim............................")
 END FUNCTION

#-----------------------------#
 FUNCTION pool3_main()
#-----------------------------#
   DEFINE l_cont SMALLINT

   CALL conout("[pool_03] inicio.........................")
   WHILE l_cont < 80
      SLEEP 1
      LET l_cont = l_cont + 1
      CALL conout("[pool_03] processando "||l_cont||".........................")
   END WHILE
   CALL conout("[pool_03] fim............................")
 END FUNCTION

#-----------------------------#
 FUNCTION pool4_main()
#-----------------------------#
   DEFINE l_cont SMALLINT

   CALL conout("[pool_04] inicio.........................")
   WHILE l_cont < 100
      SLEEP 1
      LET l_cont = l_cont + 1
      CALL conout("[pool_04] processando "||l_cont||".........................")
   END WHILE
   CALL conout("[pool_04] fim............................")
 END FUNCTION

#-----------------------------#
 FUNCTION pool5_main()
#-----------------------------#
   DEFINE l_cont SMALLINT

   CALL conout("[pool_05] inicio.........................")
   WHILE l_cont < 120
      SLEEP 1
      LET l_cont = l_cont + 1
      CALL conout("[pool_05] processando "||l_cont||".........................")
   END WHILE
   CALL conout("[pool_05] fim............................")
 END FUNCTION

...