第7章
この章では、ユーザプロファイルの管理方法について説明します。この章は、次の節で構成されています。
Userサブシステムの目的は、Webアプリケーションユーザのプロファイル作成です。ユーザ「プロファイル」は、Webアプリケーションの個々のユーザに関連付けられたデータの持続的な集合です。ユーザプロファイル内の個々のデータ項目は、「属性」と呼ばれます。exteNd Directorアプリケーションは、属性を取得して、その情報をプロファイルに保存できます。後でこの情報を取得、処理、および分析を行うことができます。
通常、プロファイルは次の2つの目的で使用されます。
ポータルアプリケーションは、ユーザプロファイルの情報を使用して、特定のユーザに配信できる、または配信する必要があるコンテンツ、あるいは実行できる操作を決定します。
たとえば、小売りビジネスでは、次の情報を顧客プロファイルに含めることができます。
プロファイルは、使用しているレルムが非LDAPレルムかLDAPレルムかによって異なる方法で保存されます。次に、主な違いを示します。
exteNd Directorでは、アプリケーションを再設定して、異なる認証レルムを使用することができます。このような柔軟な設定が必要な場合は、LDAPレルムおよび非LDAPレルムの両方で動作する一般的なコードを作成できます。
アプリケーションがLDAPレルム用に設定されているかどうかを確認するには、次のメソッドを使用します。
EboUserHelper.getUserDataStore()
このメソッドは、UserサブシステムがJNDI(LDAPディレクトリ)またはJDBC(アプリケーションデータベース)のどちらを使用するかを示す文字列値を返します。
アプリケーションが書き込み可能レルム用に設定されているかどうかを確認するには、次のメソッドを使用します。
EboUserHelper.isReadOnlyUserSchema()
このメソッドは、Userサービススキーマが変更可能かどうかを示すブール値を返します。JDBCスキーマは、読み込み可能または書き込み可能にすることができますが、JNDIスキーマは、exteNd Director内では変更可能ではありません。
新規ユーザポートレットは、カスタムWebアプリケーションで使用されるコアポートレットの1つです。このポートレットを使用すると、ユーザが自身を書き込み可能レルムに追加して、新しい各ユーザのプロファイルを自動的に作成できます。
新規ユーザポートレットは、アプリケーションのテンプレートとして提供されます。新規ユーザポートレットをコピーしてカスタマイズしたり、新しいポートレットを設計することができます。
新規ユーザポートレットは、次の処理を行います。
このポートレットのソースは、exteNdインストールディレクトリの次の場所にあります。Director/templates/TemplateResources/portal-core-resourceです。
User APIは、プロファイルの作成、プロファイルの検索、およびユーザ固有の情報の保存と取得を行うためのメソッドを提供します。次に、ユーザプロファイルの主なクラスを示します。
Userサブシステムクラス |
アクセスの提供先 |
---|---|
ユーザプロファイルを作成したり、アクセスしたりするためのメソッド |
|
ユーザ属性 |
|
属性およびその他の条件に基づいてユーザを問い合わせるためのメソッド |
|
ユーザ情報にアクセスするための便利なメソッド |
|
ユーザ委任および関連オブジェクトのインスタンスを生成するためのメソッド |
DACを使用したプロファイルへのアクセス DAC (Director Administration Console)を使用してユーザ属性にアクセスすることもできます。詳細については、を参照してください。
次のコードは、新規ユーザポートレットがユーザプロファイルをどのように追加するかを示します。
// // 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);
User APIには、特定の条件に一致するユーザプロファイルのリストを取得するために実装できるユーザクエリおよびユーザメタデータクエリクラスがあります。
詳細については、『APIリファレンス』のEbiUserQueryおよびEbiJndiQueryを参照してください。
次のコードは、ユーザプロファイルを取得して表示する方法を示します。
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() ); }
プロファイルを広範囲で実装するアプリケーションを開発する場合、exteNd DirectorのRuleサブシステムを使用することをお勧めします。次の例では、ルールをどのようにユーザプロファイルに適用できるか説明します。
小売Webサイトで顧客の合計購入量を管理し、特別割引が発生するしきい値を指定するとします。次に、ルールを使用してこのようなアプリケーションを開発する方法を示します。
ルールエディタで、^属性名構文によってユーザプロファイルをチェックできる組み込みCheckWhiteboard条件を使用するルールを作成します。しきい値を入力し、「^しきい値」などのキー値を指定します。アクションのセクションに対して、ブール値または適切なコンテンツを返すことができます。
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、カスタムタグライブラリ、およびルールエンジンの条件とアクションを使用して、パーソナライズサービスをユーザに簡単に配信できます。
ルールについての詳細は、『ルールガイド』のルールの使用法に関する章を参照してください。
Copyright © 2004 Novell, Inc. All rights reserved. Copyright © 1997, 1998, 1999, 2000, 2001, 2002, 2003 SilverStream Software, LLC. All rights reserved. more ...