← ClaudeAtlas

advpl-jobs-rpclisted

JOBs e RPC no Protheus — Main Function, RpcSetType(3)+RpcSetEnv(emp,fil,user,pwd,env,modulo), PREPARE/END ENVIRONMENT, StartJob, MsRunInThread, scheduler via appserver.ini. Funções proibidas em JOB (MsgInfo, Pergunte, Help, FwAlertHelp). FwLogMsg para log estruturado. Use ao trabalhar com processo agendado, integração batch ou RPC.
JoniPraia/plugadvpl · ★ 12 · API & Backend · score 66
Install: claude install-skill JoniPraia/plugadvpl
# advpl-jobs-rpc — Execução headless no Protheus Quando o Protheus precisa executar código **sem usuário humano logado** (cron-like jobs, scheduler, integrações batch, RPC chamado por sistema externo), o entrypoint não é `User Function` — é **`Main Function`** disparada via configuração do `appserver.ini` ou via `StartJob`/`CallProc`/`MsRunInThread`. Diferenças fundamentais para fluxo de UI: - **Não há `cFilAnt`/`cEmpAnt` preenchidos** — você abre o ambiente explicitamente com `RpcSetEnv`. - **Não pode chamar UI** (`MsgInfo`, `Aviso`, `Help`, `FwAlertHelp`, `MsgBox`, `Pergunte`) — trava o JOB para sempre esperando interação inexistente. - **Erros precisam ser logados em arquivo/ConOut/FwLogMsg**, não em diálogo modal. - **Em REST, `RpcSetEnv` é proibido** (veja `[[advpl-webservice]]` — SEC-001 impl). Em JOB, é mandatório. ## Quando usar - Edit/criação de fonte com `Main Function`. - Usuário menciona "JOB", "scheduler", "agendamento", "rotina batch", "integração em background", "thread", "RPC". - Aparece `RpcSetEnv`, `PrepareIn`, `StartJob`, `CallProc`, `MsRunInThread`, `Sleep`, `FwSchedExec` em fonte. - Investigação de "rotina rodou mas não fez nada" (provavelmente travada em `MsgInfo`/`Pergunte`). ## Estrutura mínima de JOB ```advpl #include "TOTVS.CH" /*/{Protheus.doc} XYZJob JOB de integracao de pedidos diaria. Disparado por scheduler do appserver.ini. @type function @author Equipe XYZ @since 2026-05-12 @param cEmp, character, empresa (default 01) @param cFil, cha