4Dセッションを活用して、クライアントサーバーアプリケーションにおけるエンドユーザーの体験を向上させましょう。ユーザーがデスクトップクライアントアプリケーションを開くと同時に、ネイティブかつ自動的に作成される4Dセッションは、多くのメリットを提供します。
最大のメリットは何でしょうか? それは、カレントユーザーに基づいて、データアクセスを簡単に制限できる点です。
4Dセッションの利用を開始するために特別な設定は不要で、追加のライセンス費用もかかりません。4D 21 R3 では、クライアントサーバーモードにおける4Dセッションの機能がさらに強化されました。
これらの改善点について、ぜひ続きをお読みください!
リモートユーザーセッション
4D クライアントが 4D Server にデプロイされているアプリケーションに接続すると、サーバー上にリモートユーザーセッションが作成されます。セッションは、名前、会社名、ワークフローにおけるユーザーの現在の進捗状況など、コンテキスト情報やユーザー固有の情報をメモリに保存するのに最適です。
サーバー上には複数のセッションが共存し、各ユーザーはそれぞれ専用のセッションを持ちます。
さらに、4D 21 では、ORDA イベント のフルセットが 導入されました。これらのイベントは常にサーバー上でトリガーされます。イベントがユーザーコンテキストへのアクセスを必要とする場合、4Dセッションは最適なソリューションとなります。特に、カレントユーザーに基づいてデータアクセスを制限する場合には非常に有効です。
Sessionコマンドの新機能
コード内で Session コマンドを呼び出すと、リモートユーザーセッション情報がオブジェクトとして返されます。
4D 21 R3 以前では、4Dクライアント上で Session コマンドを呼び出すと Null が返されていたため、この処理をサーバー側(専用のプロジェクトメソッドまたは ORDAクラスの関数内)でおこなう必要がありました。
4D 21 R3 では、Session コマンドを 4Dクライアントから直接呼び出すことも可能になりました。
これにより、コードの構成と可読性の両方が向上します。開発中に、「コードはどこで実行されるのか」といったことを気にする必要はなくなりました。
例題
4Dクライアント上で実行されるコード:
var $session : 4D.Session
ASSERT(Application type()=4D Remote mode)
$session:=Session
返される $session オブジェクトは以下のようになります:
{
"storage": {},
"userName": "Designer",
"id": "607BC064662C4563B3521E162E8DFB5A",
"info": {
"ID": "607BC064662C4563B3521E162E8DFB5A",
"creationDateTime": "2026-03-12T09:50:45Z",
"userName": "Designer",
"state": "active",
"type": "remote",
"IPAddress": "localhost",
"systemUserName": "Marie-Sophie",
"hostType": "mac",
"machineName": "Mac mini 1743",
"persistentID": "97212B60A6294A24AC3BF829E2040888"
}
}
この info プロパティは、ユーザーのマシンに固有のものです。
storage共有オブジェクトについて
Session コマンドが Null を返す可能性を想定する必要がなくなり、サーバー専用のルーチンを記述する必要がなくなったため、ほとんどの場合にコーディングが簡略化されます。
唯一の例外は、storage共有オブジェクトです。
4Dクライアントから Session コマンドを呼び出すと、その 4Dクライアントにローカルな共有オブジェクト storage が提供されます。これは、4D Server上のリモートユーザーセッションが持つ storage 共有オブジェクトと同じ参照ではありません。
サーバーサイドのルーチンにのみ関連するセッション情報(カレントユーザーに基づくデータアクセスの制限など)を保存する必要がある場合は、適切な Session.storage 共有オブジェクトを対象とするために、依然としてそのコードをサーバー上で実行する必要があります。
コンテキスト情報やユーザー固有の情報をメモリ内で簡単に一元管理し、上記で説明したメリットを最大限に活用するために、ぜひ今日から 4Dセッションを使い始めてください。
現在、この投稿へのコメント機能は利用できません。