Personalización de la JSTL de WebSphere Commerce para Coremetrics

Pasar datos personalizados a cuentas de Coremetrics

Como parte de su integración de fábrica entre la tienda de IBM® WebSphere® Commerce e IBM Coremetrics®, IBM WebSphere Commerce Versión 7 proporciona una JSTL personalizada que actúa como derivador para generar etiquetas de JavaScript de analítica de Coremetrics. En la mayoría de los casos, la biblioteca predeterminada satisface sus necesidades; sin embargo, algunas veces tal vez quiera pasar datos personalizados a cuentas de Coremetrics. Este artículo explica cómo extender la JSTL para pasar datos personalizados a Coremetrics.

Priyajith Chembakassery, Senior Staff Software Engineer, IBM

Priyajith Chembakassery es un Ingeniero Sénior del equipo de software en IBM India Software Labs, Bangalore. Tiene más de 5 años de experiencia con IBM WebSphere Commerce y trabaja para los componentes de Analítica, Marketing y Promoción en WebSphere Commerce.



14-01-2013

Introducción

IBM WebSphere Commerce Versión 7 proporciona una integración de fábrica entre la tienda de WebSphere Commerce e IBM Coremetrics, el proveedor de servicios de analítica entre canales preferido para WebSphere Commerce. La integración proporciona los siguientes dispositivos:

  • Una JSTL personalizada para WebSphere Commerce, la cual actúa como un derivador para generar las etiquetas de JavaScript de analítica de Coremetrics
  • Una infraestructura de etiquetado de tienda de analítica basada en Dojo para la tienda de Web 2.0, donde las etiquetas de Coremetrics son desencadenadas con base en eventos asíncronos
  • Una biblioteca de JavaScript para soportar la visualización de recomendaciones dinámicas de Oferta Inteligente desde Coremetrics
  • Integración del panel de instrumentos de Coremetrics e informes con la IU de IBM WebSphere Commerce Management Center utilizando inicio de sesión único

Acrónimos de uso frecuente

  • JSTL: JavaServer Pages Standard Tag Library
  • SDO: Service Data Objects

Este artículo explica cómo pasar datos personalizados a cuentas de Coremetrics al personalizar la JSTL de fábrica.

Coremetrics para WebSphere Commerce proporciona una JSTL personalizada para generar las etiquetas de JavaScript de Coremetrics. Estas etiquetas de JSTL son colocadas en las páginas de almacenamiento respectivas para generar el etiquetado de Coremetrics requerido para la página. Para obtener más información sobre las etiquetas de JSTL para integración de Coremetrics, vaya a "Analytics tag library for IBM WebSphere Commerce" en el Knowledge Center de WebSphere Commerce Versión 7.0 (vea Recursos).

Los datos generados de fábrica por estas etiquetas normalmente satisfacen sus necesidades. En algunos casos, tal vez quiera pasar valores para uno o más parámetros que son distintos de los valores predeterminados. Por ejemplo, la etiqueta de la JSTL de Coremetrics cart y la etiqueta order pasan el precio descontinuado de un producto en el parámetro de precio de unidad de Coremetrics cmCreateShopAction5Tag() como de la etiquetacmCreateShopAction9Tag() , de forma predeterminada. Si desea pasar el precio no descontinuado en estos parámetros en lugar del precio descontinuado predeterminado, es posible personalizar la JSTL de WebSphere Commerce para Coremetrics.


Personalizando la biblioteca de etiquetas

La JSTL de WebSphere Commerce para Coremetrics actúa como un derivador para las etiquetas de JavaScript de Coremetrics. Estas etiquetas de JSTL generalmente toman el ID de un objeto, un bean de datos o un objeto de SDO como entrada y generan las etiquetas apropiadas de JavaScript de Coremetrics. Toda clase de etiquetas de JSTL para integración de Coremetrics tiene una clase genérica de etiquetas base y una clase de implementación. La clase genérica de etiquetas base recolecta los datos que son necesarios para generar la etiqueta de JavaScript de Coremetrics. La clase de etiquetas de implementación extiende la clase genérica de etiquetas base y da formato a los datos con base en los requisitos de analítica del proveedor. Estas clases de etiquetas utilizan los datos para generar las etiquetas de JavaScript de Coremetrics y escribir aquellas etiquetas generadas para la secuencia de salida de HTML.

La Tabla 1 muestra las etiquetas de analítica de WebSphere Commerce y las clases de etiquetas de implementación de Coremetrics correspondientes. La tabla también muestra los métodos que deben ser sobrescritos para personalizar los datos de analítica que son pasados a Coremetrics.

Tabla 1. Etiquetas de analítica de WebSphere Commerce y las clases de etiquetas de implementación de Coremetrics correspondientes
Etiqueta de
Analítica
Clase Genérica de
Etiquetas Base
Clase de Implementación
de Coremetrics
Método(s) para sobrescribir
pageview com.ibm.commerce.bi.taglib.
CommonBaseTag

com.ibm.commerce.bi.taglib.
coremetrics.CommonTag
public HashMap<String,
Object> getParamMap()
registration com.ibm.commerce.bi.taglib.
MembershipBaseTag

com.ibm.commerce.bi.taglib.
coremetrics.RegistrationTag
public HashMap<String,
Object> getParamMap()
.com.ibm.commerce.bi.taglib.
ElementBaseTag

com.ibm.commerce.bi.taglib.
coremetrics.ElementTag
public HashMap<String,
Object> getParamMap()
conversion com.ibm.commerce.bi.taglib.
ConversionBaseTag

com.ibm.commerce.bi.taglib.
coremetrics.ConversionTag
public HashMap<String,
Object> getParamMap()
productocom.ibm.commerce.bi.taglib.
ProductBaseTag

com.ibm.commerce.bi.taglib.
coremetrics.ProductTag
public Vector<HashMap
<String, Object>> getParamVector()
order com.ibm.commerce.bi.taglib.
OrderBaseTag

com.ibm.commerce.bi.taglib.
coremetrics.OrderTag
  • public Vector<HashMap<String, Object>> getOrderItemsParamVector()
  • public HashMap<String,
    Object> getOrderParamMap()
cart com.ibm.commerce.bi.taglib.
CartBaseTag

com.ibm.commerce.bi.taglib.
coremetrics.CartTag
public Vector<HashMap<String,
Object>> getParamVector()
campurl com.ibm.commerce.bi.taglib.
CampaignBaseTag

com.ibm.commerce.bi.taglib.
coremetrics.CampaignURLTag
public HashMap<String,
Object> getParamMap()

La clase abstract base tag almacena los datos en un objeto java.util.HashMap o en un java.util.Vector . Por ejemplo, ya que la etiqueta pageview requiere una mínima cantidad de datos, la clase CommonBaseTag almacena los datos para analítica en un objeto HashMap. Sin embargo, la clase CartBaseTag debe pasar los datos en todos los elementos de la orden en el carrito de compras. Por esta razón, la clase CartBaseTag utiliza un Vector para almacenar los datos de analítica. Los detalles individuales de los elementos del carrito se encuentran dentro de un HashMap. Los detalles de la estructura del objeto HashMap y las claves utilizadas en la correlación son listados en el javadoc de cada clase de etiquetas base.


Ejemplo: personalizar la etiqueta de orden para pasar el precio no descontinuado a Coremetrics

Este ejemplo muestra cómo pasar el precio no descontinuado de un producto en el carrito de compra a Coremetrics. De fábrica, la etiqueta order utiliza el precio descontinuado de un producto al generar las etiquetas cmCreateShopAction9Tag(...) individuales para cada elemento en el carrito de compra. La etiqueta order también utiliza el precio de producto descontinuado para calcular el subtotal de la orden para la orden completa al generar la función cmCreateOrderTag(...) . Para pasar el precio no descontinuado, debe extender los datos utilizados para generar ambas etiquetas de JavaScript.

Para personalizar los datos, realice estas tareas:

  1. Cree una nueva clase de etiquetas de JSTL personalizada que extienda la clase com.ibm.commerce.bi.taglib.coremetrics.OrderTag . Vea el Listado 1 para una muestra del código de clase Skeleton .

    Listado 1. Clase Skeleton

    packagecom.ibm.mycompany.bi.taglib.coremetrics;
    importcom.ibm.commerce.bi.taglib.coremetrics.OrderTag;
    publicclassExtOrderTagextendsOrderTag {
    }
  2. Sobrescriba los dos métodos que generen datos para cmCreateOrderTag(...) y cmCreateShopAction9Tag(...). El método getOrderParamMap() genera datos para cmCreateOrderTag(...) como el métodogetOrderItemsParamVector() genera datos para cmCreateShopAction9Tag(...). Vea el Listado 2. para obtener una muestra del código de clase OrderTag extendida.

    Listado 2. Clase OrderTag extendida

    package com.ibm.mycompany.bi.taglib.coremetrics; import java.util.HashMap; import java.util.Vector; import com.ibm.commerce.bi.taglib.coremetrics.OrderTag; import com.ibm.commerce.bi.taglib.TagConstants; public class ExtOrderTag extends OrderTag { /** * Override the default implementation to use the non discounted * product price values for base price and order total */ public Vector<HashMap<String, Object>> getOrderItemsParamVector() { Vector<HashMap<String, Object>> oiVector = super .getOrderItemsParamVector(); String orderId = null; for (HashMap<String, Object> itemMap : oiVector) { orderId = (String) itemMap.get(TagConstants.ORDER_ID_KEY); String partNumber = (String) itemMap .get(TagConstants.PART_NUMBER_KEY); String nonDiscountedPriceForThisItem = getNonDiscountedItemPrice(partNumber); itemMap.put(TagConstants.BASE_PRICE_KEY, nonDiscountedPriceForThisItem); String orderSubTotalWithOutDiscounts = getNonDiscountedOrderTotal(orderId); itemMap.put(TagConstants.SUBTOTAL_KEY, orderSubTotalWithOutDiscounts); } return oiVector; } /** * Override the default implementation to use the non discounted * product price values order total */ public HashMap<String, Object> getOrderParamMap() { HashMap<String, Object> oMap = super.getOrderParamMap(); String orderId = (String) oMap.get(TagConstants.ORDER_ID_KEY); String orderSubTotalWithOutDiscounts = getNonDiscountedOrderTotal(orderId); oMap.put(TagConstants.SUBTOTAL_KEY, orderSubTotalWithOutDiscounts); return oMap; } /** * A helper method that returns the non discounted price of an item */ private String getNonDiscountedItemPrice(String partNumber) { // TODO Implement this method return null; } /** * A helper method that returns the non discounted total price of an order */ private String getNonDiscountedOrderTotal(String orderId) { // TODO Implement this method return null; } }
  3. Crear un nuevo descriptor de biblioteca de etiquetas para la etiqueta personalizada y la clase de etiquetas. Asegúrese de que el descriptor contiene el nuevo nombre de etiqueta personalizada y la correlación de clase de etiquetas. Vea el Listado 3 para obtener una muestra del código del descriptor de biblioteca de etiquetas.

    Listado 3. Descriptor de biblioteca de etiquetas 

    <taglib> <tlib-version>1.0</tlib-version> <jsp-version>1.2</jsp-version> <short-name>cm-ext</short-name> <uri>http://commerce.ibm.com/coremetrics-ext</uri> <display-name>Custom tag library for Coremetrics enablement</display-name> <description>Custom tag library for Coremetrics enablement</description> <tag> <name>order</name> <tag-class>com.ibm.mycompany.bi.taglib.coremetrics.ExtOrderTag</tag-class> <body-content>empty</body-content> <description>Sets ShopAction9 and Order tags for order confirmation pages.</description> .............. </tag> </taglib>

    Para obtener la lista de atributos para la etiqueta de orden de fábrica, consulte el archivo coremetrics.tld que está en el directorio Stores.war/WEB-INF.

  4. Actualice la página de la tienda para utilizar el descriptor personalizado y la etiqueta de orden personalizada.
    Consulte el descriptor de biblioteca de etiquetas personalizada, como se muestra aquí:
    <%@ taglib uri="http://commerce.ibm.com/coremetrics-ext" prefix="cm-ext" %>.
    Actualice el etiquetado para la orden para utilizar la etiqueta de orden personalizada, como se muestra aquí:
    <cm-ext:order orderType="..." />

Conclusión

Es posible pasar datos de analítica personalizados a Coremetrics al sobrescribir los métodos predeterminados que son proporcionados por la JSTL de WebSphere Commerce.

Recursos

Aprender

Obtener los productos y tecnologías

  • Evalúe los productos de IBM de la forma que mejor se ajuste a usted: Descargue una prueba de producto, ensaye un producto en línea, use un producto en un entorno en nube, o pase algunas horas en el SOA Sandbox aprendiendo a implementar la Arquitectura Orientada a Servicios con eficiencia.

Comentar

  • Participe de la comunidad My developerWorks. Conéctese con otros usuarios de developerWorks mientras explora los blogs conducidos por desarrolladores, foros, grupos y wikis.

Comentarios

developerWorks: Ingrese

Los campos obligatorios están marcados con un asterisco (*).


¿Necesita un IBM ID?
¿Olvidó su IBM ID?


¿Olvidó su Password?
Cambie su Password

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


La primera vez que inicie sesión en developerWorks, se creará un perfil para usted. La información en su propio perfil (nombre, país/región y nombre de la empresa) se muestra al público y acompañará a cualquier contenido que publique, a menos que opte por la opción de ocultar el nombre de su empresa. Puede actualizar su cuenta de IBM en cualquier momento.

Toda la información enviada es segura.

Elija su nombre para mostrar



La primera vez que inicia sesión en developerWorks se crea un perfil para usted, teniendo que elegir un nombre para mostrar en el mismo. Este nombre acompañará el contenido que usted publique en developerWorks.

Por favor elija un nombre de 3 - 31 caracteres. Su nombre de usuario debe ser único en la comunidad developerWorks y debe ser distinto a su dirección de email por motivos de privacidad.

Los campos obligatorios están marcados con un asterisco (*).

(Por favor elija un nombre de 3 - 31 caracteres.)

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


Toda la información enviada es segura.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=Big data y analytics
ArticleID=854739
ArticleTitle=Personalización de la JSTL de WebSphere Commerce para Coremetrics
publish-date=01142013