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.
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.
Diversas funções do legado do Protheus deixam de ser estáticas no formato TLPP:
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.
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 |
Para publicar o modelo MVC em TLPP é necessário a atualização dos includes.