ビジネスアプリケーションは絶えず進化しており、デプロイ後も新たなロジックが必要になることがよくあります。場合によっては、アプリケーションがビジネスルールをデータベースやストレージにテキストとして保存し、実行時にそれらを実行することもあります。これらを更新するには、特にコンパイル済みまたはデプロイ済みの環境において、開発時に当初予定されていなかったコードを実行する必要が生じる場合があります。4D 21 R3では、4D.Method を使用することで、テキストからメソッドを動的に作成・実行することが、安全かつ効率的に可能になります。
テキストファイルに保存されたメソッドの実行
4D.Methodクラスを使用すると、テキストから動的にメソッドを作成できます。たとえば、アプリケーションの実行中にStorageの属性を新しい値で更新する必要がある場合、必要なコードを含むBusinessRules.4dmファイルにロジックを定義し、
// 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
そして、次のコードを使用してそのファイル内のコードを実行します:
var $myFile:=File("/DATA/BusinessRules.4dm")
var $myMethod:=4D.Method.new($myFile.getText())
// Syntax errors verification
If ($myMethod.checkSyntax().success)
$myMethod.call()
End if
プロジェクトがインタプリタモードで実行されているかコンパイル済みであるかにかかわらず、生成されたメソッドはインタプリタモードで実行されます。
デバッグ
動的コードはインタプリタで実行されるため、アプリケーションがコンパイル済みであっても、従来のプロジェクトメソッドと同様にデバッグできます。実行中にエラーが発生した場合は、エラーウィンドウからデバッガを開くことができます。また、必要に応じてソースに `TRACE ` コマンドを挿入し、明示的にデバッガを起動することも可能です:
// 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
実行中にデバッガーが自動的に開きます:

まとめ
4DMethod は、4D言語の安全性と構造を維持しつつ、アプリケーションに真のランタイムの柔軟性をもたらします。コンパイル済みまたはデプロイ済みの環境であっても、ロジックを動的に生成、検証、デバッグ、実行できます。これにより、よりスマートなメンテナンス、カスタマイズ可能なビジネスルール、そしてより適応性の高いアプリケーションへの道が開かれます。
現在、この投稿へのコメント機能は利用できません。