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 プロパティは、ユーザーのマシンに固有のものです。
ストレージ共有オブジェクト
Session コマンドによって Null 値が返されることを想定する必要がないため、サーバー側専用のルーチンを記述する必要がなくなり、ほとんどの場合、コーディングが簡略化されます。
唯一の例外は、共有ストレージオブジェクトです。
4D クライアントから Session コマンドを呼び出すと、4D クライアントにローカルな共有 storage オブジェクトを提供します。これは、4D サーバー上のリモートユーザーセッションの共有ストレージオブジェクトと同じ参照ではありません。
サーバー側のルーチンにのみ関連するセッション情報(現在のユーザーに基づくデータアクセスの制限など)を保存する必要がある場合は、適切なSessionをターゲットにするために、サーバー上でこのコードを実行する必要があります。storage共有オブジェクト。
今すぐ 4D セッションを使い始め、コンテキスト情報やユーザー固有の情報をメモリ内に簡単に一元化し、前述の利点を最大限に活用してください。
現在、この投稿へのコメント機能は利用できません。