クライアント/サーバー接続とストアドプロシージャーに対応した新しい 4Dリモートセッションオブジェクト

4Dアプリケーションでは、4種類のセッションが存在します。4Dリモートセッション、ストアドプロシージャーセッション、モバイルセッションWebセッションです。

Sessionコマンドはいままで、Web または モバイルセッションを返しました。これにより、セッションに関する豊富な情報と、セッション内のすべてのプロセスで共有されるオブジェクトにアクセスできます。

4D 20 R5 では、Sessionコマンドの対象がクライアント/サーバー接続とストアドプロシージャーに拡張されました。

HDI: リモートセッションオブジェクト

4Dセッション

セッションタイプ

ストアドプロシージャーセッションとリモートセッションの定義は以下の通りです:

ストアドプロシージャーセッション

Execute on serverコマンドでメソッドを呼び出すと、4Dは “ストアドプロシージャー” プロセスを作成します。すべての “ストアドプロシージャー” プロセスは、ストアドプロシージャー専用の同じセッションに属します。

リモートセッション

“サーバー上で実行” プロパティを持つメソッドは、サーバー上でクライアントプロセスの “双子” プロセスで実行されます。これらの “双子” プロセスはすべて、同じセッション内で実行されます。

Sessionクラス

リモートセッションまたはストアドプロシージャーセッションに対して、Sessionコマンドは以下のプロパティを含む 4D.Sessionオブジェクトを返します:

  • id – セッションの一意な識別子
  • info – セッションに関するすべての情報。
  • storage – リモートセッションの全プロセスで利用可能な情報を格納するのに使用できる共有オブジェクト。
  • userName – セッションに関連付けられたユーザー名

 

Webセッションと同じ関数が、汎用的なコードを書くために利用可能です。しかし、リモートセッションではこれらは何もせず、常に同じ値を返します。Session クラスのドキュメントを参照ください。

{
    "id": "B022A91187EF46C6B4D58C2A9BDE3C91",
    "info":{
        "type": "remote",
        "userName": "Designer",
        "machineName": "John Computer",
        "systemUserName": "John Doe",
        "IPAddress": "localhost",
        "hostType": "mac",
        "creationDateTime": "2024-03-27T10:11:31Z",
        "state": "active",
        "ID": "B022A91187EF46C6B4D58C2A9BDE3C91",
        "persistentID": "24336199BADF4BFE945B109E565D1189"
    },
    "storage": {
        "settings": {
            "text": "test"
        }
    },
    "userName": "Designer"
}

プロセス間のデータ共有

新しいセッションが作成されると、”Session.storage” プロパティは空の共有オブジェクトでインスタンス化されます。そして、同じセッション内のプロセス間で共有したいデータを格納することができます。

Use (Session.storage)
 Session.storage.settings:=New shared object("property"; $value; "property2"; $value2)
End use

使用例

ユーザー認証および検証プロセス

クライアントがサーバーに接続するときに、ユーザー認証と検証の手順を起動します。これには、電子メールや SMS で送信されたコードをアプリケーションに入力するなどの操作が含まれるかもしれません。その後、セッションストレージにユーザー情報を追加することで、サーバーがユーザーを識別できるようにします。このようにして、4Dサーバーは、すべてのクライアントプロセスのユーザー情報にアクセスすることができ、ユーザーの役割 (マネージャー、人事など) に応じてカスタマイズされたコードを実行することができます。

データの制限

この新しいセッションタイプでは、接続ユーザーに対して表示するデータを制限することができます。たとえば、顧客管理アプリケーションで、営業担当者が自分の顧客データにのみアクセスできるようにします。この新機能に関するすべての情報は、このブログで説明されています。

最後に

ご質問がある場合、または経験や使用例を共有したい場合は、4Dフォーラムにお気軽にご参加ください。

Vanessa Talbot
- プロダクトオーナー - Vanessa Talbotは、2014年6月に4Dプログラムチームに参加しました。プロダクトオーナーとして、彼女はユーザーストーリー(ユーザーが期待する新機能とその使用法)を書き、それを具体的な機能仕様に変換する役割を担っています。また彼女の役割は、実装された機能が顧客のニーズを満たしているかどうかを確認することでもあります。入社以来、4Dにおける主要機能の定義に関わってきました。プリエンプティブ/マルチスレッドの新機能の大部分と、非常に複雑なテーマである組み込みアプリケーションの新アーキテクチャに取り組んできました。VanessaはTelecom Saint-Etienneで学位を取得後、Criminal Research Institute でオーディオビジュアル部門の開発者としてキャリアをスタートさせました。また、メディアや医療の分野でも、技術サポートやプロダクションの分野で働いてきました。