Dans la présente leçon, vous définirez une nouvelle définition d'objet enfant afin de représenter le nouvel élément de condition d'achat de la promotion.
Pourquoi et quand exécuter cette tâche
La définition d'objet enfant définit une condition d'achat pour le nouveau type de promotion. Cette définition d'objet est l'une des définitions d'élément racine qui étend l'élément racine de condition d'achat de promotion et elle inclut tous les sous-éléments de la promotion, tels que la condition d'achat et la récompense. Dans l'outil Promotions, chaque type de promotion a sa propre définition d'objet. Cette définition d'objet doit être une extension de la définition PurchaseConditionObjectDefinition.La condition d'achat définit les critères auxquels doit répondre un client pour être éligible pour une promotion et recevoir la récompense. Pour ce nouveau type de promotion, la condition d'achat est "Achetez l'entrée de catalogue X pour $." Un professionnel peut ensuite utiliser ce nouveau type de promotion pour créer une promotion selon laquelle les clients doivent "Acheter les entrées de catalogue de vaisselle pour 200 $ ou plus" afin de pouvoir bénéficier de la récompense.
Procédure
-
Créez un fichier de définition pour la définition d'objet d'élément de promotion :
-
Dans la vue Explorateur d'entreprise, développez .
-
Cliquez avec le bouton droit de la souris sur le répertoire xml ; puis cliquez sur .
-
Créez la structure de répertoires suivante : et cliquez sur Terminer.
-
Cliquez avec le bouton droit de la souris sur le répertoire elements, puis cliquez sur .
-
Nommez votre nouveau fichier ProductLevelFreeGiftPurchaseConditionObjectDefinition.xml.
-
Cliquez sur Terminer pour créer le fichier. Le fichier apparaît dans l'éditeur XML par défaut.
-
Créez le fichier de définition d'objet de l'élément de campagne, ProductLevelFreeGiftPurchaseConditionObjectDefinition.xml.
-
Copiez et collez le modèle de définition d'objet suivant dans ce fichier de définition.
<?xml version="1.0" encoding="UTF-8"?>
<Definitions>
<PromotionElementObjectDefinition baseDefinition="cmc/promotion/PurchaseConditionObjectDefinition"
definitionName="cmc/promotion/ExtProductLevelFreeGiftPurchaseConditionObjectDefinition"
1 objectType="ProductLevelFreeGiftPurchaseCondition" package="cmc/promotion">
<dependency localName="promotionResources" moduleName="cmc/promotion/PromotionResources"/>
<dependency localName="ExtPromotionResources" moduleName="cmc/promotion/ExtPromotionResources"/>
2<PromotionElementReferenceObjectDefinition baseDefinition="cmc/promotion/IdentifierCatalogEntryObjectDefinition"
package="cmc/promotion">
<Xml name="template">
3<elementType>IncludeCatalogEntryIdentifier</elementType>
</Xml>
</PromotionElementReferenceObjectDefinition>
<PromotionElementReferenceObjectDefinition baseDefinition="cmc/promotion/IdentifierInheritedCatalogEntryObjectDefinition" package="cmc/promotion">
<Xml name="template">
<elementType>IncludeCatalogEntryIdentifier</elementType>
</Xml>
</PromotionElementReferenceObjectDefinition>
<!-- property definition: The total price threshold for the promotion condition -->
<PropertyDefinition displayName="${ExtPromotionResources.promotion_Minimum_purchase_TotalPrice}" minValue="1"
propertyName="BaseItemTotalPrice" required="true"/>
<PromotionElementReferenceObjectDefinition baseDefinition="cmc/promotion/IdentifierGiftCatalogEntryObjectDefinition" package="cmc/promotion">
<Xml name="template">
<elementType>GiftCatalogEntryIdentifier</elementType>
</Xml>
<!-- property definition: the quantity of each gift -->
<PropertyDefinition displayName="${ExtPromotionResources.promotion_Free_gift_qty}" minValue="1" propertyName="giftQuantity" required="true"/>
</PromotionElementReferenceObjectDefinition>
<PromotionElementReferenceObjectDefinition baseDefinition="cmc/promotion/IdentifierInheritedGiftCatalogEntryObjectDefinition"
package="cmc/promotion">
<Xml name="template">
<elementType>GiftCatalogEntryIdentifier</elementType>
</Xml>
<!-- property definition: the quantity of each gift -->
<PropertyDefinition displayName="${ExtPromotionResources.promotion_Free_gift_qty}" minValue="1" propertyName="giftQuantity" required="true"/>
</PromotionElementReferenceObjectDefinition>
<!-- Validator definition: The condition catentry set cannot be empty, at least one catentry should be assigned -->
<RequiredChildObjectValidator errorMessage="${promotionResources.promotion_error_AtLeastOneProduct}"
objectPath="Identifier_CatalogEntryGroup" validatorId="reqCatValidator"/>
<!-- Validator definition: The gift set cannot be empty, at least one gift should be assigned -->
<RequiredChildObjectValidator errorMessage="${promotionResources.promotion_error_AtLeastOneGift}"
objectPath="Identifier_GiftCatalogEntryGroup" validatorId="reqGiftValidator"/>
</PromotionElementObjectDefinition>
</Definitions>
- 1 objectType
- Cet attribut définit le nom de l'élément d'interface utilisateur pour cette condition d'achat et il est stocké dans la colonne SUBTYPE de la table PX_ELEMENT. La condition d'achat est composée d'éléments de promotion enfant, y compris les définitions d'élément de promotion d'achat et de récompense prédéfinies.
- 2 PromotionElementReferenceObjectDefinition
- La première instance de cet élément dans le code exemple de références de l'objet entrée de catalogue. Pour ce type de promotion, cette entrée de catalogue représente ce que le client doit acheter afin d'être éligible pour la promotion. La deuxième instance de l'élément PromotionElementReferenceObjectDefinition est inclue pour prendre en charge les entrées de catalogue héritées du magasin de ressources d'un catalogue principal. La troisième instance de cet élément référence également l'objet entrée de catalogue ; dans ce cas, l'entrée de catalogue est l'article offert. La dernière instance de l'élément PromotionElementReferenceObjectDefinition est inclue pour prendre en charge les entrées de catalogue d'article offert héritées du magasin de ressources d'un catalogue principal.
- 3 <elementType>
- Cet élément est contenu dans l'élément XML. Il est stocké dans la colonne TYPE de la table PX_ELEMENT lorsque la promotion est créée et il est utilisé pour composer le code XML de création de promotion lorsque la promotion est activée.
-
Enregistrez et fermez le fichier.
Le nouvel objet étend la définition PurchaseConditionObjectDefinition existante.
-
Maintenant que votre condition d'achat personnalisée a été définie, ajoutez la nouvelle définition d'objet à l'objet principal Promotion.
-
Développez le répertoire .
-
Ouvrez le fichier PromotionPrimaryObjectDefinition.xml. Ce fichier de définition d'objet principal contient toutes les informations sur une promotion dans le Management Center. Observez les services, les propriétés et les objets enfant définis ci-dessous.
-
Recherchez les lignes suivantes qui sont des déclarations d'autres définitions d'objet de condition d'achat :
<PromotionElementObjectDefinition baseDefinition="cmc/promotion/ProductLevelFixedCostDiscountPurchaseConditionObjectDefinition"
package="cmc/promotion"/>
<PromotionElementObjectDefinition baseDefinition="cmc/promotion/ProductLevelPerItemFixedCostDiscountPurchaseConditionObjectDefinition"
package="cmc/promotion"/>
-
Ajoutez votre condition d'achat personnalisée en insérant le code suivant sous la section ci-dessus :
<!-- Customization: New Promotion Type -->
<PromotionElementObjectDefinition baseDefinition="cmc/promotion/ExtProductLevelFreeGiftPurchaseConditionObjectDefinition"
package="cmc/promotion"/>
-
Enregistrez et fermez le fichier.
Vous avez créé la définition d'objet de l'élément de promotion. Lorsque des professionnels créent des promotions dans le Management Center, la définition d'objet de l'élément de promotion permet de stocker les données de l'élément de promotion dans deux tables : PX_ELEMENT et PX_ELEMENTNVP. Les données stockées dans ces deux tables sont en structure arborescente. Lorsque le professionnel active la promotion, les actions suivantes se produisent :
- HCL Commerce Server lit les données stockées dans les tables PX_ELEMENT et PX_ELEMENTNVP et construit le code XML de création de promotion.
- Les modèles XSL transforment le code XML de création de promotion en code XML d'exécution de promotion. (Vous trouverez plus de détails sur les modèles XSL dans la leçon Création et enregistrement du modèle XSL.)
- Le code XML d'exécution de promotion est sauvegardé dans la table PX_PROMOTION.
- Le moteur de promotion utilise ensuite le code XML d'exécution de promotion afin d'évaluer les promotions pendant le flux des achats.
Le code XML de création de promotion est une représentation simplifiée d'une promotion dans le Centre de gestion. Un échantillon de code XML de création de promotion est similaire au code suivant :
<PurchaseCondition
impl="com.ibm.commerce.marketing.promotion.condition.PurchaseCondition">
<Pattern impl="com.ibm.commerce.marketing.promotion.condition.Pattern">
<UniqueConstraints>false</UniqueConstraints>
<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">
<IncludeCatEntryKey>
<CatalogEntryKey>
<SKU>HKT030_3001</SKU>
<DN>ou=asset store organization,o=extended sites organization,o=root organization</DN>
</CatalogEntryKey>
</IncludeCatEntryKey>
<IncludeCatEntryKey>
<CatalogEntryKey>
<SKU>HKT030_3002</SKU>
<DN>ou=asset store organization,o=extended sites organization,o=root organization</DN>
</CatalogEntryKey>
</IncludeCatEntryKey>
</Filter>
</FilterChain>
</Constraint>
</Pattern>
<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>200</LowerBound>
<UpperBoundIncluded>true</UpperBoundIncluded>
<LowerBoundIncluded>true</LowerBoundIncluded>
<RewardChoice>
<Reward impl="com.ibm.commerce.marketing.promotion.reward.DefaultReward">
<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>
<CatalogEntryKey>
<SKU>HTA029_291001</SKU>
<DN>ou=asset store organization,o=extended sites organization,o=root organization</DN>
</CatalogEntryKey>
</GiftItem>
<Quantity>4</Quantity>
<AddStrategy>1</AddStrategy>
<AdjustmentType>wholeOrder</AdjustmentType>
</Adjustment>
</AdjustmentFunction>
<RewardPolicy>ALL</RewardPolicy>
</Reward>
</RewardChoice>
</Range>
<PatternFilter impl="com.ibm.commerce.marketing.promotion.condition.DummyPatternFilter"/>
</Distribution>
</PurchaseCondition>
Résultats
Dans cette leçon, vous avez créé la définition d'objet pour le nouveau type de promotion. Dans la leçon suivante, vous allez créer le modèle d'interface utilisateur de la promotion.