表示: Delphi C++
表示設定

サンプル RAD サーバー マルチテナント アプリケーション

提供: RAD Studio
移動: 案内, 検索

RAD サーバー のマルチテナント サポート への移動


このサンプル アプリケーションは、RAD サーバーにおけるマルチテナント サポートをデモンストレーションします。

InterBase がマシンにインストールされているか、リモート サーバーに接続することが必要です。サンプル アプリケーションを実行する前に、サーバーを実行することを確認してください。

マルチテナント サポートにより、RAD Server データベース接続が 1つであるインスタンス 1 つで、複数の独立したテナントをサポートできるようになりました。 各テナントは、RAD Server リソースの一意のセット(ユーザー、グループ、インストール、エッジ モジュール、その他データ)を保有します。 テナントはすべて、EMS Server にインストールされたカスタム リソースを持ちます。 また、管理者として、新しいテナントの作成、既存のテナントの編集、テナントの詳細の追加、編集、削除、そのテナントがアクティブかどうかの指定、必要なくなった際のテナントの削除などが行えます。

場所

RAD サーバー マルチテナント サンプル プロジェクトは次の場所にあります:

概要

このサンプル アプリケーションは、RAD サーバーのマルチテナント サポートをデモンストレーションします。RAD サーバーは、サービス ベースのアプリケーションを迅速に構築および配置するための、turn-key アプリケーション基盤です。 RAD サーバー により、開発者は迅速に、新たにアプリケーション バックエンドを構築したり、既存の Delphi または C++ のクライアント/サーバー ビジネス ロジックを、オープンでステートレス、そしてセキュアでスケーラブルは、現代のサービス ベースのアプリケーションに移行することができます。

RAD サーバー データベース接続が 1つである RAD サーバー インスタンス 1 つで、複数の独立したテナントをサポートできるようになりました。

このデモでは、RAD サーバーのマルチテナント サポートを強調するために、トイ ストアのチェーンを使用しており、社員と商品を持つ各ストアは、テナントの実装となっています。

RAD サーバー マルチテナント アプリケーションの利用

このサンプル アプリケーションは、小売りストアの配置のユースケースを示します。 社員と商品を持つ各ストアは、テナントとして実装されます。

Employee

異なる権限を持つユーザーのグループが 2 つあります:

  • Manager
  • Cashier

Manager は、新しいストア アイテムの追加、それらの削除、そして、既存のアイテムの詳細の編集ができ、Cashier は、既存の商品の情報の参照のみができます。いずれの Employee も、チェーン内の他のストアについての情報は見ることができません。  

説明

それでは、サンプル アプリケーションを見てみましょう。

[Store Log in]ページ

ストア固有の情報にアクセスするには、次の情報を Store Log in ページに入力します。

  • Toy Store: リストから必要なストアを選択します。各ストアはテナント実装です。
  • Store password: パスワードを入力します。

ヒント: 認証情報はサンプル アプリケーションと提供されている Readme.txt ファイルにあります。

Multitenant sample01.png

[Employee Log in]ページ

Employee Log in ページで、各社員は次を入力します:

  • Employee のログイン名
  • Employee のパスワード

ヒント: 認証情報はサンプル アプリケーションと提供されている Readme.txt ファイルにあります。

Multitenant sample02.png

[Store Items]ページ

ログインした後、各社員はストア アイテムの画面を参照します。画面は 2 つの異なるモード --- 編集、または、参照のみ --- で表示され、アクセスはその社員のポジションによって変わります。これは、EMS グループ(RAD サーバーの機能)を使用して、アクセス権限を定義します。

  • Manager は、ストア アイテムの参照、追加、削除、そしてその詳細の編集を行うことができます。
  • Cashier は、アイテムの詳細のみを参照することができます。
Manager の場合のストア アイテム Cashier の場合のストア アイテム
Managers John1.png Cashiers Tina.png

実装

EMS パッケージ

初期化では、EMS パッケージはスクリプトを実行して、テナントのためのテンプレート データを作成します。

EMS パッケージには、次の名前の 2 つのリソースが含まれています:“settings” および “items”。これらは SettingsDataModule.pas および StoreDataModule.pas のファイルにあります。

  • “settings” リソースでは GET メソッドを提供します。このメソッドは、Toy Store Chain のストアのリストを返します。“settings” リソースでは、EMS クライアントから TenantId および TenantSecret を提供する必要はありません。なぜなら、テナント検証の手順をスキップする AllowAnonymousTenant 属性を持っているからです。
  • “items” リソースは、ストア アイテムを管理します。このリソースでは、GET および POST メソッドを定義します。ストア アイテムは、開発者が用意した TenantId によってフィルタがかけられます。GetData メソッドを使用して、AContext.Tenant.ID を介してテナント ID にアクセスすることで、テナントは、データにフィルタをかけます。

マルチテナント クライアント

マルチテナント クライアント アプリケーションには、次の 3 つの TabItems があります:

  1. 最初の画面では、ストアを選択して、関連するパスワードを入力する必要があります。
  2. 2 番目の画面では、選択されたストア(テナント)の、ユーザー名とパスワードを入力する必要があります。
  3. 3 番目の画面では、ストア アイテムを表示させ、ユーザー権限(Manager または Cashier)によっては、それらを編集することができます。

TEMSProvider コンポーネント

クライアント アプリケーションには、TEMSProvider コンポーネントがあります。このコンポーネントは、EMS サーバーのアドレスを識別します(http://localhost:8080)。ユーザーが、特定のストア(テナント)を選択すると、テナントの認証情報が TEMSProvider から提供されます。以降、さらなるリクエストにはそれぞれテナント情報が格納され、ユーザーが参照するデータは、選択されたテナントに応じでフィルタがかけられます。

関連項目

個人用ツール
他言語版
以前のバージョン
Assistance