Histórico da Página
Versões comparadas
Chave
- Esta linha foi adicionada.
- Esta linha foi removida.
- A formatação mudou.
PASSO A PASSO
Configurar chave de profile
Configurar chave de profile "logix.pooljobs.servers" para o programa que executa a função para iniciar o
POOL de JOBS ou NOME DO POOL de Jobs desejado.
Exemplo:
Bloco de código |
---|
logix.pooljobs.servers.esp9900=192.168.99.1:7091,192.168.99.1:7092 |
Neste caso a chave foi configurada para o <PROGRAMA> esp9900, definindo que existirá apenas um único POOL de AppServers que atenderá o processamento multi-threads utilizando as funções POOL Job Threads.
Pode-se definir também mais de um POOL para o mesmo programa, como por exemplo "POOL por empresa".
Exemplo:
esp9900_01 e esp9900_02
No arquivo de profile as chaves seriam definidas da seguinte forma:
Bloco de código |
---|
logix.pooljobs.servers.esp9900_01=192.168.99.1:7091,192.168.99.1:7092 logix.pooljobs.servers.esp9900_02=192.168.99.1:7093,192.168.99.1:7094 |
Onde esp9900_01 seria um POOL Job Threads para empresa "01" e esp9900_02 seria um POOL Job Threads para empresa "02", ou seja, existirá um pool de appsevers para atender a um processamento de Job Threads para empresa 01 e outro para empresa 02 e cada um utiliza 2 slaves/appservers distintos para distribuição dos processos paralelos durante a execução.
Se o programa iniciar o POOL (função POOLJOBS_init), com o nome esp9900_01 e este nome estiver definido no arquivo de profile com uma lista de appservers válidos, irá utilizar a lista de appservers definida para a chave logix.pooljobs.servers.esp9900_01.
Caso a chave logix.pooljobs.servers.esp9900_01 não esteja definida no arquivo de profile, a função PoolJobs_init() irá rastrear automaticamente a chave com a lista de AppServers do POOL Job Threads para o programa que está invocando a função POOLJOBS_init, ou seja, neste caso, se o programa for esp9900.4gl, irá procurar a lista de AppServers definidos para a chave logix.pooljobs.servers.esp9900, que se encontrada, será adotada como a lista de servers para processar o POOL nomeado como esp9900_01.
Se não existir chave definida para o nome do POOL, nem para o programa que iniciou o POOL, o sistema tentará obter a lista de AppServers da chave padrão logix.pooljobs.servers.
Se a lista de AppServers ainda não foi identificada, por não estar definida para nenhuma das situações citadas anteriormente, o sistema irá assumir o AppServer atual em uso pela aplicação que iniciou o POOL para realizar a execução dos processos em modo JOB.
Desenvolvimento no fonte 4GL
Implementar no código do fonte 4GL as chamadas das funções POOLJOBS_<funcao> conforme um exemplo abaixo.
Bloco de código | ||||
---|---|---|---|---|
| ||||
DEFINE m_pooljob_name CHAR(30) LET m_pooljob_name = "esp9900" IF _ADVPL_PoolJobs_getCountProcess(m_pooljob_name) > 0 THEN CALL LOG_Message("POOL JOBS","ERROR","Este processo já está em andamento.") RETURN END IF IF NOT _ADVPL_PoolJobs_init(m_pooljob_name) THEN CALL LOG_message("POOL JOBS","ERROR","Falha ao iniciar o POOL de appserver JOBS.","Lista de appservers da chave logix.jobServers para o programa estão inativos ou não foram configurados.",0) RETURN END IF IF _ADVPL_PoolJobs_runProcess(m_pooljob_name,"log001_processo_01") THEN CALL conout("Processo 01 iniciado ou já alcançou limites de processos paralelos em andamento.") ELSE CALL conout("Processo 01 não iniciado. Falha de conexão.") END IF IF _ADVPL_PoolJobs_runProcess(m_pooljob_name,"log001_processo_02") THEN CALL conout("Processo 02 iniciado ou já alcançou limites de processos paralelos em andamento.") ELSE CALL conout("Processo 02 não iniciado. Falha de conexão.") END IF IF _ADVPL_PoolJobs_runProcess(m_pooljob_name,"log001_processo_03") THEN CALL conout("Processo 03 iniciado ou já alcançou limites de processos paralelos em andamento.") ELSE CALL conout("Processo 03 não iniciado. Falha de conexão.") END IF IF _ADVPL_PoolJobs_runProcess(m_pooljob_name,"log001_processo_04") THEN CALL conout("Processo 04 iniciado ou já alcançou limites de processos paralelos em andamento.") ELSE CALL conout("Processo 04 não iniciado. Falha de conexão.") END IF |
Para outros exemplos, acesse a documentação das funções POOL Job Threads.
Acompanhamento da execução em ambiente de desenvolvimento
Para realizar acompanhamento das execuções dos Jobs durante o processamento da rotina, pode-se realizar um filtro diretamente no banco de dados, pois todos os Jobs estão devidamente registrados na tabela LOG_DADOS_SESSAO_LOGIX, com a identificação do nome do POOL para o qual foram iniciados.
Bloco de código | ||||
---|---|---|---|---|
| ||||
SELECT sid, dat_execucao, programa, origem FROM log_dados_sessao_logix WHERE programa LIKE 'pool%' AND EXISTS (SELECT 1 FROM sysmaster:syssessions WHERE sid = log_dados_sessao_logix.sid) ORDER BY dat_execucao |
Bloco de código | ||||
---|---|---|---|---|
| ||||
SELECT * FROM log_dados_sessao_logix WHERE programa LIKE 'pool%' AND EXISTS (SELECT 1 FROM GV$SESSION WHERE audsid = log_dados_sessao_logix.sid) ORDER BY dat_execucao |
Bloco de código | ||||
---|---|---|---|---|
| ||||
SELECT * FROM log_dados_sessao_logix WHERE programa LIKE 'pool%' AND EXISTS (SELECT 1 FROM sys.dm_exec_sessions WHERE session_id = log_dados_sessao_logix.sid AND CAST(login_time AS DATETIME2(0)) = log_dados_sessao_logix.dat_execucao) ORDER BY dat_execucao |