| GXflow と GAM を使用したマルチテナントアプリケーションのシナリオ | |
ここでは、GXflow と GAM を使用するマルチテナントアプリケーションのシナリオのソリューションを示します。この場合のアプリケーションは、アプリケーション内のすべてのテナントについて、システムと GAM のテーブルを含む同じデータベースを使用して、同じ Web アプリケーションにもデプロイされます。
GXflow では、すべてのテナントが同じデータベースを共有するマルチテナントのスキーマがサポートされていないため、このようなシナリオには次のアーキテクチャをお勧めします:
- システムおよび GAM に対応するテーブルを含むデータベースがある。
- 各テナントに GXflow データベースが必要。
- アプリケーションのバイナリが同じ Web アプリケーションにデプロイされている、つまりアプリケーション、GAM、GXflow のバイナリが同じ Web アプリケーションで実行される。
- このシナリオでは、GXflow のライセンスを Protection Server でセットアップし、管理を一元化することをお勧めします。
- このシナリオでは、SQL 文のキャッシュは使用できません。
開発環境の設定手順を次に示します。
- GAM をアクティベートし、アプリケーションと GAM のテーブルを含むデータベースを作成します。
- connection.gam を変更し、複数のリポジトリを作成できるようにします。
- [ ツール ] > [ GeneXus Access Manager ] > [ 接続ファイルを更新 ] の順に選択し、ユーザー gamadmin でログインして、両方のリポジトリを選択します。(このシナリオでの GAM の詳細な設定方法については、次を参照してください: Multiple Repositories Scenario: The same application installation is shared by many companies)
- これにより、ユーザー gamadmin でアクセスし、各テナントに新しいリポジトリを作成できるようになります。
- GXflow データストアを作成し、既定のデータストアとは異なるデータベース名を指定します。
- いくつかのプロセスダイアグラムを作成し、ナレッジベースで GXflow を有効にします。
- 環境プロパティで、 [ Deploy business processes on build ] プロパティに値 No を設定します。
- BPDeployer ツールで作成されたプロセスをエクスポートします。
- BPDeployer ツールを実行し、エクスポートされたプロセスをインポートします。このツールは、エクスポートされたプロセスに影響を与えるだけでなく、データベースと GXflow のテーブルが初めて作成されます。
- Before Connect イベントを関連付けるためにプロシージャーを作成する必要があります。Before Connect イベントでは、セッションに関する情報が読み取られて会社が定義され、それに基づいて、会社に対応する GXflow データベースの名前を判断するロジックを取得します。
- このプロシージャーを作成する方法の例を次に示します。セッション変数「CompanyId」がシステムのログイン画面で事前に設定され、GXflow データベースの名前が会社ごとにパラメーター化されていることを想定しています。
-
&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
- GAM と GXflow の間で IDE によって行われる自動同期は無効にすることをお勧めします。そのためには、ナレッジベースのルートディレクトリーに config.gx ファイルを作成し、内容を DisableGamRolesSync= True とする必要があります。
- client.exe.config ファイルを編集し、新しいデータベースを参照するように GXflow データストアの情報を設定します。
- コマンドラインで、手順 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 で行う必要がある操作を示しています:
- GAM で新しいリポジトリを作成します。
- BPDeployer ツールを使用して、新しいテナントに対応するプロセスをエクスポートします。
- BPDeployer ツールを使用して、手順 2 で生成されたファイルを選択します。
- BPDeployer ツールは、データベースや GXflow のテーブルが存在しなければ、初回にそれらを作成します。GXflow のテーブル内のプロセスやロールにも影響があります。
- client.exe.config ファイルを編集し、新しい GXflow データベースを参照するように GXflow データストアの情報を設定します。
- コマンドラインで、手順 1 で作成したリポジトリの名前をパラメーターとして渡して apwfinitializegam.exe プログラムを実行します。
- コマンドラインで、手順 1 で作成したリポジトリの名前をパラメーターとして渡して apwfmigraterolestogam.exe プログラムを実行し、GXflow で定義されたロールを GAM リポジトリと同期します。
- GXflow ライセンスマネージャの Web にアクセスし、ライセンスを設定します。
- 上記の手順に従い、プロセスに含めるユーザーの作成を開始し、プロセスの通常のロールに加えて、GXflow Public ロールを割り当てることができます。
|
|
|
|
|