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

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