第7章

ユーザプロファイルの管理

この章では、ユーザプロファイルの管理方法について説明します。この章は、次の節で構成されています。

 
Top of page

ユーザプロファイルについて

Userサブシステムの目的は、Webアプリケーションユーザのプロファイル作成です。ユーザ「プロファイル」は、Webアプリケーションの個々のユーザに関連付けられたデータの持続的な集合です。ユーザプロファイル内の個々のデータ項目は、「属性」と呼ばれます。exteNd Directorアプリケーションは、属性を取得して、その情報をプロファイルに保存できます。後でこの情報を取得、処理、および分析を行うことができます。

For more information    詳細については、を参照してください。

 
Top of section

プロファイルの使用方法

通常、プロファイルは次の2つの目的で使用されます。

ポータルアプリケーションは、ユーザプロファイルの情報を使用して、特定のユーザに配信できる、または配信する必要があるコンテンツ、あるいは実行できる操作を決定します。

たとえば、小売りビジネスでは、次の情報を顧客プロファイルに含めることができます。

 
Top of page

プロファイルおよびレルムの設定

プロファイルは、使用しているレルムが非LDAPレルムかLDAPレルムかによって異なる方法で保存されます。次に、主な違いを示します。

非LDAPレルム

LDAPレルム

プロファイル情報は、アプリケーションデータベースに保存されます。アプリケーションデータベースには、ACLベースのセキュリティ情報も保存されます。

プロファイル情報は、LDAPディレクトリ内に保存され、アプリケーションデータベースは、ACLベースのセキュリティ情報の保存に使用されます。

プロファイルデータベースは、認証レルムとは独立して存在します。

プロファイル情報および認証情報は、同じユーザレコードに保存されます。

exteNd Directorアプリケーションは、JDBC持続性プロバイダを使用して、データベースにアクセスします。

exteNd Directorは、JNDI持続性プロバイダを使用して、LDAPディレクトリにアクセスします。

 
Top of section

レルム設定の確認

exteNd Directorでは、アプリケーションを再設定して、異なる認証レルムを使用することができます。このような柔軟な設定が必要な場合は、LDAPレルムおよび非LDAPレルムの両方で動作する一般的なコードを作成できます。

アプリケーションがLDAPレルム用に設定されているかどうかを確認するには、次のメソッドを使用します。

  EboUserHelper.getUserDataStore()

このメソッドは、UserサブシステムがJNDI(LDAPディレクトリ)またはJDBC(アプリケーションデータベース)のどちらを使用するかを示す文字列値を返します。

 
Top of section

書き込み可能レルムの確認

アプリケーションが書き込み可能レルム用に設定されているかどうかを確認するには、次のメソッドを使用します。

  EboUserHelper.isReadOnlyUserSchema() 

このメソッドは、Userサービススキーマが変更可能かどうかを示すブール値を返します。JDBCスキーマは、読み込み可能または書き込み可能にすることができますが、JNDIスキーマは、exteNd Director内では変更可能ではありません。

 
Top of page

新規ユーザポートレットについて

新規ユーザポートレットは、カスタムWebアプリケーションで使用されるコアポートレットの1つです。このポートレットを使用すると、ユーザが自身を書き込み可能レルムに追加して、新しい各ユーザのプロファイルを自動的に作成できます。

新規ユーザポートレットは、アプリケーションのテンプレートとして提供されます。新規ユーザポートレットをコピーしてカスタマイズしたり、新しいポートレットを設計することができます。

NewUserPortlet

新規ユーザポートレットは、次の処理を行います。

このポートレットのソースは、exteNdインストールディレクトリの次の場所にあります。Director/templates/TemplateResources/portal-core-resourceです。

 
Top of page

APIを使用したプロファイルへのアクセス

User APIは、プロファイルの作成、プロファイルの検索、およびユーザ固有の情報の保存と取得を行うためのメソッドを提供します。次に、ユーザプロファイルの主なクラスを示します。

Userサブシステムクラス

アクセスの提供先

EbiUserDelegate

ユーザプロファイルを作成したり、アクセスしたりするためのメソッド

EbiUserInfo

ユーザ属性

EbiUserQuery

属性およびその他の条件に基づいてユーザを問い合わせるためのメソッド

EboUserHelper

ユーザ情報にアクセスするための便利なメソッド

EboFactory

ユーザ委任および関連オブジェクトのインスタンスを生成するためのメソッド

DACを使用したプロファイルへのアクセス   DAC (Director Administration Console)を使用してユーザ属性にアクセスすることもできます。詳細については、を参照してください。

 
Top of section

新しいプロファイルの作成

次のコードは、新規ユーザポートレットがユーザプロファイルをどのように追加するかを示します。

  //
  // Get a profile delegate from the user service.
  //
  EbiUserDelegate userDelegate =  
      com.sssw.fw.usermgr.client.EboFactory.getUserDelegate();
  //
  // Instantiate an empty profile object for this user.
  //
  EbiUserInfo userInfo = (EbiUserInfo)userDelegate.createUserInfo();
  //
  // Add profile info (default attributes) for the user.
  //
  userInfo.setUserID(m_uid);
  userInfo.setUserFirstName(m_firstName);
  userInfo.setUserLastName(m_lastName);
  userInfo.setUserEmailAddress(m_email);
  userInfo.setUserAuthenticatedRealmName
      (dirService.getPrimaryRealmName());
  //
  // Add the new profile.
  //
  boolean status = userDelegate.createUser(context, userInfo);	 

 
Top of section

ユーザプロファイルの参照

User APIには、特定の条件に一致するユーザプロファイルのリストを取得するために実装できるユーザクエリおよびユーザメタデータクエリクラスがあります。

For more information    詳細については、『APIリファレンス』のEbiUserQueryおよびEbiJndiQueryを参照してください。

 
Top of section

ユーザプロファイルの取得

次のコードは、ユーザプロファイルを取得して表示する方法を示します。

  import com.sssw.fw.usermgr.api.*;
  import com.sssw.fw.usermgr.client.*;
  
  try {
      //
      // Get the user identifier.
      //
      String userUUID = EboUserHelper.getUserUUID(context);
      //
      // Get a user delegate object from the factory.
      //
      EbiUserDelegate userDelegate = EboFactory.getUserDelegate();
      //
      // Get a user info object.
      //
      EbiUserInfo userInfo =
          (EbiUserInfo)userDelegate.
              getUserInfoByUserUUID(context,userUUID);
      //
      // Get the registration info and add to output buffer.
      //
      sb.append("UserID:" + userInfo.getUserID() + "<br>");
      sb.append("UserUUID:" + userInfo.getUserUUID() + "<br>");
      sb.append("UserFirstName: " + 
          userInfo.getUserFirstName() + "<br>");
      sb.append("UserLastName: " + 
          userInfo.getUserLastName() + "<br>");
      sb.append("UserEmailAddress: " + 
          userInfo.getUserEmailAddress() + "<br>");
  }
  catch (EboFactoryException e) { sb.append( e.getMessage() ); }
  catch (EboSecurityException e) { sb.append( e.getMessage() ); }

 
Top of page

ルールおよびユーザプロファイル

プロファイルを広範囲で実装するアプリケーションを開発する場合、exteNd DirectorのRuleサブシステムを使用することをお勧めします。次の例では、ルールをどのようにユーザプロファイルに適用できるか説明します。

小売Webサイトで顧客の合計購入量を管理し、特別割引が発生するしきい値を指定するとします。次に、ルールを使用してこのようなアプリケーションを開発する方法を示します。

  1. 購入量を管理するためのユーザ属性、たとえば、AllPurchasesAmtを追加します。

  2. ルールエディタで、^属性名構文によってユーザプロファイルをチェックできる組み込みCheckWhiteboard条件を使用するルールを作成します。しきい値を入力し、「^しきい値」などのキー値を指定します。アクションのセクションに対して、ブール値または適切なコンテンツを返すことができます。

  3. コードは次のようにします。

 
Top of section

条件とアクションについて

UserサブシステムおよびContent Managementサブシステムと(コンテンツクエリアクションを介して)通信するには、exteNd Directorルールエンジンで条件とアクションを使用できます。つまり、次のようなパーソナライズルールを簡単に実装できます。

  If "UserAge" > 35
  AND "PortfolioTotal" > 30,000
  Then Select Investing Documents Level 3
  AND set "FinanceLevel" to "Gold"

exteNd Directorの使いやすいAPI、カスタムタグライブラリ、およびルールエンジンの条件とアクションを使用して、パーソナライズサービスをユーザに簡単に配信できます。

For more information    ルールについての詳細は、『ルールガイド』のルールの使用法に関する章を参照してください。



Copyright © 2004 Novell, Inc. All rights reserved. Copyright © 1997, 1998, 1999, 2000, 2001, 2002, 2003 SilverStream Software, LLC. All rights reserved.  more ...