Subir um JOB real com agendamento

Como configurar e subir um JOB Protheus em ambiente real: appserver.ini, RpcSetType, multifilial, schedule da TOTVS.

JOB e a forma de rodar batch sem usuario na frente. Dois caminhos: configurar no appserver.ini (sobe junto com AppServer) ou agendar via Schedule do Configurador (mais flexivel, controle por UI).

1) Configurar JOB no appserver.ini

[FilaJob]
TYPE=USER
ENVIRONMENT=PRODUCAO
INSTANCES=1,1
PREPAREIN=99,01,SIGAFAT
ONSTART=__JobProc

[__JobProc]
MAIN=U_JOBPROC
ENVIRONMENT=PRODUCAO
INSTANCES=1,1
PREPAREIN=99,01,SIGAFAT

2) Codigo do JOB

User Function JOBPROC()
    // CRITICO: setar contexto antes de qualquer operacao
    RpcSetType(3)  // 3 = job sem licenca + sem cancel
    RpcSetEnv("99", "01", "admin", "senha", "FAT", "JOBPROC")

    Begin Sequence
        // Loop infinito que processa fila a cada N segundos
        While .T.
            U_ProcessaFila()
            Sleep(60000)   // 60s entre ciclos
        EndDo
    Recover
        ConOut("Erro no JOB: " + ErrorBlock())
    End Sequence

    RpcClearEnv()
Return

3) Schedule da TOTVS (mais flexivel)

No menu Configurador > Ambiente > Schedule > Agenda:

  1. Cadastre Servidor de Schedule (host:porta do AppServer)
  2. Cadastre Agentes (worker que executa)
  3. Cadastre Agendamento apontando User Function + horario + recorrencia

Multifilial — processar todas em loop

User Function JOBMulti()
    Local aEmpresas := FwLoadSM0()
    Local i
    RpcSetType(3)

    For i := 1 To Len(aEmpresas)
        RpcSetEnv( ;
            aEmpresas[i][1], ;     // empresa
            aEmpresas[i][2], ;     // filial
            "admin", "senha", "FAT", "JOB")

        U_ProcessaFilial()

        RpcClearEnv()
    Next
Return

Pegadinhas

Veja também