BEA ホーム | 製品 | デベロッパ・センタ | support | askBEA
 ドキュメントのダウンロード   サイト マップ   用語集 
検索

開発者ガイド

 前 次 目次 索引 PDFで表示  

ユーザ プロファイルの実装

WebLogic Portalでは、ユーザはユーザ プロファイルで表されます。 ユーザ プロファイルのおかげで、ユーザ属性の表現、格納、およびアクセスを柔軟に行えるようになります。 WebLogic Portal には、基本的なユーザ プロファイルのサポートだけでなく、仮想エンタープライズ プロファイルの作成に利用できる統合ユーザ プロファイル (UUP) も用意されています。

この章では、以下の内容について説明します。

 


統合ユーザ プロファイルの作成

統合ユーザ プロファイルを用いれば、LDAP サーバ、レガシー システム、データベースなどの外部ソースに格納されているユーザ データを活用することができます。 これによって、単一のプロファイルを使って、さまざまなソース内のユーザ データにアクセスできるようになります。

UUP を作成して外部ソースからユーザ データを取得するには、以下の作業を実行します。

  1. 外部データを表現する EntityPropertyManager EJB を作成する

  2. 新しい EntityPropertyManager を使用できる ProfileManager をデプロイする

外部データを表現する EntityPropertyManager EJB を作成する

外部ソースからデータを取り込むには、まず、com.bea.p13n.property.EntityPropertyManager リモート インタフェースのメソッドを実装するステートレス セッション Bean を作成する必要があります。 EntityPropertyManagerは、プロパティ データの永続性とプロファイル レコードの作成および削除を扱うセッション Bean のリモート インタフェースです。

さらに、このステートレス セッション Bean には、ホーム インタフェースと実装クラスが含まれていなければなりません。 たとえば、以下のものです。

MyEntityPropertyManager
extends com.bea.p13n.property.EntityPropertyManager

MyEntityPropertyManagerHome
extends javax.ejb.EJBHome

実装クラスは、EntityPropertyManagerImpl クラスを拡張することができます。 ただし、その実装クラスは、MyEntityPropertyManager リモート インタフェースの有効な実装であることが必要です。 たとえば、以下のとおりです。

MyEntityPropertyManagerImpl extends
com.bea.p13n.property.internal.EntityPropertyManagerImpl

または

MyEntityPropertyManagerImpl extends 
javax.ejb.SessionBean

推奨される EJB ガイドライン

新しい EJB についてのガイドラインとして、以下を推奨します。

JAR ファイルをデプロイする前に、次の節で示す手順に従います。

新しい EntityPropertyManager を使用できる ProfileManager をデプロイする

「ユーザ タイプ」とは、ProfileType 名から特定の ProfileManagerへのマッピングのことです。 このマッピングは、 UserManagerEJB のデプロイメント記述子で行われます。

新しい EntityPropertyManager EJB 内のデータにアクセスするには、以下の作業のいずれか 1 つを行う必要があります。

ProfileManager は、EntityPropertyManager EJB で取得されるプロファイル値へのアクセスを管理するステートレス セッション Bean です。 この Bean は、自分のデプロイメント記述子に書かれた一連のマッピング文に基づいて、データを探します。 たとえば、 ProfileManagerDateOfBirth プロパティの値を要求するリクエストを受け取りますが、このプロパティは PersonalData プロパティ セットに入っています。 ProfileManager は、自分のデプロイメント記述子に書かれているマッピング文を用いて、データがどの EntityPropertyManager EJB に格納されているかを判断します。

既存の ProfileManager デプロイメントのコンフィグレーションを変更する

既存の UserProfileManager デプロイメントを使用してユーザ プロファイルを管理する場合には、以下の手順を実行して、デプロイメントのコンフィグレーションを変更します。

ほとんどの状況では、この方法を UUP のデプロイに使用すべきです。 この方法の例としては、カスタム EntityPropertyManager を LDAP プロパティ検索用にデプロイした LdapPropertyManager があります。 LdapPropertyManager 用のクラスは ldapprofile.jar にパッケージ化されています。 UserProfileManager EJB のデプロイメント記述子は、「ldap」プロパティ セットを LdapPropertyManager にマップするようにコンフィグレーションされています。 UserProfileManagerusermgmt.jar 内にデプロイされています。

  1. エンタープライズ アプリケーションのルート ディレクトリ内の usermgmt.jar ファイルをバックアップします。

  2. usermgmt.jar から META-INF/ejb-jar.xml を抽出し、編集用に開きます。

  3. ejb-jar.xml 内で、リスト 6-1に示すような <env-entry> 要素を見つけます。

コード リスト 6-1 <env-entry> Element

<!-- プロパティ セット ldap 内の全プロパティを ldap サーバにマップする -->
<env-entry>
<env-entry-name>PropertyMapping/ldap</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>LdapPropertyManager</env-entry-value>
</env-entry>

そして、この要素のあとに、リスト 6-2 に示すような <env-entry> 要素を追加して、プロパティ セットをカスタム EntityPropertyManager にマップします。

コード リスト 6-2 プロパティをマップする別の <env-entry> 要素の追加

<!-- UUPExample プロパティ セット内の全プロパティを MyEntityPropertyManager にマップする -->
<env-entry>
<env-entry-name>PropertyMapping/UUPExample</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>MyEntityPropertyManager</env-entry-value>
</env-entry>

  1. ejb-jar.xml 内で、リスト 6-3 に示すような <ejb-ref> 要素を見つけます。

コード リスト 6-3 <ejb-ref> 要素

<!-- ldap プロパティ マネージャ -->
<ejb-ref>
<ejb-ref-name>ejb/LdapPropertyManager</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<home>com.bea.p13n.property.EntityPropertyManagerHome</home>
<remote>com.bea.p13n.property.EntityPropertyManager</remote>
</ejb-ref>

そして、この要素のあとに、リスト 6-4 に示すような <ejb-ref> 要素を追加して、先ほどのステップで指定したマップ先の名前に ejb/ という接頭辞が付いた参照を EJB にマップします。

コード リスト 6-4 参照を EJB にマップするための <ejb-ref> 要素

<!-- プロパティ マネージャのサンプル -->
<ejb-ref>
<ejb-ref-name>ejb/MyEntityPropertyManager</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<home>examples.usermgmt.MyEntityPropertyManagerHome</home>
<remote>examples.usermgmt.MyEntityPropertyManager</remote>
</ejb-ref>

ホーム クラス名とリモート クラス名は、カスタム EntityPropertyManager の EJB JAR ファイルに入っているクラスと同じものです。

  • EntityPropertyManager 実装でプロファイル レコードの作成と削除を扱う場合には、Creator エントリと Remover エントリも追加する必要があります。 たとえば、以下のようにします。
  • コード リスト 6-5 Creator エントリと Remover エントリを追加するための <env-entry> 要素

    <env-entry>
    <env-entry-name>Creator/Creator1</env-entry-name>
    <env-entry-type>java.lang.String</env-entry-type>
    <env-entry-value>MyEntityPropertyManager</env-entry-value>
    </env-entry>
    <env-entry>
    <env-entry-name>Remover/Remover1</env-entry-name>
    <env-entry-type>java.lang.String</env-entry-type>
    <env-entry-value>MyEntityPropertyManager</env-entry-value>
    </env-entry>

    ここでは、ユーザ プロファイル レコードの作成時または削除時にはカスタム EntityPropertyManager を呼び出すように、UserProfileManager に指示しています。 「Creator1」および「Remover1」は任意の名前でかまいません。 UserProfileManager によるユーザ プロファイルの作成時または削除時には、すべての Creator と Remover について反復処理が行われます。 Creator と Remover の値は、ejb/ が先頭に付いていない点を除けば、カスタム EntityPropertyManagerejb-ref-name 値と同じです。

  • usermgmt.jar から META-INF/weblogic-ejb-jar.xml を抽出し、編集用に開きます。

  • weblogic-ejb-jar.xml 内で、リスト 6-6 に示すような要素を見つけます。
  • コード リスト 6-6 weblogic-ejb-jar.xml 内の要素

    <weblogic-enterprise-bean>
    <ejb-name>UserProfileManager</ejb-name>
    <reference-descriptor>
    <ejb-reference-description>
    <ejb-ref-name>ejb/EntityPropertyManager</ejb-ref-name>
    <jndi-name>${APPNAME}.BEA_personalization.
    EntityPropertyManager</jndi-name>
    </ejb-reference-description>

    そして、カスタム EntityPropertyManagerejb-ref を JNDI 名にマップするための ejb-reference-description を追加します。 この JNDI 名は、 カスタム EntityPropertyManager の JAR ファイル内の weblogic-ejb-jar.xml で割り当てた名前に一致しなければなりません。 すなわち、 リスト 6-7 に示す例のようになるはずです。

    コード リスト 6-7 JNDI 名の指定

    <weblogic-enterprise-bean>
    <ejb-name>UserProfileManager</ejb-name>
    <reference-descriptor>
    <ejb-reference-description>
    <ejb-ref-name>ejb/EntityPropertyManager</ejb-ref-name>
    <jndi-name>${APPNAME}.BEA_personalization.
    EntityPropertyManager</jndi-name>
    </ejb-reference-description>
    <ejb-reference-description>
    <ejb-ref-name>ejb/MyEntityPropertyManager
    </ejb-ref-name>
    <jndi-name>${APPNAME}.BEA_personalization.
    MyEntityPropertyManager</jndi-name>
    </ejb-reference-description>

    ${APPNAME} という文字列置換変数に注意してください。 WebLogic EJB コンテナでは、この変数をエンタープライズ アプリケーション名に自動的に置き換えて、JNDI 名のスコープをそのアプリケーションに限定します。

  • デプロイメント記述子の変更に合わせて、usermgmt.jar を更新します。 jar uf コマンドを使用して、META-INF/ 内のデプロイメント記述子の変更を JAR ファイルに反映させることができます。

  • エンタープライズ アプリケーションの META-INF/application.xml を編集して、 カスタム EntityPropertyManager EJB モジュールのエントリ(リスト 6-8 に示す)を追加します。
  • コード リスト 6-8 カスタム EntityPropertyManager EJB モジュールのエントリの追加

    <module>
    <ejb>UUPExample.jar</ejb>
    </module>

    1. アプリケーション全体のキャッシュを使用する場合には、以下のようなキャッシュ用の <Cache> タグをエンタープライズ アプリケーションの META-INF/application-config.xml デプロイメント記述子に追加すれば、Administration Console でキャッシュを管理することができます。

    コード リスト 6-9 META-INF/application-config.xml への<Cache> タグの追加

    <Cache
    Name="UUPExampleCache"
    TimeToLive="60000"
    />

    1. 修正済みの usermgmt.jar とカスタム EntityPropertyManager EJB JAR アーカイブがエンタープライズ アプリケーションのルート ディレクトリ内にあることを確かめ、WebLogic Server を起動します。

    2. WebLogic Server Administration Consoleを用いて、新規 EJB モジュールがエンタープライズ アプリケーションにデプロイされていることを確かめたあと、同コンソールを用いて、サーバをその EJB モジュールの ターゲットとして追加します。 ターゲットを選択して、EJB モジュールをサーバにデプロイするようにドメインの config.xml ファイルを更新させる必要があります。

    3. E-Business Control Centerを用いて、(usermgmt.jar 内の)UserProfileManagerejb-jar.xml でカスタム EntityPropertyManager にマップしたプロパティ セットの名前 に一致するユーザ プロファイル(プロパティ セット)を作成します。 さらに、プロパティ セット内の特定のプロパティ名をカスタム EntityPropertyManager にマップすることさえできます。

      注意: プロパティ セットを作成したあとは、新しいデータを必ずサーバに同期化してください。

    これで、新しい統合ユーザ プロファイル タイプがいつでも使用できるようになりました。 WebLogic Portal Administration Tools を用いれば、「User」というタイプのユーザを作成することができ、そのユーザ タイプでは、「UUPExample」プロパティ セットの変更時に新しい UUP 実装が使用されることになります。 UserManager に対して createUser("bob", "password") または createUser("bob", "password", null) を呼び出すと、以下の処理が行われます。

    新しい ProfileManager のコンフィグレーションとデプロイ

    デフォルトの ProfileManager (UserProfileManager) を使うのではなく新たにコンフィグレーションした ProfileManager をデプロイして、ユーザ プロファイルを管理する場合には、以下の手順を実行してデプロイメントのコンフィグレーションを変更します。 ほとんどの場合、このデプロイメント方法を用いる必要はありません。 この方法を用いるのは、ProfileType に基づいてプロパティ セットをさまざまなカスタム EntityPropertyManager にマップできるようにするさまざまな ProfileManager デプロイメントを必要とする複数のユーザ タイプをサポートしなければならない場合だけです。

    この方法の例としては、customer.jar 内のカスタム CustomerProfileManager のデプロイメントがあります。 CustomerProfileManager は、「CustomerProperties」プロパティ セット内のプロパティに対してカスタム EntityPropertyManager (CustomerPropertyManager) を使用するようにコンフィグレーションされています。 usermgmt.jar 内の UserManager EJB は、「WLCS_Customer」ProfileType を、ProfileManager のカスタム デプロイメントである CustomerProfileManager にマップするようにコンフィグレーションされています。

    新しい ProfileManager をコンフィグレーションしデプロイするには、以下の手順に従います。

    1. エンタープライズ アプリケーションのルート ディレクトリ内の usermgmt.jar ファイルをバックアップします。

    2. usermgmt.jar から META-INF/ejb-jar.xml を抽出し、編集用に開きます。

    3. ejb-jar.xml 内で、UserProfileManager<session> タグ全体をコピーし、ProfileManager の新しいデプロイメントにカスタム実装クラスを使用するように、そのタグをコンフィグレーションします。

      さらに、UserProfileManagerホーム インタフェースとリモート インタフェースを再パッケージ化して独自のパッケージ化(たとえば、examples.usermgmt.MyProfileManagerHomeexamples.usermgmt.MyProfileManager)に合わせたい場合には、それらを独自のインタフェースで拡張することさえできます。

      ただし、以下のようにして、Bean 実装クラスを入れ替えるだけで十分です。

      <env-entry> 要素を作成して、プロパティ セットをカスタム EntityPropertyManager にマップする必要があります。 さらに、<ejb-ref> 要素を作成して、プロパティ マッピング (PropertyMapping) で指定したマップ先の名前に ejb/ という接頭辞が付いた参照を EJB にマップする必要もあります。 カスタム EntityPropertyManager のホーム クラス名とリモート クラス名は、カスタム EntityPropertyManager の EJB JAR ファイル内のクラスに一致します。

      EntityPropertyManager 実装でプロファイル レコードの作成と削除を扱う場合には、 Creator エントリと Remover エントリも追加する必要があります。 これによって、ユーザ プロファイル レコードの作成時または削除時にはカスタム EntityPropertyManager を呼び出すように、新しい ProfileManager に指示することになります。

      注意: Creator および Remover の後ろに付く「Creator1」および「Remover1」は任意の名前でかまいません。 ProfileManager によるユーザ プロファイルの作成時または削除時には、すべての Creator と Remover について反復処理が行われます。 Creator と Remover の値は、ejb/ が先頭に付いていない点を除けば、カスタム EntityPropertyManager<ejb-ref-name> 値と同じです。

    4. ejb-jar.xml 内で、リスト 6-10 に示すように、UserManager EJB セクションに <ejb-ref> を追加して、ProfileTypeProfileManager の新しいデプロイメントにマップする必要があります。

    コード リスト 6-10 UserManager EJB セクションへの <ejb-ref> の追加

    <ejb-ref>
    <ejb-ref-name>ejb/ProfileType/UUPExampleUser</ejb-ref-name>
    <ejb-ref-type>Session</ejb-ref-type>
    <home>com.bea.p13n.usermgmt.profile.ProfileManagerHome</home>
    <remote>com.bea.p13n.usermgmt.profile.ProfileManager</remote>
    </ejb-ref>

    <ejb-ref-name> の先頭は ejb/ProfileType/ で、末尾は UserManagercreateUser() メソッドの引数であるプロファイル タイプに使用したい名前でなければなりません。

  • usermgmt.jar から META-INF/weblogic-ejb-jar.xml を抽出し、編集用に開きます。

  • weblogic-ejb-jar.xml 内で、UserProfileManagerweblogic-enterprise-bean タグをコピーし、リスト 6-11 に示すように、それを新しい ProfileManager デプロイメント用にコンフィグレーションします。
  • コード リスト 6-11 新しい ProfileManager の <weblogic-enterprise-bean> タグ

    <weblogic-enterprise-bean>
    <ejb-name>MyProfileManager</ejb-name>
    <reference-descriptor>
    <ejb-reference-description>
    <ejb-ref-name>ejb/EntityPropertyManager</ejb-ref-name>
    <jndi-name>${APPNAME}.BEA_personalization.
    EntityPropertyManager</jndi-name>
    </ejb-reference-description>
    <ejb-reference-description>
    <ejb-ref-name>ejb/PropertySetManager</ejb-ref-name>
    <jndi-name>${APPNAME}.BEA_personalization.
    PropertySetManager</jndi-name>
    </ejb-reference-description>
    <ejb-reference-description>
    <ejb-ref-name>ejb/MyEntityPropertyManager
    </ejb-ref-name>
    <jndi-name>${APPNAME}.BEA_personalization.
    MyEnitityPropertyManager</jndi-name>
    </ejb-reference-description>
    </reference-descriptor>
    <jndi-name>${APPNAME}.BEA_personalization.
    MyProfileManager</jndi-name>
    </weblogic-enterprise-bean>

    <ejb-reference-description> を作成して、カスタム EntityPropertyManager<ejb-ref> を JNDI 名にマップする必要があります。 この JNDI 名は、カスタム EntityPropertyManager の JAR ファイル内の weblogic-ejb-jar.xml で割り当てた名前に一致しなければなりません。

    ${APPNAME} という文字列置換変数に注意してください。 WebLogic Server EJB コンテナでは、この変数をエンタープライズ アプリケーション名に自動的に置き換えて、JNDI 名のスコープをそのアプリケーションに限定します。

  • weblogic-ejb-jar.xml 内で、UserProfileManager<transaction-isolation> タグをコピーし、リスト 6-12 に示すように、それを新しい ProfileManager デプロイメント用にコンフィグレーションします。
  • コード リスト 6-12 新しい ProfileManager の<transaction-isolation> タグ

    <transaction-isolation>
    <isolation-level>TRANSACTION_READ_COMMITTED
    </isolation-level>
    <method>
    <ejb-name>MyProfileManager</ejb-name>
    <method-name>*</method-name>
    </method>
    </transaction-isolation>

    1. 新しいデプロイメント記述子と新しい ProfileManager Bean 実装クラスを格納する一時的な usermgmt.jar を作成します。 この一時的な EJB JAR アーカイブには、コンテナ クラスを入れてはいけません。 ejbc を実行して、新しいコンテナ クラスを生成します。

    2. エンタープライズ アプリケーションの META-INF/application.xml を編集して、カスタム EntityPropertyManager EJB モジュールのエントリ (リスト 6-13 に示す) を追加します。

    コード リスト 6-13 カスタム EntityPropertyManager EJB モジュールのエントリの追加

    <module>
    <ejb>UUPExample.jar</ejb>
    </module>

    1. アプリケーション全体のキャッシュを使用する場合には、リスト 6-14 に示すようなキャッシュ用の <Cache> タグをエンタープライズ アプリケーションの META-INF/application-config.xml デプロイメント記述子に追加すれば、WebLogic Server Administration Console でキャッシュを管理することができます。

    コード リスト 6-14 META-INF/application-config.xml への <Cache> タグの追加

    <Cache
    Name="UUPExampleCache" TimeToLive="60000"
    />

    1. 修正済みの usermgmt.jar とカスタム EntityPropertyManager EJB JAR アーカイブがエンタープライズ アプリケーションのルート ディレクトリ内にあることを確かめ、 サーバを起動します。

    2. WebLogic Server Administration Consoleを用いて、新規 EJB モジュールがエンタープライズ アプリケーションにデプロイされていることを確かめたあと、同コンソールを用いて、サーバをその EJB モジュールのターゲットとして追加します。 ターゲットを選択して、EJB モジュールをサーバにデプロイするようにドメインの config.xml ファイルを更新させる必要があります。

    3. E-Business Control Centerを用いて、(usermgmt.jar 内の)UserProfileManagerejb-jar.xml でカスタム EntityPropertyManager にマップしたプロパティ セットの名前 に一致するユーザ プロファイル(プロパティ セット)を作成します。 さらに、プロパティ セット内の特定のプロパティ名をカスタム EntityPropertyManager にマップすることさえできます。

      注意: プロパティ セットを作成したあとは、新しいデータを必ずサーバに同期化してください。

    4. これで、新しい統合ユーザ プロファイル タイプがいつでも使用できるようになりました。 WebLogic Portal Administration Tools を用いれば、「UUPExampleUser」というタイプのユーザを作成することができ、そのユーザ タイプでは、「UUPExample」プロパティ セットの変更時に新しい UUP 実装が使用されることになります。 その理由は、UserManager デプロイメント記述子の中で、<ejb-ref> を使って ProfileType を「ejb/ProfileType/UUPExampleUser」とマップしたからです。

      注意: WebLogic Portal Administration Tools でユーザを作成する際にこの新しいユーザ タイプを選択するように管理者に知らせてください。

      ここで、UserManager に対して createUser("bob", "password", "UUPExampleUser") を呼び出すと、以下の処理が行われます。

     


    プロパティ セット定義の作成

    プロパティ セットとは、パーソナライゼーション属性のスキーマのことです。 プロパティ セットは、特定目的のプロパティ群に名前を付けるのに便利な手段です。 たとえば、sampleportal-project の「Avitek」というユーザ プロファイルには、FirstName(名)、LastName(姓)、HomePhone(自宅電話番号)、Email(電子メール アドレス)、CustomerType(顧客種別)といった、 e コマース顧客のプロパティを定義するプロパティ セットがあります。 プロパティ セットの作成と、それらのプロパティ セットを構成するプロパティの定義には、 E-Business Control Center を使用します。

    この節では、カスタム ユーザ プロファイルの登録方法を説明します。

    カスタム ユーザ プロファイルを登録する

    プロパティ セット エディタは、すべてのプロパティ セットに対して同じように機能します。 ここでは、E-Business Control Center を用いて、ユーザ プロファイル プロパティの作成と変更を行います。 これらの例は、カスタム ユーザ プロファイルの登録に使用することができます。 これと同じ手順に従って、イベント、 HTTP リクエスト、HTTP セッション、およびカタログ構造のプロパティ セットを作成および変更することができます。

    カスタム ユーザ プロファイルを登録するには、以下の手順を実行します。

    1. E-Business Control Center を起動し、サーバに接続していることを確かめます。 E-Business Control Centerの起動とサーバへの接続については、『管理者ガイド』の「システム管理」 (http://edocs.beasys.co.jp/e-docs/wlp/docs70/admin/sysadmin.htm) を参照してください。

      図 6-1 に示すような エクスプローラ ウィンドウが開きます。

      図6-1 E-Business Control Centerウィンドウ


       

    2. 該当するプロジェクト ファイルを開きます。 この手順では、例として、samples|portal|samplePortalDomain|beaApps|sampleportal-projectを開きます。

    3. 以下のようにして、イベント エディタを開きます。

      1. エクスプローラ ウィンドウで、[ユーザ プロファイル] アイコンを選択します。 図 6-2 に示すように、ユーザ プロファイルのリストが [ユーザ プロファイル] フィールドに表示されます。

        図6-2 [ユーザ プロファイル] アイコン選択時の E-Business Control Centerの エクスプローラ


         

      2. [新規作成] アイコンをクリックして [新規作成] メニューを開き、リスト 6-3に示すように、[ユーザ プロファイル] を選択します。

        図6-3 [新規作成] メニュー([新規作成] アイコンをクリックすると開く)


         

        図 6-4 に示すようなユーザ プロファイル エディタ ウィンドウが開きます。

        図6-4 ユーザ プロファイル エディタ ウィンドウ


         

    4. [新規作成] をクリックします。

      [プロパティの編集] ウィンドウが表示されます(図 6-5)。

      図6-5 [プロパティの編集] ウィンドウ


       

    5. [プロパティの編集] ウィンドウで、以下の手順を実行します。

      1. [名前] フィールドに、プロパティのユニークな名前を 100 文字以内で入力します(必須)。

        警告: [名前] フィールドに「LDAP」と入力してはいけません。

      2. [概要] フィールドに、プロパティの概要を 254 文字以内で入力します(省略可能)。

      3. [データ型] リストで、プロパティのデータ型を選択します。 データ型としてたとえば「ブール」を選択した場合には、[選択モード] と [値の範囲] は利用できません。 ブール型のデフォルトは、「単値、制限付き」です。

      4. [選択モード] リストで、[単値] か [多値] のいずれかを選択します。 ここで選択した値によって、設定できるプロパティ値の数が決まります。 すなわち、1 つ(単値の場合)か複数(多値の場合)です。

      5. [値の範囲] リストで、値が [制限付き] なのか [制限なし] なのかを選択します。

      6. [値の追加] をクリックします。

        2 種類の [プロパティ値の入力] ウィンドウのいずれかが表示されます。 どちらのタイプの [プロパティ値の入力.] ウィンドウが表示されるかは、選択した値で決まります。 その理由は、値の入力とデフォルト値の設定に必要な手順がデータ型によって異なるからです。 以下のプロパティ カテゴリが利用できます。

    ブール型または単値かつ単一デフォルトのプロパティ

    ブール型プロパティまたは、単値および単一デフォルト(制限なし)を持つプロパティのデフォルト値を入力するには、 以下の手順を実行します。

    1. 該当する [プロパティ値の入力] ウィンドウ(図 6-6または図 6-7)で、以下のいずれかを実行します。

    2. [OK] をクリックします。

      [プロパティ値の入力] ウィンドウが閉じ、選択した値が、たとえばリスト 6-8 に示すように、[プロパティの編集] ウィンドウの [値] リストに表示されます。

      図6-8 テキスト値が選択された [プロパティの編集] ウィンドウ


       

    3. [OK] をクリックします。

    多値かつ単一デフォルト、複数デフォルト、全デフォルトのプロパティ

    複数のプロパティ値を入力し任意の数のデフォルト(制限なし)を設定するには、以下の手順を実行します。

    1. 該当する [プロパティ値の入力] ウィンドウで、値を入力したあと [追加] をクリックします。

      図 6-9図 6-10、および 図 6-11 に示すように、新しい値が [値] リスト ボックスに表示されます。

      図6-9 [プロパティ値の入力] ウィンドウ(多値かつ単一デフォルトの場合)


       

      図6-10 [プロパティ値の入力] ウィンドウ(多値かつ制限付き複数デフォルトの場合)


       

      図6-11 [プロパティ値の入力] ウィンドウ(多値かつ制限なし複数デフォルトの場合)


       

    2. 必要な値の入力がすべて済むまで、手順 1. を繰り返します。

    3. 任意の数のデフォルト値を選択するには、以下のいずれかを実行します。

      注意: 多値かつ単一デフォルトのプロパティのデフォルト値を削除するには、 [すべて選択解除] をクリックします。

      注意: 制限なしの多値(すなわち、[値の範囲] が [制限なし])の場合には、デフォルトを選択する必要はありません。

    4. [プロパティの編集] ウィンドウで [OK] をクリックします。

    日時値を取るプロパティ

    日時値を取るプロパティでは、[選択モード] と [値の範囲] のすべての設定が使えます。

    日時値を入力し任意の数のデフォルトを設定するには、以下の手順を実行します。

    1. [プロパティの編集] ウィンドウで、[データ型] ドロップダウン リストから [日時] を選択し(図 6-12 に示す)、[値の追加] を選択します。

      図6-12 [データ型] メニューでの [日時] の選択


       

      日時値用の [プロパティ値の入力] ウィンドウが表示されます(図 6-13)。

      図6-13 日時の [プロパティ値の入力] ウィンドウ


       

    2. [日付] リストのドロップダウン矢印をクリックします。

      図 6-14 に示すようなカレンダーが表示されます。

      図6-14 カレンダーが表示された [プロパティ値の入力] ウィンドウ


       

    3. カレンダーから日付(たとえば 6 月 14 日)を選択します。

      カレンダーが閉じ、図 6-15 に示すように、選択した日付が日付編集ボックスに表示されます。

      図6-15 日付編集ボックスに表示される選択済みの日付


       

    4. [時刻] フィールドに時刻を入力します。

    5. [追加] をクリックします。

      図 6-16 に示すように、新しい日時が [値] リストに表示されます。

      図6-16 [値] リストに表示される日時


       

    6. さらに日時を追加するには、必要な値の入力がすべて済むまで手順 1. から手順 5. を繰り返します。

    7. 任意の数のデフォルト値を選択するには、以下のいずれかを実行します。

    8. イベント用の [プロパティの編集] ウィンドウで、[OK] をクリックします。

    登録済みカスタム イベントを更新する

    カスタム イベントのコードに変更を加えるたびに、そのイベントの登録を更新しなければなりません。 登録を更新すれば、カスタム イベントの変更が E-Business Control Center に認識され、 キャンペーン開発者がE-Business Control Center を用いてそのイベントの参照元のシナリオ アクションをすべて修正するのに役立ちます。

    カスタム イベントを更新するには、以下の手順を実行します。

    1. E-Business Control Center を起動し、WebLogic Server に接続されていることを確かめます。

      エクスプローラ ウィンドウが開きます。

    2. 正しいプロジェクト ファイルが開かれていることを確かめ、[サイト インフラストラクチャ] タブを選択します。

    3. エクスプローラ ウィンドウで、[イベント] アイコンを選択します。 図 6-17 に示すように、イベントのリストが [イベント] フィールドに表示されます。

      注意: 標準イベントは編集できません。

      図6-17 エクスプローラ ウィンドウ


       

    4. 編集したいカスタム イベントをダブルクリックします。 図 6-18 に示すようなイベント エディタ ウィンドウが開きます。 [イベント プロパティ] フィールドに、既存プロパティのリストが表示されます。

      図6-18 イベント エディタ ウィンドウ


       

    5. [イベント プロパティ] フィールドで、編集したいプロパティをダブルクリックします。

      図 6-19 に示すような [プロパティの編集] ウィンドウが開きます。

      図6-19 [プロパティの編集] ウィンドウ


       

    6. [データ型]、[選択モード] 、あるいは [値の範囲] を変更するには、該当するリスト ボックスから設定を選択します。

      注意: [データ型]、[選択モード] 、あるいは [値の範囲] の各プロパティ設定を変更すると、関連付けられている値は破棄されます。

    7. 値を追加または変更するには、[値の編集] をクリックします。 図 6-20 に示すような [プロパティ値の入力] ウィンドウが開きます。

      図6-20 [プロパティ値の入力] ウィンドウ


       

      1. 値を削除するには、その値を選択してから [削除] をクリックします。

      2. 値を追加するには、その値を入力してから [追加] をクリックします。

      3. 値を変更するには、その値を選択し削除してから、新しい値を追加します。

      4. 必要であれば、デフォルト値(複数の場合あり)を選択します。

      5. 多値かつ単一デフォルトのプロパティのデフォルト値を削除するには、 [すべて選択解除] をクリックします。

      6. [OK] をクリックします。 [プロパティ値の入力] ウィンドウが閉じます。

    8. イベントのプロパティまたは値の更新が完了したら、イベントの [プロパティの編集] ウィンドウで [OK] をクリックします。

     


    訪問者自主登録の有効化

    Web サイトへの訪問者は多くの場合、引き続きサイトの機能を利用するには登録する必要があります。たとえば、オンライン書店では、訪問者は登録して初めて実際に書籍などの商品を買うことができるでしょう。 登録は、それによって訪問者が Web サイトをより利用しやすくなるので有益な機能です。各取引に必要な訪問者関連情報(顧客プロファイルと呼ばれる)が格納され、取引のたびに訪問者がそうした情報を再入力しなくても済むようになるからです。 また、企業にとっても、訪問者データが格納されることで、自社のサービスを利用しそうな人々についての情報を維持管理できるようになるので便利です。

    WebLogic Portalには、訪問者自主登録用の顧客プロファイルを作成するための JSP Webflow テンプレート一式が用意されています。 これらのコンポーネントをそのまま使用することも、特定のニーズに合わせて修正することもできます。 この節では、これらの JSP と Webflow コンポーネントについて説明し、その使用方法を解説します。

    顧客プロファイル用 JSP を実装する

    WebLogic Portal には、訪問者自主登録を機能させるのに使用できる 5 つの JSP テンプレートから成る Login and Registration サービスが用意されています。 これらのテンプレートをそのまま使用することも、特定のニーズに合わせて修正することもできます。 この節では、これらのテンプレートについて説明し、それらの実装方法を示します。

    この節では、以下のテンプレートを取り上げます。

    login.jsp

    login.jsp テンプレートは、まだサイトに登録していない顧客に、以後サイトを利用するための登録(新規顧客プロファイルの作成)を行うことのできるページへのエントリ ポイントを提供します。 このページはチェックアウト プロセスへのエントリ ポイントなので、顧客がショッピングを続けられるようにするメカニズム(セッションなど)もこのページで設定されます。

    解説

    login.jsp テンプレートを用いて書式化された Web ページの例を図 6-21 に示します。

    図6-21 login.jsp を用いて書式化された Web ページ


     

    login.jsp の動作の仕組み

    未登録の顧客がポートレット内の [Create] をクリックした場合は、次にロードされるページ (newuser.jsp) で、顧客はプロファイルおよびユーザ名/パスワードを作成できます。 登録が済むと、顧客は自動的にログインし、続いて newusercreation.jsp テンプレートに移動します。そこでは顧客はショッピングを続けたり、ショッピング カートの内容を確認したり、チェックアウトすることができます。 自動ログインに失敗すると、顧客にユーザ名とパスワードを入力させるために login.jsp テンプレートがロードされます。 顧客がログインに失敗すると、badlogin.jsp がロードされます。

    注意: チェックアウトに進むオプションは、顧客のショッピング カートに商品が入っている場合にのみ、newusercreation.jsp テンプレートに表示されます。

    イベント

    login.jsp テンプレートでは、顧客に 2 つのボタンが表示されますが、イベントと見なされるのは、そのうちの 1 つだけです。 イベントが発生すると、デフォルトWebflow において特定の応答がトリガされて、顧客は操作を続けることができます。 もう一方のボタンは HTML の標準の送信ボタンで、認証用にWebLogic Server にページを送り返すためのものです。 イベントとそれによって呼び出されるビジネス ロジックを表6-1 に示します。

    表6-1 login.jsp のイベント

    イベント

    Webflow の応答

    button.createUser

    ビジネス ロジックは不要。 newuser.jsp をロードする。


     

    [Log in] ボタンは Webflow の応答をトリガするイベントではありません。 顧客がこのボタンをクリックすると、WebLogic Server(具体的には、WebLogic Portal の RDBMS レルム)に制御が移ります。 WebLogic Server は HTTP リクエストを憶えておき、顧客のユーザ名とパスワードの組み合わせが正しいかどうかを判断したあと、そのリクエストを使って Webflow を再度呼び出します。

    badlogin.jsp

    badlogin.jspテンプレート(図 6-22 に示す)は、ユーザ名とパスワードの無効な組み合わせが入力されたことを顧客に通知し、顧客がユーザ名とパスワードの有効な組み合わせを入力してサイトに再度ログインを試みることができるようにします。 このテンプレートの動作は、エラー メッセージを除き、前述の login.jsp テンプレートとまったく同じです。

    図6-22 badlogin.jsp を用いて書式化された Web ページ


     

    newuser.jsp

    newuser.jsp テンプレート では、新規顧客が顧客プロファイルを作成して、e コマース サイトに登録できます。顧客プロファイルには、顧客の個人情報、届け先情報、支払い情報(省略可能)、およびアカウント情報が記載されます。

    解説

    newuser.jsp を用いて書式化された Web ページのブラウザでの表示例を示します。

    図6-23 newuser.jsp を用いて書式化された Web ページ- 個人情報


     

    newuser.jsp の動作の仕組み

    newuser.jsp は、顧客ログイン ページ (login.jsp) のあとに表示されるページです。 顧客が最初のプロファイル情報を入力したときにエラーがなければ、顧客は自動的にログインしてウェルカム ページに移動します。顧客はそのページにあるさまざまなリンクを選択して、ショッピングを続けるかチェックアウトすることができます (newusercreation.jsp)。 エラーがあった場合には、newuser.jsp が再ロードされ、無効なフォーム フィールドの脇に、そのエラーに対するメッセージが表示されます。

    このテンプレートは、Webflow の sampleapp_user ネームスペースの一部です。

    newuser.jsp にインクルードされる JSP テンプレート

    newuser.jsp には、実装時に補助的 JSP テンプレートが 3 つインクルードされます。 これらの JSP は、顧客に届け先住所、クレジット カード情報、およびデモグラフィック情報の入力を求めるすべての JSP テンプレートで行われるフォーム表示とエラー処理の両方についての標準フォーマットを提供します。 以下では、これらのテンプレートについて 説明します。

    newaddresstemplate.inc このテンプレートは、顧客に届け先住所の入力を求めるすべての JSP テンプレート(addaddress.jsp を除く)に組み込まれているフォーム フィールド表示とエラー処理の両方についての標準フォーマットを提供します。 フォーム フィールドがテーブル形式で配置されており、フォームが送信されると、newaddresstemplate.inc テンプレートに関連付けられている入力プロセッサがフォームの有効性を検証して、すべての必須フィールドに値が入力されていることを確認します。 エラーが検出された場合には、newaddresstemplate.inc テンプレートが再表示されます。 このとき、画面の上部にエラー メッセージが表示され、無効なフィールドのラベルが赤で表示されます(本来のラベルの色は黒)。 正しく入力された情報は、フォームにそのまま表示されます。

    上記の動作は、newaddresstemplate.inc テンプレートで getValidatedValue JSP タグを用いて呼び出されます(リスト 6-15 に示す)。

    コード リスト 6-15 newaddresstemplate.inc での getValidatedValue JSP タグの使い方

    <!-- 顧客の届け先住所情報用のフィールドをまずテーブルに表示する -->
    <table width="90%" border="0">
    <tr>
    <td width="26%"><webflow:getValidatedValue
    fieldName="<%=HttpRequestConstants.CUSTOMER_SHIPPING_ADDRESS1%>"
    fieldValue="customerShippingAddress1" fieldStatus="status"
    validColor="black" invalidColor="red" unspecifiedColor="black"
    fieldColor="fontColor" />
    <div class="tabletext"><font color=<%= fontColor %>><b>Address </b>
    </font>
    </div>
    </td>
    <td width="74%"> <input type="text"
    name="<%=HttpRequestConstants.CUSTOMER_SHIPPING_ADDRESS1%>"
    value="<%=customerShippingAddress1%>" size="30" maxlength="30">*
    </td>
    </tr>
    .
    .
    .
    </table>

    newcctemplate.inc このテンプレートは、顧客にクレジット カード/支払情報の入力を求めるすべての JSP テンプレートで行われるフォーム表示とエラー処理の両方についての標準フォーマットを提供します。 フォーム フィールドがテーブル形式で配置されており、フォームが送信されると、newcctemplate.inc テンプレートに関連付けられている入力プロセッサがフォームの有効性を検証して、すべての必須フィールドに値が入力されていることを確認します。 エラーが検出された場合には、newcctemplate.inc テンプレートが再表示されます。 このとき、画面の上部にエラー メッセージが表示され、無効なフィールドのラベルが赤で表示されます(本来のラベルの色は黒)。 正しく入力された情報は、フォームにそのまま表示されます。

    上記の動作は、newcctemplate.inc テンプレートで getValidatedValue JSP タグを用いて呼び出されます(リスト 6-16 に示す)。

    コード リスト 6-16 newcctemplate.inc での getValidatedValue JSP タグの使い方

    <table>
    .
    .
    .
    <td width="27%"><webflow:getValidatedValue
    fieldName="<%=HttpRequestConstants.CUSTOMER_CREDITCARD_HOLDER%>"
    fieldValue="customerCreditCardHolder" fieldStatus="status"
    validColor="black" invalidColor="red"
    unspecifiedColor="black"
    fieldColor="fontColor" />
    <div class="tabletext">
    <font color=<%= fontColor %>><b>Name on card</b>
    </font>
    </div>
    </td>
    <td width="73%"> <input type="text"
    name="<%=HttpRequestConstants.CUSTOMER_CREDITCARD_HOLDER%>"
    value="<%=customerCreditCardHolder%>" size="30" maxlength="50">*
    </td>
    .
    .
    .
    </table>

    newdemographictemplate.inc このテンプレートは、顧客にデモグラフィック情報の入力を求めるすべての JSP テンプレートで行われるフォーム表示とエラー処理の両方についての標準フォーマットを提供します。 ラジオ ボタンがテーブル形式で配置されており、フォームが送信されると、newdemographictemplate.inc テンプレートに関連付けられている入力プロセッサがフォームの有効性を検証して、すべての必須フィールドに値が入力されていることを確認します。 エラーが検出された場合には、newdemographictemplate.inc テンプレートが再表示されます。 このとき、フォーム ページの上部にエラー メッセージが表示され、無効なフィールドのラベルが赤で表示されます(本来のラベルの色は黒)。 正しく入力された情報は、フォームにそのまま表示されます。

    上記の動作は、newdemographictemplate.inc テンプレートで getValidatedValue JSP タグを用いて呼び出されます(リスト 6-17 に示す)。

    コード リスト 6-17 newdemographictemplate.inc での getValidatedValue JSP タグの使い方

    <webflow:getValidatedValue fieldName="<%=HttpRequestConstants.CUSTOMER_GENDER%>"
    fieldDefaultValue="<%=(String)currentPropertyValue%>"
    fieldValue="genderValue" fieldStatus="status" validColor="black"
    invalidColor="red" unspecifiedColor="black" fieldColor="fontColor" />
       <td width="26%"><div class="tabletext"><b><font color=<%= fontColor %>>
    Gender*</font></b></div>
    </td>
    <td width="74%">

    <% // Gender (性別) のプロパティ値を取得する
    propertyBean.setPropertyName(GENDER);
    property = propertyBean.getPropertyObject();
    if(property == null || property.getRestrictedValues() == null)
    arr = new Object[0];
    else arr = property.getRestrictedValues().toArray();%>
    				   <ps:getRestrictedPropertyValues propertySetName="Demographics"
    propertySetType="USER" propertyName="<%= GENDER %>" id="arr"
    result="foobar" />
       <table width="100%" border="0" cellpadding="0"
    cellspacing="0"><es:forEachInArray id="valueObject" array="<%= arr %>"
    type="String">
    <tr>
    <td width="4%"><input type="radio" name="
    <%= HttpRequestConstants.CUSTOMER_GENDER %>" value="<%= valueObject %>"
    <% if ( valueObject.equals(genderValue) ) { %>CHECKED<% } %>></td>
    <td><%= valueObject %></td>
    </tr>
    </es:forEachInArray>
    </table>

    イベント

    newuser.jsp テンプレートでは 2 つのボタンが顧客に表示され、そのそれぞれがイベントと見なされます。 これらのイベントによってデフォルト Webflow の特定の応答がトリガされて、顧客は操作を続けることができます。 この応答では、別の JSP がロードされることもありますが、通常は、入力プロセッサまたは Pipeline コンポーネントが先に呼び出されます。これらのイベントによって呼び出されるビジネス ロジックを 表6-2 に示します。

    表6-2 newuser.jsp のイベント

    イベント

    Webflow の応答

    button.cancel

    GetCategoryIP

    GetTopCategories Pipeline

    button.save

    CustomerProfileIP
    CustomerProfile
    Pipeline


     

    表6-3 では、表6-2 に示した各 Pipeline コンポーネントについて簡単に説明します。

    表6-3 newuser.jsp に関連付けられている Pipeline

    Pipeline

    解説

    CustomerProfile

    EncryptedCreditCardPCRegisterUserPC から成り、 トランザクション対応である。


     

    newuser.jsp のフォーム フィールド

    newuser.jsp テンプレートの主な目的は、 HTML のさまざまなフォーム フィールドを用いて顧客からプロファイル情報を入力できるようにすることです。 また、このテンプレートは、Webflow に必要な情報を渡すためにも使用されます。

    newuser.jsp テンプレートで使用されるフォーム フィールド(大部分は他のテンプレートからインポートされる)と、そのそれぞれについての説明を表6-4 にまとめます。

    注意: フォーム フィールドが別のテンプレートからインポートされる場合には、解説欄にそう明記します。 そうしたインポート情報の記載のないフォーム フィールドは、newuser.jsp テンプレート内にあります。

    表6-4 newuser.jsp のフォーム フィールド

    パラメータ名

    タイプ

    解説

    event

    Hidden

    どのイベントがトリガされたかを示す。 次の処理を決定するために Webflow で使用。

    origin

    Hidden

    現在のページ (newuser.jsp) の名前。Webflow で使用。

    namespace

    Hidden

    JSP のネームスペース。この JSP では、sampleapp_user

    HttpRequestConstants.
    CUSTOMER_FIRST_NAME

    Textbox

    顧客のファーストネーム。

    HttpRequestConstants.
    CUSTOMER_MIDDLE_NAME

    Textbox

    顧客のミドルネームのイニシャル。

    HttpRequestConstants.
    CUSTOMER_LAST_NAME

    Textbox

    顧客の姓。

    HttpRequestConstants.
    CUSTOMER_ADDRESS1

    Textbox

    顧客の住所の番地名以降の 1 行目。

    HttpRequestConstants.
    CUSTOMER_ADDRESS2

    Textbox

    顧客の住所の番地名以降の 2 行目。

    HttpRequestConstants.
    CUSTOMER_CITY

    Textbox

    顧客の住所の市区町村名。

    HttpRequestConstants.
    CUSTOMER_STATE

    Listbox

    顧客の住所の州(都道府県)名。 states.inc からインポート。

    HttpRequestConstants.
    CUSTOMER_ZIPCODE

    Textbox

    顧客の住所の郵便番号。

    HttpRequestConstants.
    CUSTOMER_COUNTRY

    Listbox

    顧客の住所の国名。 countries.inc からインポート。

    HttpRequestConstants.
    CUSTOMER_HOME_PHONE

    Textbox

    顧客の自宅電話番号。

    HttpRequestConstants.
    CUSTOMER_BUSINESS_PHONE

    Textbox

    顧客の勤務先電話番号。

    HttpRequestConstants.
    CUSTOMER_EMAIL

    Textbox

    顧客の電子メール アドレス。

    HttpRequestConstants.
    CUSTOMER_EMAIL_OPT_IN

    Checkbox

    顧客がプロモーション用電子メールの受信を希望していることを示す。

    HttpRequestConstants.
    SAME_AS_ABOVE

    Checkbox

    顧客の届け先住所が連絡先住所と同じであることを示す。 newaddresstemplate.inc からインポート。

    HttpRequestConstants.
    CUSTOMER_SHIPPING_ADDRESS1

    Textbox

    顧客の届け先住所の番地名以降の 1 行目。 newaddresstemplate.inc からインポート。

    HttpRequestConstants.
    CUSTOMER_SHIPPING_ADDRESS2

    Textbox

    顧客の届け先住所の番地名以降の 2 行目。 newaddresstemplate.inc からインポート。

    HttpRequestConstants.
    CUSTOMER_SHIPPING_CITY

    Textbox

    顧客の届け先住所の市区町村名。 newaddresstemplate.inc からインポート。

    HttpRequestConstants.
    CUSTOMER_SHIPPING_STATE

    Listbox

    顧客の届け先住所の州(都道府県)名。 newaddresstemplate.inc からインポート。

    HttpRequestConstants.
    CUSTOMER_SHIPPING_ZIPCODE

    Textbox

    顧客の届け先住所の郵便番号。 newaddresstemplate.inc からインポート。

    HttpRequestConstants.
    CUSTOMER_SHIPPING_COUNTRY

    Listbox

    顧客の届け先住所の国名。 newaddresstemplate.inc からインポート。

    HttpRequestConstants.
    CUSTOMER_GENDER

    Radio ボタン

    顧客が男性か女性かを示す。 newdemographictemplate.inc からインポート。

    HttpRequestConstants.
    CUSTOMER_DATE_OF_BIRTH

    Textbox

    顧客の生年月日。 newdemographictemplate.inc からインポート。

    HttpRequestConstants.
    CUSTOMER_OCCUPATION

    Radio ボタン

    顧客の職業。 newdemographictemplate.inc からインポート。

    HttpRequestConstants.
    CUSTOMER_EMPLOYMENT_STATUS

    Radio ボタン

    登録時に顧客が職に就いているかどうかを示す。 newdemographictemplate.inc からインポート。

    HttpRequestConstants.
    CUSTOMER_MARITAL_STATUS

    Radio ボタン

    顧客が結婚しているかどうかを示す。 newdemographictemplate.inc からインポート。

    HttpRequestConstants.
    CUSTOMER_EDUCATION_LEVEL

    Radio ボタン

    顧客の最終学歴を示す。 newdemographictemplate.inc からインポート。

    HttpRequestConstants.
    CUSTOMER_INCOME_RANGE

    Radio ボタン

    顧客の年収を示す。 newdemographictemplate.inc からインポート。

    HttpRequestConstants.
    CUSTOMER_QUALITY

    Radio ボタン

    商品使用に関する顧客のレベルを初心者から熟練者までの範囲で分類する。 newdemographictemplate.inc からインポート。

    HttpRequestConstants.
    CUSTOMER_CREDITCARD_TYPE

    Listbox

    顧客のクレジット カードの種類。newcctemplate.inc からインポート。

    HttpRequestConstants.
    CUSTOMER_CREDITCARD_HOLDER

    Textbox

    クレジット カードの名義人の氏名。 newcctemplate.inc からインポート。

    HttpRequestConstants.
    CUSTOMER_CREDITCARD_NUMBER

    Textbox

    顧客のクレジット カード番号。 newcctemplate.inc からインポート。

    HttpRequestConstants.
    CUSTOMER_CREDITCARD_MONTH

    Listbox

    顧客のクレジット カードの有効期限(月)。 newcctemplate.inc からインポート。

    HttpRequestConstants.
    CUSTOMER_CREDITCARD_YEAR

    Listbox

    顧客のクレジット カードの有効期限(年)。 newcctemplate.inc からインポート。

    HttpRequestConstants.
    CUSTOMER_CREDITCARD_ADDRESS1

    Textbox

    顧客の請求先住所の 1 行目。 newcctemplate.inc からインポート。

    HttpRequestConstants.
    CUSTOMER_CREDITCARD_
    ADDRESS2

    Textbox

    顧客の請求先住所の 2 行目。 newcctemplate.inc からインポート。

    HttpRequestConstants.
    CUSTOMER_CREDITCARD_CITY

    Textbox

    顧客の請求先住所の市区町村名。 newcctemplate.inc からインポート。

    HttpRequestConstants.
    CUSTOMER_CREDITCARD_STATE

    Listbox

    顧客の請求先住所の州(都道府県)名。 newcctemplate.inc からインポート。

    HttpRequestConstants.
    CUSTOMER_CREDITCARD_ZIPCODE

    Textbox

    顧客の請求先住所の郵便番号。 newcctemplate.inc からインポート。

    HttpRequestConstants.
    CUSTOMER_CREDITCARD_COUNTRY

    Listbox

    顧客の請求先住所の国名。 newcctemplate.inc からインポート。

    HttpRequestConstants.USER_NAME

    Textbox

    顧客がログイン用に指定したユーザ名。

    HttpRequestConstants.PASSWORD

    Password

    顧客がログイン用に指定したパスワード。

    HttpRequestConstants.
    CONFIRM_PASSWORD

    Password

    顧客がログイン用に指定したパスワードの確認入力。


     

    注意: JSP コード内でリテラルとして扱われるパラメータは、引用符で囲んで示されています。一方、リテラルでないパラメータを JSP 内で使用するには、スクリプトレット構文(たとえば、
    <%= HttpRequestConstants.USER_NAME %> など)に従う必要があります。

    newusercreation.jsp

    newusercreation.jsp テンプレートは、新しくユーザ プロファイルを作成した顧客に、ログインと登録が完了したことを知らせます。 また、そこからショッピングに戻るためのいくつかのナビゲーション オプションも提供されます。

    解説

    newusercreation.jsp を用いて書式化された Web ページの例を 図 6-24 に示します。

    図6-24 newusercreation.jsp を用いて書式化された Web ページ


     

    チェックアウトに進むオプションは、顧客のショッピング カートに商品が入っている場合にのみ、newusercreation.jsp テンプレートに表示されます。 商品が入っていない場合には、図 6-25 に示すように、newusercreation.jsp テンプレートにこのオプションは表示されません。

    図6-25 newusercreation.jsp を用いて書式化された Web ページ(ショッピング カートが空の場合)


     

    newusercreation.jsp の動作の仕組み

    新規ユーザ プロファイルの作成が正常に終了し、JAAS (Java Authentication and Authorization Service) を用いた自動ログインが完了すると、顧客に対して newusercreation.jsp テンプレートが表示されます。 顧客が新しくプロファイルを作成したあとで自動ログインが完了しなかった場合には、顧客に対して、newusercreation.jsp テンプレートではなく、login.jsp テンプレートが再び表示されます。手動ログインの場合には、顧客に対して main.jsp テンプレートが表示されます。

    注意: 以前サイトを利用したときにプロファイルを作成してある顧客が login.jsp テンプレートを用いてログインした場合には、顧客がアクセスしようとしていた保護ページが表示されるだけです。

    newusercreation.jsp テンプレートで顧客が行えることは、ショッピング カートに戻ること (shoppingcart.jsp)、ショッピングを続けること、チェックアウト プロセスに進むこと (shipping.jsp)、注文履歴を閲覧すること (orderhistory.jsp)、自分のプロファイルを閲覧すること (viewprofile.jsp)、支払履歴を閲覧すること (paymenthistory.jsp)、ログアウトすること、そしてメインのカタログ ページに戻ること (main.jsp) です。

    注意: チェックアウトに進むオプションは、顧客のショッピング カートに商品が入っている場合にのみ、newusercreation.jsp テンプレートに表示されます。

    このテンプレートは、Webflow の sampleapp_user ネームスペースの一部です。

    イベント

    顧客がボタンをクリックして注文の詳細を閲覧する操作は、すべてイベントと見なされます。 イベントのたびに、デフォルト Webflow の特定の応答がトリガされて、顧客は操作を続けることができます。 この応答では、別の JSP がロードされることもありますが、通常は、入力プロセッサと Pipeline の両方またはいずれか一方が先に起動されます。これらのイベントと、それによって呼び出されるビジネス ロジックを 表6-5 に示します。

    表6-5 newusercreation.jsp のイベント

    イベント

    Webflow の応答

    link.shoppingcart

    InitShoppingCartIP

    button.checkout

    InitShippingMethodListIP

    link.home

    GetTopCategoriesIP

    GetTopCategories Pipeline


     

    newuserforward.jsp

    newuserforward.jsp テンプレートは、未登録のユーザが静的 URI の記述された広告プレースホルダをクリックしたときに、そのユーザを newuser.jsp に誘導するためのものです。 これが必要なのは、プレースホルダで動的 URI がサポートされていないからです。 newuserforward.jsp テンプレートによって、ユーザには newuser.jsp が表示されます。 さらに、newuserforward.jsp は、セキュリティの確保されていない接続からセキュリティの確保された接続への切り替え(.http から .https へ)の橋渡しも行います。

    解説

    このテンプレートは、Web ページなどの目に見える出力を表示しません。 そのコードは、リスト 6-18 に示すとおりです。

    コード リスト 6-18 newuserforward.jsp のコード

    <% String s = com.bea.p13n.appflow.webflow.WebflowJSPHelper.
    createWebflowURL(pageContext, "sampleapp_main", "login.jsp",
    "button.createUser", true); %>
    <% response.sendRedirect(s) ; %>

    表6-6 に主要なテンプレート コンポーネントを示します。

    表6-6 テンプレート コンポーネント

    コンポーネントのタイプ

    コンポーネント

    インクルードされるテンプレート

    なし

    タグ ライブラリ

    なし

    インポートされる Java パッケージ

    なし


     

    newuserforward.jsp の動作の仕組み

    newuserforward.jsp は、匿名ユーザからアクセスできる任意のページのあとに表示される可能性があります。 ただし、このテンプレートが必要になるのは、未登録のユーザが広告プレースホルダをクリックし、登録するよう勧められた場合だけです。 プレースホルダ内の静的 URI が newuserforward.jsp にアクセスし、今度はそのテンプレートによって、ユーザに newuser.jsp テンプレートが表示されます。

    このテンプレートは、Webflow の sampleapp_main ネームスペースの一部です。

    イベント

    newuserforward.jsp テンプレートで扱われるイベントは 1 つで、このイベントによってデフォルト Webflow 内の特定の応答がトリガされ、顧客が処理を続行できるようになります。 この応答では、別の JSP がロードされることもありますが、通常は、入力プロセッサまたは Pipeline が先に呼び出されます。 このイベントとそれによって呼び出されるビジネス ロジックを表6-7 に示します。

    表6-7 newuserforward.jsp のイベント

    イベント

    Webflow の応答

    button.createUser

    newuser.jsp


     

    usercreationforward.jsp

    usercreationforward.jsp テンプレートは、登録と、JAAS を用いた自動ログイン プロセスが Webflow で完了したあと、新規ユーザに newusercreation.jsp テンプレートを表示するためのものです。 ユーザが作成されたらリクエストをフラッシュする必要がありますが、その処理は usercreationforward.jsp テンプレートで行われます。

    解説

    このテンプレートは、Web ページなどの目に見える出力を表示しません。 そのコードは、リスト 6-19 に示すとおりです。

    コード リスト 6-19 usercreationforward.jsp のコード

    <% String s = WebflowJSPHelper.createWebflowURL(pageContext,
    "sampleapp_user", "usercreationforward.jsp",
    "forward.usercreation", true); %>
    <% response.sendRedirect(s) ; %>

    usercreationforward.jsp テンプレートでは、com.bea.p13n.appflow.webflow.WebflowJSPHelper パッケージ内の Java クラスを使用しており、以下のインポート文を含んでいる必要があります。

    <%@ page import="com.bea.p13n.appflow.webflow.
    WebflowJSPHelper*" %>

    usercreationforward.jsp の動作の仕組み

    usercreationforward.jsp は、newuser.jsp テンプレートのあとに表示されるページです。 新規ユーザは、自分のプロファイルを保存すると、 JAAS により自動ログインします。ログインが正常に完了すると、以前のリクエストをフラッシュする必要があるので、ユーザを newusercreation.jsp テンプレートにリダイレクトするために usercreationforward.jsp が必要になります。

    このテンプレートは、Webflow の sampleapp_user ネームスペースの一部です。

    イベント

    usercreationforward.jsp テンプレートで扱われるイベントは 1 つで、このイベントによってデフォルト Webflow 内の特定の応答がトリガされ、顧客が処理を続行できるようになります。 この応答では、別の JSP がロードされることもありますが、通常は、入力プロセッサまたは Pipeline が先に呼び出されます。 このイベントとそれによって呼び出されるビジネス ロジックを表6-8 に示します。

    表6-8 usercreationforward.jsp のイベント

    イベント

    Webflow の応答

    forward.usercreation

    newusercreation.jsp


     

    訪問者自主登録で用いられる Webflow コンポーネント

    顧客プロファイル用 JSP を実装するで説明したテンプレートでは、入力プロセッサおよび Pipeline と呼ばれる Webflow コンポーネントを用いて、訪問者自主登録を機能させるのに必要なビジネス ロジックの多くを実行します。 この節では、実装されている主要な Webflow コンポーネントについて説明します。

    以下のトピックスを扱います。

    注意: Webflow の使用、作成、あるいは変更と、入力プロセッサおよび Pipeline コンポーネントの使用については、ポータル ナビゲーションのセットアップ を参照してください。

    入力プロセッサ

    以下の入力プロセッサは、Webflow メカニズムから起動されたときに、より複雑な訪問者登録処理を実行するために呼び出される Java クラスを表します。

    入力プロセッサの詳細については、ノードのタイプを参照してください。

    CustomerProfileIP

    CustomerProfileIP(入力プロセッサ名はすべて末尾に「IP」という文字が付く)は、newuser.jsp の入力を処理し、顧客が自分のプロファイルを保存できるようにします。 さらに、CustomerValue オブジェクトを作成して Pipeline Processor セッションに格納します。

    呼び出されるクラス

    examples.wlcs.sampleapp.customer.webflow.
    CustomerProfileIP

    HTTPServletRequest の必須パラメータ

    (個人情報)

    HttpRequestConstants.CUSTOMER_FIRST_NAME

    HttpRequestConstants.CUSTOMER_MIDDLE_NAME

    HttpRequestConstants.CUSTOMER_LAST_NAME

    HttpRequestConstants.CUSTOMER_ADDRESS1

    HttpRequestConstants.CUSTOMER_ADDRESS2

    HttpRequestConstants.CUSTOMER_CITY

    HttpRequestConstants.CUSTOMER_STATE

    HttpRequestConstants.CUSTOMER_ZIPCODE

    HttpRequestConstants.CUSTOMER_COUNTRY

    HttpRequestConstants.CUSTOMER_HOME_PHONE

    HttpRequestConstants.CUSTOMER_BUSINESS_PHONE

    HttpRequestConstants.CUSTOMER_EMAIL

    HttpRequestConstants.CUSTOMER_EMAIL_OPT_IN

    (コードの記載場所: newuser.jsp テンプレート)

    HTTPServletRequest の必須パラメータ

    (デモグラフィック情報)

    HttpRequestConstants.CUSTOMER_INCOME_RANGE

    HttpRequestConstants.CUSTOMER_EDUCATION_LEVEL

    HttpRequestConstants.CUSTOMER_DATE_OF_BIRTH

    HttpRequestConstants.CUSTOMER_GENDER

    HttpRequestConstants.CUSTOMER_OCCUPATION

    HttpRequestConstants.CUSTOMER_MARITAL_STATUS

    HttpRequestConstants.CUSTOMER_EMPLOYMENT_STATUS

    HttpRequestConstants.CUSTOMER_QUALITY

    (コードの記載場所: newdemographictemplate.inc テンプレート)

    HTTPServletRequest の必須パラメータ

    (届け先情報)

    HttpRequestConstants.SAME_AS_ABOVE

    (コードの記載場所: newuser.jsp テンプレート)

    HttpRequestConstants.CUSTOMER_SHIPPING_ADDRESS1

    HttpRequestConstants.CUSTOMER_SHIPPING_ADDRESS2

    HttpRequestConstants.CUSTOMER_SHIPPING_CITY

    HttpRequestConstants.CUSTOMER_SHIPPING_STATE

    HttpRequestConstants.CUSTOMER_SHIPPING_ZIPCODE

    HttpRequestConstants.CUSTOMER_SHIPPING_COUNTRY

    HttpRequestConstants.DEFAULT_SHIPPING_ADDRESS

    (コードの記載場所: newaddresstemplate.inc テンプレート)

    HTTPServletRequest のパラメータ

    (支払情報)

    HttpRequestConstants.CUSTOMER_CREDITCARD_TYPE

    HttpRequestConstants.CUSTOMER_CREDITCARD_HOLDER

    HttpRequestConstants.CUSTOMER_CREDITCARD_NUMBER

    HttpRequestConstants.CUSTOMER_CREDITCARD_MONTH

    HttpRequestConstants.CUSTOMER_CREDITCARD_YEAR

    HttpRequestConstants.CUSTOMER_CREDITCARD_ADDRESS1

    HttpRequestConstants.CUSTOMER_CREDITCARD_ADDRESS2

    HttpRequestConstants.CUSTOMER_CREDITCARD_CITY

    HttpRequestConstants.CUSTOMER_CREDITCARD_STATE

    HttpRequestConstants.CUSTOMER_CREDITCARD_ZIPCODE

    HttpRequestConstants.CUSTOMER_CREDITCARD_COUNTRY

    (コードの記載場所: newcctemplate.incテンプレート)

    HTTPServletRequest の必須パラメータ

    (アカウント情報)

    HttpRequestConstants.USER_NAME

    HttpRequestConstants.PASSWORD

    HttpRequestConstants.CONFIRM_PASSWORD

    (コードの記載場所: newuser.jsp テンプレート)

    必須の Pipeline セッション プロパティ

    なし

    更新される Pipeline セッション プロパティ

    PipelineSessionConstants.CUSTOMER

    PipelineSessionConstants.PASSWORD

    PipelineSessionConstants.CREDITCARD_KEY(顧客がクレジット カード情報を更新する場合のみ)

    削除される Pipeline セッション プロパティ

    なし

    検証

    必須フィールドに値が入力されていること、およびクレジット カード番号が 16 桁未満(AMEX の場合は 15 桁未満)でないことを確認する。 また、パスワード フィールドとパスワードの確認入力フィールドの値が一致することを確認する。

    例外

    必須フィールドに値が入力されていない場合、あるいはクレジット カード番号が 16 桁未満(AMEX の場合は 15 桁未満)の場合には、InvalidInputException が送出される。


     

    LoginCustomerIP

    LoginCustomerIP は、login.jsp の入力を処理し、サイトのセキュリティ保護付きページに顧客からアクセスできるようにします。 さらに、CustomerValue オブジェクトを作成して Pipeline Processor セッションに格納します。

    呼び出されるクラス

    examples.wlcs.sampleapp.customer.webflow.
    LoginCustomerIP

    HTTPServletRequest の必須パラメータ

    なし

    必須の Pipeline セッション プロパティ

    PipelineSessionConstants.CUSTOMER

    PipelineSessionConstants.PASSWORD

    PipelineSessionConstants.CREDITCARD_KEY(顧客がクレジット カード情報を更新する場合のみ)

    更新される Pipeline セッション プロパティ

    なし

    削除される Pipeline セッション プロパティ

    PipelineSessionConstants.PASSWORD

    検証

    ユーザ名とパスワードが正しいかどうか確認する。

    例外

    ユーザ名かパスワードが無効の場合には、InvalidInputException が送出される。

    ユーザ名が無効か、認証を取得できない場合には、ProcessingException が送出される。


     

    Pipeline コンポーネント

    この節では、Customer Login and Registration サービスの JSP テンプレートに関連付けられている各 Pipeline コンポーネントについて簡単に説明します。 これらの Pipeline は、訪問者登録に関係する特定タスクの実行を Webflow で開始する際に呼び出されるプロセッサ ノードです。

    注意: Pipeline コンポーネントの中には、他の基本 Pipeline コンポーネントを拡張するものがあります。 基本クラスの詳細については、『Javadoc』を参照してください。

    Pipeline コンポーネントの詳細については、ノードのタイプを参照してください。

    この節では、以下の Pipeline コンポーネントについて説明します。

    RegisterUserPC

    RegisterUserPC(Pipeline コンポーネント名はすべて末尾に「PC」という文字が付く)は 、Pipeline Processor セッションから CustomerValue オブジェクトとパスワードを取得し、CUSTOMER 属性を作成します。

    クラス名

    examples.wlcs.sampleapp.customer.pipeline.
    RegisterUserPC

    組み込み先

    CustomerProfile Pipeline

    必須の Pipeline
    セッション プロパティ

    PipelineSessionConstants.CUSTOMER

    PipelineSessionConstants.PASSWORD

    更新される Pipeline
    セッション プロパティ

    なし

    削除される Pipeline
    セッション プロパティ

    PipelineSessionConstants.PASSWORD

    タイプ

    Java クラス

    JNDI 名

    なし

    例外

    Pipeline コンポーネントでユーザを作成できない場合には、PipelineException が送出される。


     

    EncryptCreditCardPC

    EncryptCreditCardPC は、CREDITCARD_KEY オブジェクトを用いて顧客のクレジット カード情報を取得し、クレジット カード番号を暗号化したあと、修正済みのクレジット カード情報を PipelineSession CustomerValue 属性に追加し直します。

    クラス名

    examples.wlcs.sampleapp.customer.pipeline.
    EncryptCreditCardPC

    解説

    組み込み先

    CustomerProfile Pipeline

    必須の Pipeline
    セッション プロパティ

    PipelineSessionConstants.CREDITCARD_KEY

    更新される Pipeline
    セッション プロパティ

    PipelineSessionConstants.CUSTOMER

    削除される Pipeline
    セッション プロパティ

    PipelineSessionConstants.CREDITCARD_KEY

    タイプ

    Java クラス

    JNDI 名

    なし

    例外

    Pipeline コンポーネントが Pipeline Processor セッション内にユーザを見つけられないか、creditcard_key が無効か、あるいは暗号化が正常に終了しなかった場合には、PipelineException が送出される。


     

     

    ページの先頭 前 次