プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle WebCenter Sitesでの開発
12c (12.2.1.1)
E77292-01
目次へ移動
目次

前
次

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

Oracle WebCenter Sites: Engageを使用すると、訪問者情報を収集し、その情報に基づいて訪問者ごとの販促用メッセージをパーソナライズするオンライン・サイトを設計できます。

Engageページのコーディングの詳細は、次の項を参照してください。

注意:

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

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

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

  • 現在のショッピング・カート。

  • 訪問者が所属するセグメントのリスト

  • 訪問者に適したプロモーションのリスト

  • セグメントおよびプロモーションに対する時間ベースのルールの計算に使用される時間オブジェクト

  • 開発者に製品属性へのアクセス権を付与するユーティリティ・オブジェクト

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

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

  • 商用コンテキスト・メソッド。訪問者コンテキストにオブジェクトを配置するために使用されます。

  • 訪問者データ・マネージャ・メソッド。訪問者データを収集、格納および取得するほか、訪問者データを適切な訪問者に関連付けるために使用されます。

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

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

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

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

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

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

訪問者情報はすべて、共通の別名を通じてリンクされたセッションに関連付けられます。つまり、現在のセッション中に、同一のキー/値ペアを持つ別名にアクセスできます。これは、現在の訪問者の情報と見なされます。Cookie、ログインIDまたはその他の一意の識別子を持つ別名を作成して、サイトでの訪問者の識別に使用できます。

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

50.3 訪問者データの収集

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

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

  • <VDM.SETSCALAR ATTRIBUTE="attribute" VALUE="value"/>は、訪問者属性を記録します。

  • <VDM.RECORDHISTORY ATTRIBUTE="attribute" LIST="valuelist"/>は、履歴定義を記録します。

  • <VDM.SAVESCALAROBJECT ATTRIBUTE="attribute" OBJECT="objectname"/>は、バイナリ・タイプの訪問者属性を記録します。Engageにより配信されたデモ・サイトでは、このメソッドを使用して、セッション間のショッピング・カートが格納されるほか、訪問者用に保存された検索が格納されます。

    注意:

    これらのタグによってデータベースに情報が書き込まれるため、配信システムのパフォーマンスに影響を与える可能性があります。これらは効率的に使用してください。

表50-1に、訪問者データが格納される表を示します

表50-1 訪問者データが格納される表

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

VDM.SETSCALAR

vdm:setscalar

VMVISITORSCALARVALUE

VDM.SAVESCALAROBJECT

vdm:savescalarobject

VMVISITORSCALARBLOB

VDM.RECORDHISTORY

vdm:recordhistory

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

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

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

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

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

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

訪問者データを収集するためにサイト・ページをコーディングする一般的な手順は、次のとおりです。

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

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

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

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

この項には次のトピックが含まれます:

50.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"/>

50.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"/>

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

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

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

  1. 訪問者の動作(クリックストリーム情報など)に関するデータを収集するには、入力フォームを使用せずにデータを収集するページをプログラムします。

    たとえば、訪問者がサイトを閲覧した回数を記録するために履歴定義を使用できます。

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

    • COMMERCECONTEXT.CALCULATEPROMOTIONS

    • COMMERCECONTEXT.CALCULATESEGMENTS

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

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

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

    注意:

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

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

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

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

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

  • COLLECTION: 推奨の名前。複数の推奨に同じTemplateを使用する場合は、変数を使用して推奨IDを指定するようにこれをコーディングします。

  • LIST: アセットのリストの名前。これは、計算の入力として使用する名前です。

    COLLECTIONにより名付けられた推奨がコンテキストベースの推奨である場合は、この引数を使用します。列には、assettypeassetidがあります。このリストを作成するには、リスト・オブジェクトを作成し、入力に使用するアセットごとに行を追加します。

  • VALUE: 値を持たないアセットのデフォルトの評価。値を宣言しない場合、評価されていないアセットには、0から100のスケールのうちデフォルト評価の50が割り当てられます。この値は50に設定したままにしておくことをお薦めします。

  • MAXCOUNT: (オプション。)返されるアセットの最大数。この値を使用して、推奨アセットのリストを制限します。

  • LISTVARNAME: アセット・リストに割り当てる名前。列には、assettypeおよびassetidがあります。

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

注意:

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

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

  • マーケティング・チームと話し合い、サイトに表示するすべてのマーチャンダイジング・メッセージを定義し、推奨およびプロモーションでそれらのメッセージを表示する方法について計画します。たとえば、他の製品へのリンクのリストを表示しますか。リンクにどの情報を含める必要がありますか。製品名のみを表示しますか、それとも価格も含めますか。推奨がアセットのリストではなくプロモーションを返す場合、何を表示しますか。

  • 各推奨から推奨されたアセットが表示される場所とページを決定します。

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

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

  1. 推奨アセットを起動するテンプレート・エレメントを作成します。前述の項で説明したオブジェクト・メソッドを使用します。
  2. 推奨によって返されたアイテムを表示するテンプレートをコーディングします。返されたアイテムは、LISTVARNAME引数によって指定された変数に格納されます。このリストには、アセットIDとそれらのアイテムのアセット・タイプが含まれます。この情報を使用して、表示するアセット属性(NamePriceおよびSKUなど)を抽出します。

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

  3. Engageを開きます。「新規」の下で、「テンプレート」を選択します。このTemplateエレメントに対応するTemplateアセットを作成します。エレメントの実行内容を説明する名前を入力することで、推奨アセットの作成時、そのアセットに割り当てられるTemplateを把握できます。「エレメント名」フィールド内のエレメント(そのエレメント・カタログ内の場所)へのパスを特定します。
  4. 他のアセットがパブリッシュされたら、Templateアセットをパブリッシュします。
  5. 適切なサイト・ページに推奨をレンダリングします。

50.5.2 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に統合できます。

  • commercecontext:getrecommendationsタグ。engineおよびengineparametersは、エンジンを呼び出すために設定できる汎用パラメータです。Oracle RTDとの統合の場合、エンジン・パラメータはrtdに設定する必要があり、engineparametersでは、advisor (統合点)、attributes (訪問者のプロファイル)、sessionkeyassetattributesなど、Oracle RTD固有の各パラメータのリストを指定する必要があります。

  • commercecontext:informタグ。このタグもパラメータengineengineparametersを受け入れます。このタグの場合、engineparametersinformant (統合点)、attributes (訪問者のプロファイル)およびsessionkeyの各パラメータのリストを指定する必要があります。

注意:

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プロパティをwcs_properties.jsonファイルに追加する必要があります。

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

50.6 ショッピング・カートおよびEngageについて把握する必要がある内容

Engageとのショッピング・カート・インタフェースを使用してショッピング・カート・ページをコーディングする場合は、次の情報とヒントを考慮してください。

  • サイトでプロモーションを使用する場合は、プロモーションによる割引きが適用されるようにカート・ページをコーディングする必要があります。

    COMMERCECONTEXT.DISCOUNTCARTオブジェクト・メソッドおよびCOMMERCECONTEXT.DISCOUNTTEMPCARTオブジェクト・メソッドを使用して、プロモーションによる割引きをショッピング・カートに適用します。

  • カートの既存の割引きを消去した後に、再び割引きを適用することをお薦めします。

  • セッション間でカートを格納するには、それらをバイナリ・タイプの訪問者属性(スカラー・オブジェクト)としてデータベースに書き込みます。カートが変更されるたびにカート・オブジェクトをデータベースに書き込むようにします。

  • サイトで訪問者のログイン機能を使用する場合は、ショッピング・カートをマージする条件を設定できます。たとえば、ある訪問者は製品をカートに追加してから、ログインします。ログイン後に、Engageにより、アイテムも含む格納済のカートが検出されます。このような場合は、カートをマージします。

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

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

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

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

この項には次のトピックが含まれます:

50.7.1 セッション・リンク

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

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

    別名を取得します。

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

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

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

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

50.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"] />

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

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

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

  • <COMMERCECONTEXT.CALCULATESEGMENTS/>

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

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

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

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

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

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

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