最近のアクセス:
GXflow と GAM を使用したマルチテナントアプリケーションのシナリオ

ここでは、GXflow と GAM を使用するマルチテナントアプリケーションのシナリオのソリューションを示します。この場合のアプリケーションは、アプリケーション内のすべてのテナントについて、システムと GAM のテーブルを含む同じデータベースを使用して、同じ Web アプリケーションにもデプロイされます。

アーキテクチャ

GXflow では、すべてのテナントが同じデータベースを共有するマルチテナントのスキーマがサポートされていないため、このようなシナリオには次のアーキテクチャをお勧めします:
  • システムおよび GAM に対応するテーブルを含むデータベースがある。
  • 各テナントに GXflow データベースが必要。
  • アプリケーションのバイナリが同じ Web アプリケーションにデプロイされている、つまりアプリケーション、GAM、GXflow のバイナリが同じ Web アプリケーションで実行される。

注:

  • このシナリオでは、GXflow のライセンスを Protection Server でセットアップし、管理を一元化することをお勧めします。
  • このシナリオでは、SQL 文のキャッシュは使用できません。
 

開発環境の設定

開発環境の設定手順を次に示します。
  1. GAM をアクティベートし、アプリケーションと GAM のテーブルを含むデータベースを作成します。
  2. connection.gam を変更し、複数のリポジトリを作成できるようにします。
    1. [ ツール ] > [ GeneXus Access Manager ] > [ 接続ファイルを更新 ] の順に選択し、ユーザー gamadmin でログインして、両方のリポジトリを選択します。(このシナリオでの GAM の詳細な設定方法については、次を参照してください: Multiple Repositories Scenario: The same application installation is shared by many companies)
    2. これにより、ユーザー gamadmin でアクセスし、各テナントに新しいリポジトリを作成できるようになります。
  3. GXflow データストアを作成し、既定のデータストアとは異なるデータベース名を指定します。
  4. いくつかのプロセスダイアグラムを作成し、ナレッジベースで GXflow を有効にします。
  5. 環境プロパティで、 [ Deploy business processes on build ] プロパティに値 No を設定します。
  6. BPDeployer ツールで作成されたプロセスをエクスポートします。
  7. BPDeployer ツールを実行し、エクスポートされたプロセスをインポートします。このツールは、エクスポートされたプロセスに影響を与えるだけでなく、データベースと GXflow のテーブルが初めて作成されます。
  8. Before Connect イベントを関連付けるためにプロシージャーを作成する必要があります。Before Connect イベントでは、セッションに関する情報が読み取られて会社が定義され、それに基づいて、会社に対応する GXflow データベースの名前を判断するロジックを取得します。
     
    1. このプロシージャーを作成する方法の例を次に示します。セッション変数「CompanyId」がシステムのログイン画面で事前に設定され、GXflow データベースの名前が会社ごとにパラメーター化されていることを想定しています。
    2. &CompanyId = val(&Session.Get('CompanyId'))
      
      For Each
      Where CompanyId = &CompanyId
            &Database = CompanyDatabaseName
      Endfor
      
      If not &Database.IsEmpty()
         &dbconn = GetDatastore('GXflow')
         &dbconn.ConnectionData = 'DATABASE=' + &Database.Trim()
      Endif
  9. GAM と GXflow の間で IDE によって行われる自動同期は無効にすることをお勧めします。そのためには、ナレッジベースのルートディレクトリーに config.gx ファイルを作成し、内容を DisableGamRolesSync= True とする必要があります。
  10. client.exe.config ファイルを編集し、新しいデータベースを参照するように GXflow データストアの情報を設定します。
  11. コマンドラインで、手順 1 で作成したリポジトリの名前をパラメーターとして渡して apwfinitializegam.exe プログラムを実行します。この操作により、GAM 内で、GXflow のロール、権限、イベントへのサブスクリプションが開始されます。

プロセスに対する変更の影響

プロセスレベルで変更を加える場合は、次の操作が必要です:

1.     [ ツール ] > [ ワークフロー ] > [ ビジネス プロセス デプロイ ファイルを作成 ] の順に選択してエクスポートするプロセスを選択し、変更内容のエクスポートを作成します。このとき、IDE で定義されているロールの情報も取得されます。
2.    Business Process Deployer ツールを使用して、GXflow ベースに接続し、前の手順で生成されたファイルをインポートします。
3.    新しいロールを GAM と同期するには、次の操作が必要です:
1.    client.exe.config ファイルを編集し、GXflow データベースを参照するように GXflow データストアの情報を設定します。
2.    コマンドラインで、同期する GAM のリポジトリの名前をパラメーターとして渡して apwfmigraterolestogam.exe プログラムを実行します。

新しいテナントを追加するプロセス

次の手順は、システムに新しいテナントを追加するために GAM 側と GXflow で行う必要がある操作を示しています:
  1. GAM で新しいリポジトリを作成します。
  2. BPDeployer ツールを使用して、新しいテナントに対応するプロセスをエクスポートします。
  3. BPDeployer ツールを使用して、手順 2 で生成されたファイルを選択します。
    1. BPDeployer ツールは、データベースや GXflow のテーブルが存在しなければ、初回にそれらを作成します。GXflow のテーブル内のプロセスやロールにも影響があります。
  4. client.exe.config ファイルを編集し、新しい GXflow データベースを参照するように GXflow データストアの情報を設定します。
  5. コマンドラインで、手順 1 で作成したリポジトリの名前をパラメーターとして渡して apwfinitializegam.exe プログラムを実行します。
  6. コマンドラインで、手順 1 で作成したリポジトリの名前をパラメーターとして渡して apwfmigraterolestogam.exe プログラムを実行し、GXflow で定義されたロールを GAM リポジトリと同期します。
  7. GXflow ライセンスマネージャの Web にアクセスし、ライセンスを設定します。
  8. 上記の手順に従い、プロセスに含めるユーザーの作成を開始し、プロセスの通常のロールに加えて、GXflow Public ロールを割り当てることができます。
 

 


サブページ
Created: 20/04/27 03:34 by Admin Last update: 21/05/20 18:58 by Admin
カテゴリ
Powered by GXwiki 3.0