4D 20 R9 では、Webエリアの $4dオブジェクトに対してコンテキストを定義し、機能を限定して公開できるようにする新しいコマンドが導入されました。以前は、$4d を使用することは、Webエリアに 4D のメソッドを公開することと同義でしたが、今後は代わりにクラス関数を定義して使用することができます。この改善により、4D機能を Webエリアに統合する場合の機能の整理、カプセル化、セキュリティの向上が実現できます。
WA SET CONTEXT により特定メソッドにアクセスを限定
新しい WA SET CONTEXT コマンドを使用して、$4d での使用を許可する関数のみを格納するオブジェクトを設定できます。
たとえば、Webエリアのコンテキストを次のように設定します:
var $myWAObject:=cs.WAFunctions.new()
WA SET CONTEXT ( * ; "MyWebArea"; $myWAObject)
WAFunctions クラスに設定されている関数は次のとおりです:
Function next()
// 何らかのコード
Function previous()
// 何らかのコード
Function current()
// 何らかのコード
すると、”MyWebArea” の Webエリアで使用可能な $4d JavaScript関数は次のものに限られます:
- $4d.next()
- $4d.previous()
- $4d.current()
同様に、既存のプロジェクトメソッドの使用を許可するには、それらをオブジェクトにカプセル化し、WA SET CONTEXT コマンドに渡します:
var $context:={}
$context.myNextMethod:=Formula(myNextMethod)
$context.myPreviousMethod:=Formula(myPreviousMethod)
$context.myCurrentMethod:=Formula(myCurrentMethod)
WA SET CONTEXT(*; "myWebArea"; $context)
すると、”MyWebArea” の Webエリアで使用可能な $4d javascript関数は次のとおりになります:
- $4d.myNextMethod()
- $4d.myPreviousMethod()
- $4d.myCurrentMethod()
Webページは以前と変わらずに実行されますが、呼び出せるのはこの 3つのメソッドだけになります。
まとめ
この新しいコマンドにより、Webエリアで $4d がどのように動作するかを、よりよくコントロールできるようになりました。選択した機能にアクセスを限定できるようになり、アプリをよりセキュアで整理されたものにすることができます。さらに、$4d でクラス関数を使用することで、コードをすっきりさせ、管理しやすくなります。
詳細については公式ドキュメントを参照ください。
