Modelar el XML de tiempo de ejecución de promoción para el nuevo tipo de promoción

En esta lección, aprenderá a modelar el XML de tiempo de ejecución de promoción para un nuevo tipo de promoción denominado "Gaste $ en la entrada de catálogo X y obtenga la entrada de catálogo Y gratis". Durante el flujo de compra, el motor de promociones analiza y procesa el XML de tiempo de ejecución de promoción para evaluar si un comprador cumple los requisitos de una promoción.

Por qué y cuándo se efectúa esta tarea

Para obtener información previa relacionada con esta primera lección, lea:

Generalmente, para crear un tipo de promoción personalizado nuevo, debe comenzar por el XML de tiempo de ejecución de promoción de una promoción basada en un tipo de promoción similar. A continuación, analice el XML de tiempo de ejecución de promoción para determinar en qué se diferenciará el XML de tiempo de ejecución de promoción de su tipo de promoción personalizada. En la mayoría de los casos, las diferencias están dentro de las secciones de condición de compra y bonificación. Una vez que haya modelado su XML de tiempo de ejecución de promoción personalizado, utilice el modelo para identificar los datos que se deben gestionar mediante la interfaz de usuario del Centro de gestión.

En esta lección, se proporciona una instancia de ejemplo del XML de promoción de tiempo de ejecución completo para su nuevo tipo de promoción, por lo tanto, no es necesario que lo diseñe. En esta lección, analizará el contenido del XML de tiempo de ejecución de promoción suministrado y obtendrá las descripciones de sus secciones clave.

Para crear un nuevo tipo de promoción personalizada, no es necesario que vuelva a definir todo el XML de promoción de tiempo de ejecución, únicamente debe definir una nueva condición de compra en el XML. Generalmente, la condición de compra tiene dos partes: el elemento Pattern para la condición de promoción y el elemento Distribution para la bonificación de la promoción. En esta lección, aprenderá a modelar los elementos <Pattern> y <Distribution>.

Procedimiento

  1. En el ejemplo siguiente, observe el elemento <Pattern> para el nuevo tipo de promoción.
    El elemento clave del elemento <Pattern> es el elemento <filter>. Un <filter> es un conjunto de lógica de negocio que se aplica a un LineItemSet y como resultado se obtiene un segundo conjunto de líneas de detalle (LineItemSet) que es un subconjunto del conjunto de líneas de detalle original. Para obtener más información, consulte el tema Filtros personalizados. Para esta promoción, utilizará un filtro existente, MultiSKUFilter, que filtra el LineItemSet en base a los valores CatalogEntry y CatalogEntry padre de los LineItems, y devuelve todos los LineItems cuyo valor CatalogEntry o CatalogEntry padre pertenezcan a la lista de inclusiones y no a la lista de exclusiones del filtro. El siguiente ejemplo de código es una instancia del elemento <Pattern> del XML de tiempo de ejecución de promoción:
    
    <Pattern impl="com.ibm.commerce.marketing.promotion.condition.Pattern">
    <Constraint impl="com.ibm.commerce.marketing.promotion.condition.Constraint">
    <WeightedRange impl="com.ibm.commerce.marketing.promotion.condition.WeightedRange">
    <LowerBound>1</LowerBound>
    <UpperBound>-1</UpperBound>
    <Weight>1</Weight>
    </WeightedRange>
    <FilterChain impl="com.ibm.commerce.marketing.promotion.condition.FilterChain">
    <Filter impl="com.ibm.commerce.marketing.promotion.condition.MultiSKUFilter">
    <xsl:for-each select="PromotionData/Elements/PurchaseCondition/IncludeCatalogEntryIdentifier">
    <IncludeCatEntryKey>
    <xsl:call-template name="CatalogEntryKeyTemplate">
    <xsl:with-param name="dn" select="Data/DN" />
    <xsl:with-param name="sku" select="Data/SKU" />
    </xsl:call-template>
    </IncludeCatEntryKey>
    </xsl:for-each>
    <xsl:for-each select="PromotionData/Elements/PurchaseCondition/ExcludeCatalogEntryIdentifier">
    <ExcludeCatEntryKey>
    <xsl:call-template name="CatalogEntryKeyTemplate">
    <xsl:with-param name="dn" select="Data/DN" />
    <xsl:with-param name="sku" select="Data/SKU" />
    </xsl:call-template>
    </ExcludeCatEntryKey>
    </xsl:for-each>
    </Filter>
    </FilterChain>
    </Constraint>
    </Pattern>
    En el ejemplo anterior, los elementos en negrita son los que gestiona la interfaz de usuario. Para este ejemplo, el usuario empresarial ha especificado que los clientes deben tener la entrada de categoría TAPL-02 o TAPL-01 en su carro de la compra para poder acceder a esta promoción.
  2. En el ejemplo siguiente, observe el elemento <Distribution> para el nuevo tipo de promoción.
    El elemento clave del elemento <Distribution> es el elemento <Adjustment>. Los ajustes son incentivos ofrecidos a los clientes. Los ajustes se pueden aplicar a uno o varios artículos de pedido del patrón coincidente, o a todo el pedido. Para obtener más información, consulte el tema Ajustes personalizados. Para esta promoción, utilizará un ajuste existente, FreePurchasableGiftAdjustment. Ofrece un regalo gratis como bonificación de una promoción. El siguiente ejemplo de código es una instancia del elemento <Distribution> del XML de tiempo de ejecución de promoción:
    
    <Distribution impl="com.ibm.commerce.marketing.promotion.reward.Distribution">
    <Type>Volume</Type>
    <Base>Cost</Base>
    <Currency>USD</Currency>
    <Range impl="com.ibm.commerce.marketing.promotion.reward.DistributionRange">
    <UpperBound>-1</UpperBound>
    <LowerBound><xsl:value-of select="PromotionData/Elements/PurchaseCondition/Data/BaseItemTotalPrice" /></LowerBound>
    <UpperBoundIncluded>true</UpperBoundIncluded>
    <LowerBoundIncluded>true</LowerBoundIncluded>
    <RewardChoice>
    <Reward impl="com.ibm.commerce.marketing.promotion.reward.DefaultReward">
    <xsl:for-each select="PromotionData/Elements/PurchaseCondition/GiftCatalogEntryIdentifier">
    <AdjustmentFunction impl="com.ibm.commerce.marketing.promotion.reward.AdjustmentFunction">
    <FilterChain impl="com.ibm.commerce.marketing.promotion.condition.FilterChain">
    <Filter impl="com.ibm.commerce.marketing.promotion.condition.DummyFilter" />
    </FilterChain>
    <Adjustment impl="com.ibm.commerce.marketing.promotion.reward.FreePurchasableGiftAdjustment">
    <GiftItem>
    <xsl:call-template name="CatalogEntryKeyTemplate">
    <xsl:with-param name="dn" select="Data/DN" />
    <xsl:with-param name="sku" select="Data/SKU" />
    </xsl:call-template>
    </GiftItem>
    <Quantity><xsl:value-of select="Data/giftQuantity" /></Quantity>
    <AddStrategy>1</AddStrategy>
    <AdjustmentType>wholeOrder</AdjustmentType>
    </Adjustment>
    </AdjustmentFunction>
    </xsl:for-each>
    </Reward>
    </RewardChoice>
    </Range>
    <PatternFilter impl="com.ibm.commerce.marketing.promotion.condition.DummyPatternFilter" />
    </Distribution>

    En el ejemplo anterior, los elementos en negrita son los que gestiona la interfaz de usuario. Para este caso en concreto, el usuario de empresa ha especificado que si los clientes gastan 200€ o más en las entradas del catálogo listadas en el elemento <Pattern>, recibirán un regalo.

Resultados

Esta lección ha presentado las dos secciones clave del XML de tiempo de ejecución de promoción. En la lección siguiente, comenzará a planificar los cambios de la interfaz de usuario del Centro de gestión que requiere para dar soporte al nuevo tipo de promoción.