Le applicazioni aziendali sono in continua evoluzione e spesso, anche dopo la distribuzione, è necessario integrare nuove logiche. In alcuni casi, le applicazioni memorizzano le regole aziendali sotto forma di testo nel database o in un sistema di archiviazione ed eseguono tali regole in fase di esecuzione. Per aggiornarle, gli sviluppatori potrebbero dover eseguire codice che non era stato originariamente previsto durante lo sviluppo, specialmente in ambienti compilati o distribuiti. Con 4D.Method, 4D 21 R3 consente di creare ed eseguire metodi in modo dinamico a partire da testo, in modo sicuro ed efficiente.
Eseguire un metodo memorizzato in un file di testo
La classe 4D.Method consente di creare un metodo in modo dinamico a partire da testo. Ad esempio, se è necessario aggiornare gli attributi di Storage con nuovi valori mentre un’applicazione è già in esecuzione, è possibile definire la logica in un file BusinessRules.4dm contenente il codice richiesto:
// 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 quindi eseguire il codice contenuto in quel file utilizzando:
var $myFile:=File("/DATA/BusinessRules.4dm")
var $myMethod:=4D.Method.new($myFile.getText())
// Syntax errors verification
If ($myMethod.checkSyntax().success)
$myMethod.call()
End if
Indipendentemente da come viene eseguito il progetto, in modalità interpretata o compilata, il metodo generato viene eseguito in modalità interpretata.
Debug
Poiché il codice dinamico è interpretato, è possibile eseguire il debug proprio come un metodo di progetto classico, anche se l’applicazione è compilata. Se si verifica un errore durante l’esecuzione, è possibile aprire il debugger dalla finestra degli errori; inoltre, è possibile inserire un comando TRACE nel codice sorgente per attivare esplicitamente il debugger quando necessario:
// 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 l’esecuzione, il debugger si aprirà automaticamente:

Conclusione
4D.Method offre una vera flessibilità di runtime alle applicazioni, mantenendo la sicurezza e la struttura del linguaggio 4D. È possibile generare, convalidare, eseguire il debug ed eseguire la logica in modo dinamico, anche in ambienti compilati o distribuiti. Ciò apre la strada a una manutenzione più intelligente, a regole di business personalizzabili e ad applicazioni più adattive.
Al momento non è possibile lasciare commenti su questo post.