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:
static function menudef() local aRotina as array aRotina := {} aAdd(aRotina, { "Visualizar", "AxVisual", 0, 2 }) return aRotina
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