Histórico da Página
...
Bloco de código | ||||
---|---|---|---|---|
| ||||
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 |
...
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas