Páginas filhas
  • Suporte a TLPP no Protheus

A lib passa a dar suporte a utilização de funções TLPP em menu, schedule, MVC entre demais situações a partir da lib 20240520.

O suporte total, com o devido aumento dos campos para nomes longos, será disponibilizado a partir do release 12.1.2410, permitindo também cadastrar nos dicionários nomes longos para suportar a namespace dos fontes TLPP.

01. O QUE MUDA?

No legado do Protheus, criamos funções estáticas que são executadas pela lib para criação de formulários MVC, opção da rotina, padronização do schedule, integração com o EAI etc.

Essas funções são sempre estáticas, como a menudef, viewdef, modeldef, integdef, browsedef, scheddef entre outras.

Com o TLPP, obrigatoriamente uma namespace precisa ser declarada no fonte e todas essas funções passam a ser function ou user function para customizações.

Exemplo:

xisto.prw
static function menudef()
local aRotina as array

aRotina := {}

aAdd(aRotina, { "Visualizar", "AxVisual", 0, 2 })

return aRotina
custom.meunamespace.minharotina.xisto.tlpp
namespace custom.meunamespace.minharotina

user function menudef() as array
local aRotina := {} as array

aAdd(aRotina, { "Visualizar", "AxVisual", 0, 2 })

return aRotina

Esse mesmo padrão deve ser adotado para todas as demais funções estáticas.

02. QUAIS FUNÇÕES DEIXAM DE SER ESTÁTICAS?

Diversas funções do legado do Protheus deixam de ser estáticas no formato TLPP:

  • MenuDef
  • ModelDef
  • ViewDef
  • SchedDef
  • IntegDef
  • BrowseDef
  • JsToAdvpl

03. O QUE POSSO FAZER EM TLPP AGORA?

O Protheus ganha compatibilidade quase total com TLPP, sendo possível criar rotinas de menu, MVC, schedule, FWCallApp, EAI.

A mudança não abrange API ADVPL REST ou SOAP.

04. COMO DEVO FAZER USO DAS FUNÇÔES DO MVC?

Como as funções estáticas não serão mais utilizadas, tudo é feito com base no namespace, portanto agora o valor enviado sempre será o namespace completo mais o nome da função principal.

Por exemplo, criei o namespace custom.financeiro.naturezas e minha função se chama crudmvc, devo enviar o valor completo para as funções FWLoadModel, FWLoadView, FWLoadMenuDef, exemplo:

FWLoadModel("custom.financeiro.naturezas.crudmvc")

O mesmo se aplica ao menudef do MVC, onde informamos a rotina após o viewdef., exemplo:

Add Option aRotina Title "Incluir" Action "ViewDef.custom.meunamespace.minharotina.minhafuncaodemenu" Operation OP_INCLUIR Access 0 //Aqui, a função principal da rotina é a MinhaFuncaoDeMenu e o namespace é custom.meunamespace.minharotina

05. DEMAIS INFORMAÇÕES

Para publicar o modelo MVC em TLPP é necessário a atualização dos includes.

06. ASSUNTOS RELACIONADOS