As aplicações empresariais estão em constante evolução e, muitas vezes, é necessária nova lógica mesmo após a implementação. Em alguns casos, as aplicações armazenam regras de negócio como texto na base de dados ou no armazenamento e executam-nas em tempo de execução. Para as atualizar, os programadores podem ter de executar código que não estava inicialmente previsto durante o desenvolvimento, especialmente em ambientes compilados ou implementados. Com o 4D.Method, o 4D 21 R3 permite-lhe criar e executar métodos dinamicamente a partir de texto, de forma segura e eficiente.
Executar um método armazenado num ficheiro de texto
A classe `4D.Method ` permite-lhe criar um método dinamicamente a partir de texto. Por exemplo, se precisar de atualizar atributos de armazenamento com novos valores enquanto uma aplicação já está em execução, pode definir a lógica num ficheiro `BusinessRules.4dm` contendo o código necessário:
// BusinessRules.4dm file
var $newBusinessRules:=New shared object
Use ($newBusinessRules)
$newBusinessRules.taxRate:=0.2
$newBusinessRules.discountFormula:="price * quantity * discountRate"
$newBusinessRules.approvalThreshold:=10000
$newBusinessRules.freeShippingThreshold:=150
$newBusinessRules.defaultCurrency:="EUR"
End use
Use (Storage)
Storage.businessRules:=$newBusinessRules
End use
e, em seguida, executar o código contido nesse ficheiro utilizando:
var $myFile:=File("/DATA/BusinessRules.4dm")
var $myMethod:=4D.Method.new($myFile.getText())
// Syntax errors verification
If ($myMethod.checkSyntax().success)
$myMethod.call()
End if
Independentemente de como o seu projeto está a ser executado, seja interpretado ou compilado, o método gerado é executado no modo interpretado.
Depuração
Como o código dinâmico é interpretado, pode depurá-lo tal como um método de projeto clássico, mesmo que a sua aplicação esteja compilada. Se ocorrer um erro durante a execução, o depurador pode ser aberto a partir da janela de erros, e também pode inserir um comando TRACE no código-fonte para acionar explicitamente o depurador quando necessário:
// BusinessRules.4dm file
var $newBusinessRules:=New shared object
Use ($newBusinessRules)
$newBusinessRules.taxRate:=0.2
$newBusinessRules.discountFormula:="price * quantity * discountRate"
$newBusinessRules.approvalThreshold:=10000
$newBusinessRules.freeShippingThreshold:=150
$newBusinessRules.defaultCurrency:="EUR"
End use
TRACE
Use (Storage)
Storage.businessRules:=$newBusinessRules
End use
Durante a execução, o depurador abrirá automaticamente:

Conclusão
4D. OMethod traz verdadeira flexibilidade de tempo de execução às suas aplicações, mantendo a segurança e a estrutura da linguagem 4D. Pode gerar, validar, depurar e executar lógica dinamicamente, mesmo em ambientes compilados ou implementados. Isto abre as portas para uma manutenção mais inteligente, regras de negócio personalizáveis e aplicações mais adaptáveis.
De momento, não é possível deixar comentários nesta publicação.