Outubro 2011 | rev. 01
M
ANUAL
A
GENDADOR DE
T
AREFAS
L
OGIX
Elaboração:
Rubens Dos Santos Filho
Objetivo
Este documento tem como tarefas no produto Logix, que realiza
interação com o usuário), onde são executados em
Os processos acionados pelo agendador são chamados tarefas a serem executadas pelo mesmo.
JOB0003 – Agendador de Tarefas através do programa JOB0005 –
Funcionamento
Uma vez iniciado o serviço
imediatamente é acionado um escalonador (
algum gatilho a ser executado conforme período e intervalos definidos pelo usuário gatilhos são executados em uma
gatilhos que ainda estão executando
Pré-requisitos
Para executar o agendado
TOTVS Tec e estar no mínimo com a versão 10.02 do Logix. Esta ferramenta trabalha servidores e banco de dados homologados pela TOTVS.
É extremamente aconselhável criar um ambiente
execução do agendador de tarefas.
Este documento tem como objetivo relatar a funcionalidade de agendamento de tarefas no produto Logix, que realiza a execução de processos em modo background
são executados em datas e intervalos definidos pelo agendador são chamados de gatilhos e cada tarefas a serem executadas pelo mesmo. Tais gatilhos são cadastrados através do
Agendador de Tarefas e o monitoramento da execução destes pode ser feito Monitor de Tarefas.
o serviço TOTVS Tec com o agendador de tare
é acionado um escalonador (scheduler) que verifica ininterruptamente se há conforme período e intervalos definidos pelo usuário
em uma nova linha de execução (thread), para não interferir nos executando.
Para executar o agendador de tarefas Logix, é necessário a utilização da
e estar no mínimo com a versão 10.02 do Logix. Esta ferramenta trabalha e banco de dados homologados pela TOTVS.
É extremamente aconselhável criar um ambiente TOTVS Tec separado dos outros ambientes para execução do agendador de tarefas.
objetivo relatar a funcionalidade de agendamento de background (sem a definidos pelo usuário.
e cada um possui gatilhos são cadastrados através do programa estes pode ser feito
com o agendador de tarefas ligado, ) que verifica ininterruptamente se há conforme período e intervalos definidos pelo usuário. Estes , para não interferir nos
utilização da tecnologia e estar no mínimo com a versão 10.02 do Logix. Esta ferramenta trabalha nos
JOB0003 – Agendador de Tarefas Logix (Cadastro de Gatilhos)
No JOB0003 são cadastrados os gatilhos a serem executados pelo agendador de tarefas do Logix e suas especificações.
• Informações do gatilho; • Especificação de execução; • Tarefas;
• Informações de atualizações.
Nas informações do gatilho, são cadastradas informações descrição do gatilho, responsável pelo gatilho, e
deverá enviar e-mails para o responsável.
Na especificação de execução, do gatilho. Também é possível
para execução, em andamento ou inativo
modificado, o mesmo não pode estar em andamento).
Agendador de Tarefas Logix (Cadastro de Gatilhos)
são cadastrados os gatilhos a serem executados pelo agendador de tarefas do Logix e suas especificações. Este programa é subdividido em quatro partes:
do gatilho; Especificação de execução;
nformações de atualizações.
Nas informações do gatilho, são cadastradas informações básicas
descrição do gatilho, responsável pelo gatilho, e-mail do responsável e quando o sistema mails para o responsável.
Na especificação de execução, são informados o período e os intervalos de execução verificar a situação do gatilho, se o mesmo está pendente para execução, em andamento ou inativo (lembrando que para que um gatilho possa ser modificado, o mesmo não pode estar em andamento).
Agendador de Tarefas Logix (Cadastro de Gatilhos)
são cadastrados os gatilhos a serem executados pelo agendador de quatro partes:
básicas como: nome e mail do responsável e quando o sistema
o período e os intervalos de execução rificar a situação do gatilho, se o mesmo está pendente (lembrando que para que um gatilho possa ser
Os períodos de execução são infor intervalos são definidos por hora, min selecionadas a partir da janela abaixo qual o usuário deseja informar:
No cadastro das tarefas, são para este gatilho e possibilita também
• Rotina; • Observações;
• Dependentes: define se a execução tarefa executada anteriormente • Parâmetros (simples e lista)
listas aceitam diversos
Estes parâmetros são informados na tela abaixo:
são informados através do campo de data in
intervalos são definidos por hora, minuto, dia, dia da semana e mês. Estas informações a janela abaixo, ao clicar no botão de lupa do respectivo campo do
são informadas as tarefas (processos) que serão executada possibilita também as definições de:
define se a execução da tarefa depende do término anteriormente;
(simples e lista): os parâmetros simples aceitam apenas um valor e diversos valores, seqüenciados conforme são adicionados
Estes parâmetros são informados na tela abaixo:
através do campo de data inicial e final e os Estas informações são o clicar no botão de lupa do respectivo campo do
) que serão executadas
tarefa depende do término com sucesso da
apenas um valor e as conforme são adicionados na mesma.
O nome da rotina e os parâmetros das tarefas são informações técnicas que podem ser vistas com mais detalhes no item
JOB0003 indica para o usuário quando foi a inclusão do gatilho, quando foi a última alteração e qual o usuário efetuou
JOB0005 – Monitor de Tarefas Logix
O JOB0005 permite que sejam monitorados os gatilhos e tarefas
execução, além de possibilitar a interrupção de um ou todos os gatilhos que estão em execução no momento. É possível também
gatilhos cadastrados e verificar se os mesmo algum problema durante a execução do mesmo.
O nome da rotina e os parâmetros das tarefas são informações técnicas que podem ser vistas com mais detalhes no item Desenvolvimento deste documento. Para finalizar, o indica para o usuário quando foi a inclusão do gatilho, quando foi a última ração e qual o usuário efetuou esta alteração.
Monitor de Tarefas Logix
permite que sejam monitorados os gatilhos e tarefas
além de possibilitar a interrupção de um ou todos os gatilhos que estão em É possível também, visualizar o histórico de execução de todos os gatilhos cadastrados e verificar se os mesmos foram executados com sucesso ou se houve
problema durante a execução do mesmo.
O nome da rotina e os parâmetros das tarefas são informações técnicas que podem ser deste documento. Para finalizar, o indica para o usuário quando foi a inclusão do gatilho, quando foi a última
permite que sejam monitorados os gatilhos e tarefas que estão em além de possibilitar a interrupção de um ou todos os gatilhos que estão em visualizar o histórico de execução de todos os foram executados com sucesso ou se houve
Configuração
Depois de cadastrados os gatilhos é necessário configurar o agendador de tarefas para a execução dos mesmos. Esta configuração consiste na criação de seções de execução dentro do arquivo de informações do servidor de aplicação (TotvsAppServer.ini) localizado dentro da pasta do servidor TOTVS Tec. As seções que deverão ser incluídas, bem como suas chaves e valores de execução, deverão estar como a seguir:
[OnStart]
Jobs=4glJob
[4glJob]
Environment=<ambiente Logix>
Main=JobStarter [LogixScheduler] ScheduleEnable=1 JObLogEnable=1 JobLogPath=C:\totvs\logix\bin\appserverj\log\ LoopLoadJob=33 VerifyJobInterval=55 JobMonitorAutoRefresh=5
; Informações utilizadas somente quando se faz uso de mais de um servidor ; (LoadBalance) para execução dos gatilhos agendados.
EnableJobBalance=0
JobServers=slave1,slave2
; Informações destinadas à validação de licença.
LicenseCompanyId=50 LicenseUserId=admlog [slave1] Type=tcpip Server=lnap07 Port=3301 Connections=50 [slave2] Type=tcpip Server=lnap07 Port=3302 Connections=50
Seção Descrição
[OnStart] Utilizado para iniciar automaticamente uma seção definida no arquivo de configuração quando o servidor for iniciado.
Jobs Indica qual a seção JOB configurado no
[4glJob] Configuração da seção JOB
o nome do programa responsável por de configuração).
Environment Indica em qual o ambiente executado o agendador de tarefas.
Main Nome do programa (AdvPL) que executará o agendador de tarefas.
[LogixScheduler] Seção de configuração do agendador de tarefas Logix.
ScheduleEnable Habilita/desabilita o escalonador do agendador de tarefas.
JobLogEnable Habilita/desabilita a geração do arquivo de
JobLogPath Caminho do servidor onde serão gerados os arquivos de
LoopLoadJob Quantidade de execuções execuções (Select
Obs.: o valor padrão mínimo para não sobrecarregar o
VerifyJobInterval Tempo em segundos entre cada
Obs.: o valor padrão mínimo para não sobrecarregar o servidor
JobMonitorAutoRefresh Tempo em segundos para a atualização automática das informações de gatilhos em execução no monitor de tarefas do agendador (
Obs.: o valor padrão mínimo para não sobrecarregar o servidor
EnableJobBalance Habilita/desabilita
Obs.: não se deve
tarefas, porém é necessário a definição dos servidores escravos no mesmo
JobServers Servidores escravos (
LicenseCompanyId Código da empresa
LicenseUserId Código do usuário que será utilizado para o consumo de licença
Caso seja utilizado LoadBalance para o agendador de tarefas, é possível utilizar os mesmos servidores escravos dos outros servidores de aplicação
1 Para questões de otimização de recursos de infra
entre servidores Totvstec, que podem estar no mesma máquina ou em máquinas diferentes.
escravo onde será criado um “servidor mestre” que irá usufruir dos recursos de seus “servidores escravos”. distribui os processos entre os servidores escravos.
Para cada servidor de aplicação é necessário ter uma cópia do diretório o LoadBalance:
• c:\totvs\logix\bin\
• appserver0 servidor master • appserver1 servidor slave 1 • appserver2 servidor slave 2 • appserverN servidor slave N
Nota: Mais detalhes sobre a configuração de LOAD BALANCE, vide manual de instalação TOTVS Tec.
Utilizado para iniciar automaticamente uma seção definida no arquivo de configuração quando o servidor for iniciado.
Indica qual a seção JOB configurado no arquivo de configuração será executada. Configuração da seção JOB. Nela será definida qual o ambiente será utilizado e qual o nome do programa responsável por executar o agendador de tarefas (vide arquivo de configuração).
Indica em qual o ambiente JOB configurado no arquivo de configuração será o agendador de tarefas.
Nome do programa (AdvPL) que executará o agendador de tarefas. Seção de configuração do agendador de tarefas Logix.
Habilita/desabilita o escalonador do agendador de tarefas.
Habilita/desabilita a geração do arquivo de log de execução para cada gatilho. Caminho do servidor onde serão gerados os arquivos de log dos gatilhos. Quantidade de execuções a serem realizadas até a próxima atualização
Select em banco de dados).
o valor padrão mínimo para não sobrecarregar o servidor TOTVS Tec Tempo em segundos entre cada execução de gatilho.
o valor padrão mínimo para não sobrecarregar o servidor TOTVS Tec
Tempo em segundos para a atualização automática das informações de gatilhos em execução no monitor de tarefas do agendador (JOB0005).
o valor padrão mínimo para não sobrecarregar o servidor TOTVS Tec Habilita/desabilita LoadBalance1 para os gatilhos a serem processados.
se deve incluir a seção [ServerNetwork] no servidor do agendador tarefas, porém é necessário a definição dos servidores escravos no mesmo
Servidores escravos (slaves) utilizados para o LoadBalance1 do agendador de tarefas. Código da empresa que será utilizado para o consumo de licença TOTVS
Código do usuário que será utilizado para o consumo de licença TOTVS
para o agendador de tarefas, é possível utilizar os mesmos servidores escravos dos outros servidores de aplicação TOTVS Tec.
Para questões de otimização de recursos de infra-estrutura, recomenda-se utilizar o conceito de LoadBalance para distribuição de carga entre servidores Totvstec, que podem estar no mesma máquina ou em máquinas diferentes. Este conceito utiliza-se do p
escravo onde será criado um “servidor mestre” que irá usufruir dos recursos de seus “servidores escravos”. Neste caso, o servidor mestre entre os servidores escravos.
uma cópia do diretório appserver. Assim, sugere-se a seguinte estrutura de diretórios para
Mais detalhes sobre a configuração de LOAD BALANCE, vide manual de instalação TOTVS Tec.
Utilizado para iniciar automaticamente uma seção definida no arquivo de arquivo de configuração será executada. ela será definida qual o ambiente será utilizado e qual
executar o agendador de tarefas (vide arquivo configurado no arquivo de configuração será Nome do programa (AdvPL) que executará o agendador de tarefas.
de execução para cada gatilho. dos gatilhos.
até a próxima atualização da lista de TOTVS Tec é 33. TOTVS Tec é 55. Tempo em segundos para a atualização automática das informações de gatilhos em
TOTVS Tec é 5. para os gatilhos a serem processados.
no servidor do agendador de tarefas, porém é necessário a definição dos servidores escravos no mesmo.
do agendador de tarefas. TOTVS.
TOTVS.
para o agendador de tarefas, é possível utilizar os mesmos
para distribuição de carga se do paradigma mestre-Neste caso, o servidor mestre
Desenvolvimento
Para que seja possível um programa do Logix ser executado através do agendador de tarefas, o mesmo deve ser adaptado conforme
programas de execução no agendador de tarefas:
1. O processo definido na tarefa do gatilho deve ser desenvolvido no
nome da função e esta deve sempre receber como parâmetro o nome da rotina (mesmo que não informada no cadastro);
2. O parâmetro “rotina” possibilita a definição de várias rotinas
3. A função JOB deverá obrigatoriamente retornar uma situação, sendo o zero indicador que não houve erros ou diferente de zero caso tenha ocorr
registro de execução, se o gatilho foi executado com sucesso ou não;
4. Caso tenha a necessidade de utilizar o usuário ou empresa para processamento do programa estes devem ser cadastrados como parâmetro para a tarefa e a função
receber estes parâmetros;
5. Os parâmetros informados para o processo devem ser recuperados dentro da função função JOB_get_parametro_gatilho_tare
6. O LOG0010 não fará retorno destes parâmetros quando executado via com o banco de dados e a carga das variáveis de ambiente.
Veja um exemplo de código fonte 4GL prepara
ara que seja possível um programa do Logix ser executado através do agendador de tarefas, o mesmo deve ser adaptado conforme os padrões de desenvolv
programas de execução no agendador de tarefas:
O processo definido na tarefa do gatilho deve ser desenvolvido no 4GL com a palavra
nome da função e esta deve sempre receber como parâmetro o nome da rotina (mesmo que não
O parâmetro “rotina” possibilita a definição de várias rotinas JOB em um único arquivo de programa; deverá obrigatoriamente retornar uma situação, sendo o zero indicador que não houve erros ou diferente de zero caso tenha ocorrido algum erro. Esse retorno define o que será gravado no registro de execução, se o gatilho foi executado com sucesso ou não;
Caso tenha a necessidade de utilizar o usuário ou empresa para processamento do programa estes devem ser cadastrados como parâmetro para a tarefa e a função JOB deve ser preparada para
Os parâmetros informados para o processo devem ser recuperados dentro da função
JOB_get_parametro_gatilho_tarefa;
não fará retorno destes parâmetros quando executado via JOB, apenas fará a conexão com o banco de dados e a carga das variáveis de ambiente.
Veja um exemplo de código fonte 4GL preparado para JOB.
ara que seja possível um programa do Logix ser executado através do agendador de os padrões de desenvolvimento para os
com a palavra _job após o nome da função e esta deve sempre receber como parâmetro o nome da rotina (mesmo que não
em um único arquivo de programa; deverá obrigatoriamente retornar uma situação, sendo o zero indicador que não houve
ido algum erro. Esse retorno define o que será gravado no
Caso tenha a necessidade de utilizar o usuário ou empresa para processamento do programa JOB, deve ser preparada para
Os parâmetros informados para o processo devem ser recuperados dentro da função JOB através da
DATABASE logix
GLOBALS
DEFINE p_user LIKE usuarios.cod_usuario
DEFINE p_cod_empresa LIKE empresa.cod_empresa
END GLOBALS
#---#
FUNCTION sssnnnn_job(l_rotina)
#---#
DEFINE l_msg CHAR(100)
DEFINE l_rotina CHAR(006)
IF LOG_initAPP("[CHAVE_SISTEMA_LOGIX]") > 0 THEN
# Falha na execução do JOB (sem permissão de executar o processo).
RETURN 1 END IF CASE l_rotina WHEN "[NOME_ROTINA_AGENDADOR]"
# Recupera o parâmetro (simples) 1 de sequencia 0 da tarefa
# (código da empresa).
CALL JOB_get_parametro_gatilho_tarefa(1,0)
RETURNING status, p_cod_empresa
IF p_cod_empresa IS NULL OR p_cod_empresa = " " THEN
LET l_msg = "Parâmetro 1 de sequencia 0 (código da empresa) ",
"não repassado para a tarefa agendada."
CALL LOG_consoleError(l_msg)
RETURN 1 # Falha na execução do JOB.
END IF
# Quando empresa é recebida como parâmetro no gatilho JOB, deve-se
# acionar a função abaixo para garantir que todo processamento a # partir deste ponto considere esta empresa para processamento. # Se a rotina processar dados para várias empresas e
# consequentemente acionar outras aplicações via FGLRUN, deve-se # sempre acionar a função abaixo toda vez que precisar considera # esta empresa como geral como se fosse o valor atual da
# variável global P_COD_EMPRESA.
CALL JOB_setCompany(p_cod_empresa)
# Recupera o parâmetro (lista) 2 de sequencia 1 da tarefa
# (código do usuário).
CALL JOB_get_parametro_gatilho_tarefa(1,0)
RETURNING status, p_user
IF p_user IS NULL OR p_user = " " THEN
LET l_msg = "Parâmetro 2 de sequencia 1 (código do usuário) ",
"não repassado para a tarefa agendada."
CALL LOG_consoleError(l_msg)
RETURN 1 # Falha na execução do JOB.
END IF
CALL sssnnnn_processamento()
END CASE
RETURN 0 # JOB executado com sucesso.