ヘッダーをスキップ
Oracle® Fusion Middleware WebCenter Sites開発者ガイド
11gリリース1 (11.1.1.8.0)
E49681-03
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

40 Engageページのコーディング

この章では、訪問者情報を収集し、その情報に基づいて訪問者ごとの販促用メッセージをパーソナライズするオンライン・サイトの設計について説明しています。

この章には次の項が含まれます。


注意:

この章では、説明するタスクを実行するために固有のXMLタグを参照します。また、そのすべてのケースには対応するJSPタグが存在します。これらのXMLタグおよびJSPタグの詳細は、Oracle Fusion Middleware WebCenter Sitesタグ・リファレンスを参照してください。


40.1 商用コンテキストおよび訪問者コンテキスト

Engageサイトでの訪問者セッション中、その訪問者用の訪問者コンテキストが作成されます。この訪問者コンテキストには、次の5種類のセッション・オブジェクトがあります。

商用コンテキストには訪問者コンテキストが含まれており、開発者に訪問者コンテキストへのアクセス権を付与します。

これらのコンテキストのインタフェースとして機能するXMLおよびJSPオブジェクト・メソッドには、次の2つのセットがあります。

40.2 訪問者の識別およびセッションのリンク

Engageでは、各セッションの各訪問者に対して一意の訪問者IDが作成されます。これらのIDは、WebCenter SitesデータベースのVMVISITOR表に格納されます。そのセッション中に訪問者に関して収集されたデータは、訪問者IDで識別されます。あるセッションから収集されたデータを別のセッションからのデータにリンクするには、サイト・ページでそれらの訪問者IDをリンクする別名を割り当てる必要があります。

別名を作成するには、訪問者データ・マネージャの次のオブジェクト・メソッドを使用します。

<VDM.SETALIAS KEY="keyvalue" VALUE="aliasvalue"/>

このタグを使用すると、Engageでは訪問者セッションIDと別名が関連付けられ、その両方がVMVISITORALIAS表に書き込まれます。

図40-1 VMVISITORALIAS表

図40-1の説明が続きます
「図40-1 VMVISITORALIAS表」の説明

この表の値は、別々のセッションで収集されたデータを同一の訪問者にリンクします。別名によって、その訪問者に対して記録されている訪問者IDへのリンクが提供されるためです。上の図では、訪問者ID 973717492772に関連付けられたセッションに記録されているデータは、訪問者ID 973717564355に関連付けられたデータにリンクされています。これらは、同一のキー/値ペアの別名を保持しているからです。

セッションに関連付けられたすべての訪問者情報は、共通の別名を通じてリンクされます。つまり、現在のセッション中に、同一のキー/値ペアを持つ別名にアクセスできます。これは、現在の訪問者の情報と見なされます。

Cookie、ログインIDまたはその他の一意の識別子を持つ別名を作成して、サイトでの訪問者の識別に使用できます。

VMVISITORALIAS表はすぐに大きくなります。この表およびその他の訪問者データ表の管理の詳細は、『Oracle Fusion Middleware WebCenter Sites管理者ガイド』を参照してください。

40.3 訪問者データの収集

訪問者データを収集するには、その収集および検証のほか、WebCenter Sitesデータベースへの書込みを行うためのオンライン・ページをプログラムする必要があります。

訪問者データ・マネージャには、データベースにその情報を書き込む3つのオブジェクト・メソッドがあります。

訪問者データが格納される表には次のものがあります。

表40-1 オブジェクト・メソッドおよびデータベース表

XMLまたはJSPオブジェクト・メソッド 書込み対象のデータベース表

VDM.SETSCALAR

vdm:setscalar

VMVISITORSCALARVALUE

VDM.SAVESCALAROBJECT

vdm:savescalarobject

VMVISITORSCALARBLOB

VDM.RECORDHISTORY

vdm:recordhistory

VMz------------

(これらの表は履歴定義ごとに動的に生成されます。Engageによってそれぞれに一意の表が作成されます。)


これらの表はすぐに大きくなります。これらの管理の詳細は、『Oracle Fusion Middleware WebCenter Sites管理者ガイド』を参照してください。

訪問者データ・マネージャには、WebCenter Sitesデータベースからこの情報を取得する複数のオブジェクト・メソッドもあります。第10章「エラー・ロギングおよびデバッグ」を参照してください。


注意:

これらの詳細、およびその他のEngageのXMLタグとJSPタグの詳細は、Oracle Fusion Middleware WebCenter Sitesタグ・リファレンスを参照してください。


40.4 訪問者データを収集するサイト・ページのコーディング

この項では、サイト・ページをコーディングして訪問者データを収集するための一般的な手順について説明します。

  1. 訪問者が入力したデータを取得するためのフォームを作成します。作成した属性と同じ名前のフォーム・フィールドを作成することをお薦めします。詳細は、第38章「訪問者データ・アセットの作成」を参照してください。

    Engageセグメント・フォームでは、名前ではなく説明によって属性がリストされます。フォーム・フィールドを作成する場合、あるいはWebCenter Sitesデータベースに値を書き込む場合には、属性の名前と説明を混同しないように気をつけてください。

  2. 訪問者がフィールドに入力したデータを検証する送信ページを作成します(JavaScriptまたはサーバー側の検証メソッドを使用)。入力データは、属性に設定された制約に準拠する必要があります。たとえば、訪問者の文字列型の属性を長さ30で作成した場合、長さ31でフォーム・フィールドからデータを送信しないようにします。

  3. 検証済データをWebCenter Sitesデータベースに書き込む送信ページをプログラムします。属性および履歴定義の名前を使用し、それらの説明は使用しないようにします。いくつかの例を次に示します。

この項の内容は、次のとおりです。

40.4.1 例1: 訪問者属性

<!-- Write the registration information to the database.-->
<VDM.SETSCALAR ATTRIBUTE="name" VALUE="Variables.name"/>
<VDM.SETSCALAR ATTRIBUTE="age" VALUE="Variables.age"/>
<VDM.SETSCALAR ATTRIBUTE="jobdesc" VALUE="Variables.jobdesc"/>

40.4.2 例2: 履歴定義

履歴定義には複数の値が集約して保持されているため、そのデータのリストを作成してからデータベースに書き込む必要があります。次の例では、フォームのオーダーがWebCenter Sitesデータベースに書き込まれます。

<!-- Write the order details to a list. -->
<!-- assume that Variables.order_id is set to the order id -->
<!-- assume that Variables.wasCouponUsed is set to 1 (yes) or 0 (no) -->
<!-- assume that Variables.shippingtype is set to UPS or FedEx -->
<!-- assume that Variables.order_price is set to the total amount of the
order -->

<LISTOBJECT.CREATE NAME="histList" COLUMNS="orderid, shippingtype, price, couponUsed"/>
<LISTOBJECT.ADDROW NAME="histList" orderid="Variables.order_id"
shippingtype="Variables.shippingtype" price="Variables.order_price" couponUsed="Variables.wasCouponUsed"/>
<LISTOBJECT.TOLIST NAME="histList" LISTVARNAME="itemList"/>

<!-- Write the list to the history definition named visitorOrderHistory in the WebCenter Sites database.-->
<VDM.RECORDHISTORY ATTRIBUTE="visitorOrderHistory" LIST="itemList"/>

この記録を使用して、訪問者のオーダー数、初回または最後の購入日時、および支払い総額に関する情報を確認できます。

40.4.3 例3: バイナリ・タイプの訪問者属性

バイナリ訪問者属性では、WebCenter Sitesネームスペースからのオブジェクトをバイナリ・フォームに変換できます。Engageにより配信されたサンプル・サイトでは、バイナリ・タイプの2つの訪問者属性を使用します。1つは複数のセッション間でショッピング・カートを格納するための属性で、もう1つは保存済検索を格納するための属性です。

これらの例を参照するには、Oracle WebCenter Sites Explorerを使用して、ElementCatalog/OpenMarket/Demos/CatalogCentre/GE/Navigation/stylesheet.xmlおよびElementCatalog/OpenMarket/Demos/CatalogCentre/GE/myge.xmlを調べてください。

  1. 訪問者の動作(クリックストリーム情報など)に関するデータを収集する場合は、入力フォームを使用せずにデータを収集するページをプログラムできます。たとえば、Engageにより配信されたデモ・サイトでは、訪問者がサイトを閲覧した回数を記録するために履歴定義が使用されます。

    この例については、Oracle WebCenter Sites Explorerを使用して、ElementCatalog/OpenMarket/Demos/CatalogCentre/GE/Navigation/stylesheet.xmlを調べてください。

  2. 訪問者データがデータベースに書き込まれるたびに、セグメントおよびプロモーションも変更される可能性があります。したがって、訪問者データに変更があった場合は必ず、セグメント・リストおよびプロモーション・リストを再計算するようにします。商用コンテキストには、使用可能な2つのオブジェクト・メソッドがあります。

    COMMERCECONTEXT.CALCULATEPROMOTIONS

    COMMERCECONTEXT.CALCULATESEGMENTS

    COMMERCECONTEXT.CALCULATEPROMOTIONSでは、訪問者が所属するセグメントとそのセグメントに適用されるプロモーションの両方が再計算されます。

  3. 訪問者データがデータベースに書き込まれるたびに、アセットの評価も変更される可能性があります。したがって、訪問者データに変更があった場合は必ず、既存のアセット・セットにあるすべてのアセットの評価をリフレッシュするようにします。

    1つのセットにあるアセットのアセット評価をリフレッシュするには、ASSETSET.ESTABLISHRATINGSタグを使用します。


    注意:

    これらの詳細、およびその他のEngageのXMLオブジェクト・メソッドとJSPオブジェクト・メソッドの詳細は、Oracle Fusion Middleware WebCenter Sitesタグ・リファレンスを参照してください。


40.5 テンプレートおよび推奨

次のコードは、商用コンテキストで推奨アセットを起動する主要なオブジェクト・メソッドです。

<COMMERCECONTEXT.GETRECOMMENDATIONS COLLECTION="recommendationname" [LIST="inputlist" VALUE="rating" MAXCOUNT="assetcount"] LISTVARNAME="assetlist"/> 

このメソッドでは、メソッドに渡される推奨制限に一致するアセットが取得され、リストされます。ここでは次の引数が使用されます。

セグメント・リストとプロモーション・リストが訪問者コンテキスト内で作成および配置されていない場合、このオブジェクト・メソッドによって、それらを計算するメソッドが呼び出されます。プロモーションにはテンプレートがなく、推奨が使用しているテンプレートをオーバーライドすることに注意してください。現在の訪問者に適したプロモーションで、COLLECTION引数によって指定された推奨をオーバーライドするものがある場合、オブジェクト・メソッドは、推奨アセットによって特定されるアイテムではなく、プロモーション・アセットのIDを返します。


注意:

COMMERCECONTEXT.GETSINGLERECOMMENDATIONオブジェクト・メソッドでは、そのメソッドに渡された推奨基準に基づいて推奨されたアセットが1つ返されます。このメソッドは通常、1つの製品に注目を集めるか、1つの製品を販売する場合に使用されます。このオブジェクト・メソッドおよびJSPオブジェクト・メソッドの詳細は、Oracle Fusion Middleware WebCenter Sitesタグ・リファレンスを参照してください。


推奨のテンプレートのコーディングを始める前に、次のタスクを完了しておきます。

推奨のテンプレートの作成

推奨アセットによって返されたアイテムをレンダリングするテンプレートを使用するには、少なくとも次の基本手順を完了する必要があります。

  1. 推奨アセットを起動するテンプレート・エレメントを作成します。前述の項で説明したオブジェクト・メソッドを使用します。

  2. 推奨によって返されたアイテムを表示するテンプレートをコーディングします。返されたアイテムは、LISTVARNAME引数によって指定された変数に格納されます。このリストには、アセットIDとそれらのアイテムのアセット・タイプが含まれます。その情報を使用して、表示するアセット属性を抽出します。(名前、価格、SKUなど。)

    ASSETSET.SETLISTEDASSETSオブジェクト・メソッドおよびASSETSET.GETASSETLISTオブジェクト・メソッドを使用することで、返されたアセットとその属性をソートして表示できます。

    この例については、Oracle WebCenter Sites Explorerを使用して、ElementCatalog/OpenMarket/Demos/CatalogCentre/Templates/GE/recommendation.xmlを調べてください。

  3. Engageを開きます。「新規」で「テンプレート」を選択します。このテンプレート・エレメントに対応するテンプレート・アセットを作成します。エレメントの実行内容を説明する名前を入力することで、推奨アセットの作成時、そのアセットに割り当てられるテンプレートを把握できます。「エレメント名」フィールド内のエレメント(そのElementCatalog内の場所)へのパスを特定します。

  4. 他のアセットがパブリッシュされたら、テンプレート・アセットをパブリッシュします。

  5. 適切なサイト・ページに推奨をレンダリングします。

Oracle Real-Time Decisionsを使用した推奨のテンプレートの作成

Oracle Real-Time Decisions (RTD)は、サイトの訪問者が選択を行うときに、最適な選択肢を推奨することで意思決定を支援するエンジンです。commercecontext:getrecommendationsタグが呼び出されると、このタグは、推奨のリストと特定の訪問者のプロファイル情報をOracle RTDに送信します。Oracle RTDは、推奨をランク付けし、maxcount="<n>"パラメータを使用して、訪問者のプロファイルに最適なn個の精選された推奨のリストを返します。


注意:

このリリースのWebCenter Sitesでは、Oracle Real-Time Decisions (RTD)バージョン3.0シリーズをサポートしています。RTD 11gはサポートしていません。


Oracle RTD(およびその他のエンジン)は、次のタグを使用することで、WebCenter Sitesに統合できます。


注意:

choicesパラメータ(推奨の選択)は、このタグから削除されました。選択肢のリストは、リストのtag属性によって、RTDに渡されるようになりました。


Oracle RTDでcommercecontext:getrecommendationsタグの属性リストが認識されたら、開発者は、sessionkeyパラメータを使用して、後続のcommercecontext:informコール用に、訪問者をそのプロファイルにマップできます。たとえば、Oracle RTDに対してcommercecontext:getrecommendationsコールが行われた後の、同じ訪問者からの次回のコールでは、属性を空の文字列として渡すことで、同一のsessionkeyを使用して推奨を取得できるようになります。


注意:

commercecontext:getrecommendationsタグとcommercecontext:informタグを使用してOracle RTDを呼び出す場合、rtd.inline.service.nameプロパティとrtd.hostプロパティをfuturetense_xcel.iniファイルに追加する必要があります。


commercecontextタグ、パラメータ定義、およびOracle RTDとの統合の詳細とサンプル・コードは、Oracle Fusion Middleware WebCenter Sitesタグ・リファレンスを参照してください。rtd.inline.service.nameプロパティ、rtd.hostプロパティおよびrtd.choiceId.patternプロパティの詳細は、『Oracle Fusion Middleware WebCenter Sitesプロパティ・ファイル・リファレンス』を参照してください。

40.6 ショッピング・カートおよびEngage

Engageでショッピング・カート・インタフェースを使用する場合は、ショッピング・カート・ページをコーディングする際に注意すべき追加事項とヒントがいくつかあります。

CARTオブジェクト・メソッドの詳細およびJSPオブジェクト・メソッドの詳細は、Oracle Fusion Middleware WebCenter Sitesタグ・リファレンスを参照してください。

Engageショッピング・カートの例については、Oracle WebCenter Sites Explorerを使用して、ElementCatalog/OpenMarket/Demos/CatalogCentre/GE/cart.xmlを調べてください。

40.7 サイト・ページのデバッグ

開発フェーズの間は、セッション・リンクが正しく設定されていること、特定の属性によって期待どおりの値が取得されること、さらに推奨で目的のアイテムが返されることを確認する必要があります。Engageには、ブラウザ・ウィンドウやJREログに情報を書き込むことで、情報と値の取得および確認を可能にする複数のオブジェクト・メソッドが存在します。

この項では、最も使用する可能性が高い訪問者データ・マネージャのオブジェクト・メソッドをリストします。これらの詳細、およびその他のXMLオブジェクト・メソッドとJSPオブジェクト・メソッドの詳細は、Oracle Fusion Middleware WebCenter Sitesタグ・リファレンスを参照してください。

この項の内容は、次のとおりです。

40.7.1 セッション・リンク

訪問者データ・マネージャの次のオブジェクト・メソッドを使用して、セッション・リンクを処理するページでその別名が正しく作成されることを確認します。

  • <VDM.GETALIAS KEY="keyvalue" VARNAME="varname"/>

    別名を取得します。

  • <VDM.GETCOMMERCEID VARNAME="varname"/>

    セッション・データから訪問者のコマースIDを取得します。

  • <VDM.GETACCESSID KEY="pluginname" VARNAME="varname"/>

    セッション・データから訪問者のアクセスIDを取得します。

40.7.2 訪問者データの収集

訪問者データ・マネージャの次のオブジェクト・メソッドを使用して、特定の訪問者属性、履歴属性および履歴定義(記録)について格納されている値を取得します。

  • <VDM.GETSCALAR ATTRIBUTE="attribute" VARNAME="varname"/>

    特定の訪問者属性を取得します。

  • <VDM.LOADSCALAROBJECT ATTRIBUTE= "attribute" VARNAME= "varname"/>

    バイナリ・タイプの訪問者属性として格納されているオブジェクトを取得(実体化)します。

  • <VDM.GETHISTORYCOUNT ATTRIBUTE="attribute"VARNAME="varname"[STARTDATE="date1" ENDDATE="date2"LIST="constraints"]/>

    指定された基準に一致する訪問者について記録された履歴定義の記録回数を取得します。

  • <VDM.GETHISTORYSUM ATTRIBUTE="attribute" VARNAME="varname"[STARTDATE="date1" ENDDATE="date2" LIST="constraints"]FIELD="fieldname"/>

    指定された履歴定義に対する特定のフィールド内のエントリを合計します。

  • <VDM.GETHISTORYEARLIEST VARNAME="varname" [STARTDATE="date1"ENDDATE="date2" LIST="constraints"]/>

    この訪問者について、指定された履歴定義が初めて記録されたときのタイムスタンプを取得します。

  • <VDM.GETHISTORYLATEST VARNAME="varname"[STARTDATE="date1"ENDDATE="date2" LIST="constraints"] />

    この訪問者について、指定された履歴定義が最後に記録されたとき(つまり最新)のタイムスタンプを取得します。

40.7.3 推奨およびプロモーション

商用コンテキストの次のオブジェクト・メソッドを使用して、推奨およびプロモーションを表示するページを確認します。

  • <COMMERCECONTEXT.CALCULATESEGMENTS/>

    訪問者が所属するセグメントをリストします。ここでは、使用可能な訪問者データを調査し、それをセグメントを定義するデータ型と比較して、一致するセグメントをリストします。

  • <COMMERCECONTEXT.GETPROMOTIONS LISTVARNAME="promotionlist"/>

    現在の訪問者を対象とするプロモーションのリストを作成します。

  • <COMMERCECONTEXT.GETRATINGS ASSETS="assetlist" LISTVARNAME="ratinglist" DEFAULTRATING="defaultrating"/>

    名前付きリスト内のアセットの評価を、訪問者が所属するセグメントに基づき、この訪問者に対するアセットの重要度に従って計算します。

  • <COMMERCECONTEXT.GETSEGMENTS LISTVARNAME="segmentlist"/>

    現在の訪問者が所属するセグメントのリストを取得します。