FwTransaction
Controle transacional explicito TLPP. Garante atomicidade em operacoes multi-tabela. Substitui Begin Transaction/End.
Assinatura: FwTransaction():begin() / :commit() / :rollback()
Retorna: FwTransaction
Transacoes em TLPP via classe — mais ergonomico que Begin Transaction/End. Suporta savepoints.
Local oTx := FwTransaction():begin()
try
U_GravaPedido()
U_GravaTitulo()
U_AtualizaEstoque()
oTx:commit()
catch e
oTx:rollback()
FwLogger():Error("Tx falhou: " + e:getDescription())
endtry
Savepoints (transacao aninhada)
oTx := FwTransaction():begin()
oTx:savepoint("antes-itens")
try
U_GravaItens()
catch e
oTx:rollbackTo("antes-itens") // so reverte os itens
// cabecalho continua
endtry
oTx:commit()
Pegadinhas
- Esquecer commit/rollback = transacao "aberta", bloqueia recursos.
- Use try/finally pra garantir cleanup.