最近のアクセス:
GAM の匿名ユーザーの自動登録 - SD の使用例

ここでは、図書館の利用者向けのアプリケーションを開発するために、匿名ユーザーの自動登録を使用する例について説明します。
アプリケーションの主な機能には、さまざまな基準での蔵書の表示 (出版日、著者など)、各種リストの記録の保持 (お気に入り、読み終わった本、読みたい本)、さまざまな通知の受信、本の購入などがあります。また、読書習慣や嗜好などに関する統計情報などを参照して報告するために、ユーザープロファイル情報の取得も行います。
最初にユーザー登録が必要なアプリケーションはユーザーに使われない場合があるため、完全な匿名 (登録なし) で、すべての機能を最大限利用できるよう、設計しました。ユーザーが登録する必要があるのは、実際に購入する場合などの、登録が確実に必要なときだけです。
このような、最大限の範囲で匿名ユーザーを許可する設計ガイドラインを実現するには、多数の技術的な課題があります。たとえば、月々のニュースを未登録のユーザーが購読するにはどうしたらよいでしょうか。また、何を、または誰をサブスクライバーとして見なせばよいでしょうか。
次の例は、アプリケーションが必要に応じて GeneXus Access Manager ユーザーの識別子にアクセスできることを前提としています。匿名ユーザーの自動登録を使用することによって、これを実現できます。

ソリューションの開発

アプリケーションのメインオブジェクトは、[ Main program ] プロパティ の値が True に設定されたダッシュボードです。ここで、アプリケーション内の各オブジェクトを呼び出すための複数の Action アイテムが定義されます。
また、ユーザーを書籍に関連付け、その書籍のニュースやレビューなどを受け取れるようにする、次のような Transaction オブジェクトがあります。
イメージ:19827.png
トランザクション内で、ユーザーが GAMGUID タイプの GAMUserGUID 項目属性として識別されることに注意してください。
ユーザーが書籍の好みを選択できる SD Panel オブジェクトがあります。これは、データプロバイダーの呼び出しによってロードされるグリッドを含む、SubscribeNovel オブジェクトです。この例では、グリッドから選択される各行に対して Subscribe イベントが呼び出されます。この行で REST Web サービスが呼び出され、サブスクリプション (前述のトランザクションと関連付けられたテーブル内のエントリ) が実行されます。
イメージ:19828.png
SubscribeNovel SD パネルは、次に示すように、アプリケーションのメインメニュー (Dashboard1 オブジェクト) から呼び出されます:
イメージ:19829.png
ダッシュボードオブジェクト内の [ Auto-register Anonymous User ] プロパティの値が True であるため、ダッシュボード内のさまざまなオプション、およびそのようなオプションの呼び出しツリー内のオブジェクトへの匿名ユーザーのアクセスが許可されます。
また、ダッシュボードには、非匿名ユーザーのみが実行できるアクションを匿名ユーザーが実行する場合のために、ログインオプションが含まれています。
自動登録されたユーザーが SubscribeNovel オプションにアクセスするときに、そのユーザーに割り当てられた GUID を使用して、ユーザー用のレコードが GAM のユーザーテーブルに作成されます。
匿名ユーザーが SubscribeNovel SD パネル上で選択した書籍の好みは、その匿名ユーザーに割り当てられた GUID に基づいた Subscriptions テーブルに記録されます。
GAM での登録時 (GAM Registration) に、匿名ユーザーと同じ GUID が登録ユーザーに適用されます。これにより、前のユーザーが入力した情報が、このユーザーのものと見なされます。
つまり、ログイン中のユーザーのサブスクリプションに関するクエリが含まれる SD パネルの場合、登録前に匿名ユーザーが申告した書籍の好みが、登録したユーザーに表示されます。
ユーザーサブスクリプションの表示方法については、以下を参照してください。
MySubscriptions という名前の、次のような SD パネルがあるとします。ここで、ログイン中のユーザーのサブスクリプションがグリッド上に呼び出されます。
イメージ:19830.png
このグリッドに、 [ Data Selector ] プロパティ内に関連付けられた Authorized 値があることに注意してください。これは、ログイン中のユーザーのみをフィルタリングするための条件が格納されたデータセレクターです (下図を参照)。
GAMUserGUID = GetUser()
ここで GAMUserGUID は、グリッドの列の 1 つです (この項目属性でフィルタリングする対象)。
GetUser は、ログイン中のユーザーの GUID を返すプロシージャーです:
&GamuserGUID = GAMUser.GetId()
イメージ:19831.png

ログイン中のユーザーを特定するには、さまざまな方法があります (「GAM API を使用して GAM ユーザーを参照する方法」を参照してください)。ユーザーが匿名でアクセスする可能性を考慮すると、最適な方法はユーザーの GUID を取得することです。



サブページ
Created: 15/01/07 22:46 by Admin Last update: 24/04/02 23:02 by Admin
カテゴリ
Powered by GXwiki 3.0