Criar JOB scheduler no Protheus

Tutorial passo-a-passo: criar JOB que roda agendado (cron-like) no Protheus, configurar em appserver.ini e validar execucao.

JOBs sao rotinas batch executadas em background pelo AppServer, ideais pra processamento agendado: relatorios diarios, integracoes noturnas, limpeza de cache.

1. Criar a User Function

#INCLUDE "PROTHEUS.CH"

User Function GeraRelDiario()
    Local cEmpresa := "99"
    Local cFilial  := "01010001"

    // Prepara ambiente (sem usuario logado)
    RpcSetType(3)                   // 3 = JOB
    RpcSetEnv(cEmpresa, cFilial)

    ConOut("[GeraRelDiario] Iniciou em " + Time())

    // Logica do JOB
    Begin Sequence
        ProcessaRelatorio()
    Recover
        ConOut("[GeraRelDiario] Erro: " + ErrorBlock())
    End Sequence

    RpcClearEnv()
    ConOut("[GeraRelDiario] Concluiu em " + Time())
Return

2. Compilar no RPO

Compile como GeraRelDiario.prw. Confirme que a User Function aparece (use /advpl-compile ou Ctrl+F9 no TDS-VSCode).

3. Configurar no appserver.ini

[ONSTART]
JOBS=GERA_REL_DIARIO
RefreshRate=60

[GERA_REL_DIARIO]
TYPE=Schedule
FUNCTION=U_GeraRelDiario
ENABLED=1
SCHEDULE=060000   ; HHMMSS = 06:00:00 todo dia

4. Formato do SCHEDULE

5. Reiniciar AppServer

JOBs sao carregados na inicializacao. Restart do servico AppServer.

6. Validar execucao

Pegadinhas

Veja também