Stockage et gestion des données de promotion

Si vous créez un nouveau type de promotion destiné au Management Center, vous devez comprendre les interactions du Management Center avec le composant de promotion et comment les promotions sont stockées dans la base de données.

Code XML de promotion

Il existe deux types de code XML de promotion :
  • Le code XML de création de promotion contient les données correspondantes saisies par les professionnels dans l'interface utilisateur de l'outil Promotions lors de la création de promotions. Le code XML de promotion a été fourni avec le Feature Pack 4 du Management Center Version 6 pour faciliter la personnalisation des promotions.
  • Le serveur utilise code XML d'exécution de promotion afin d'évaluer les promotions pendant le flux des achats. Le code XML de promotion n'a pas été modifié par rapport aux précédents feature packs du Management Center.

Lorsqu'un utilisateur professionnel active une promotion, le processus suivant transforme le code XML de création en code XML d'exécution :

  1. La logique d'activation de promotion génère le code XML de création de promotion à partir des données stockées dans les tables de création de promotion du Management Center. Ces tables contiennent les saisies de l'utilisateur concernant la promotion.
  2. Un ensemble de modèles XSLT transforme le code XML de création de promotion en code XML d'exécution, lequel est requis par le moteur de promotion pour évaluer les promotions. La transformation implique plusieurs étapes :
    1. Les modèles XSLT transforment le code XML de création de promotion pour créer quatre sections du code XML d'exécution de promotion : la section basePromotion, la section purchaseCondition , la section CustomCondition et la section TargetingCondition.
    2. Le processus de transformation utilise l'interface fromXML afin d'initialiser un objet de promotion.
    3. Le processus de transformation utilise l'interface toXML afin de générer le code XML d'exécution de promotion et de le stocker dans la colonne XMLPARAM de la table PX_PROMOTION .

Le diagramme ci-dessous illustre ce processus :


Transformation de code XML de promotion

Notez que tant qu'une promotion n'est pas activée, seul du code XML de marqueur d'espace réservé à cet effet est stocké dans la table PX_PROMOTION.

XSLT modèles

Pour ajouter un nouveau type de promotion, les développeurs peuvent concevoir des widgets destinés à recueillir les entrées utilisateur requises et à enregistrer ces données dans les tables de création de promotion. Comme illustré dans le diagramme précédent, les modèles XSLT transforment ensuite le code XML de création de promotion en code XML d'exécution de promotion. Par conséquent, la personnalisation de la prise en charge par le contexte d'exécution d'un nouveau type de promotion requiert uniquement un modèle XSLT personnalisé gérant les widgets de l'interface utilisateur ; les développeurs n'ont pas besoin de modifier le code Java principal pour composer le code XML d'exécution de promotion. De la sorte, il est plus simple de personnaliser les types de promotion du Management Center que de personnaliser ceux de HCL Commerce Accelerator.

Chaque type de promotion défini dans l'outil Promotions du Centre de gestion est configuré pour opérer avec certains modèles XSLT. L'outil Promotions fournit le jeu de modèles XSLT permettant de transformer les types de promotions par défaut. Lorsque vous créez un type de promotion personnalisé, vous devez créer un modèle XSLT personnalisé ; toutefois, vous pouvez copier le contenu d'un modèle XSLT existant dans votre nouveau fichier, puis personnaliser uniquement certaines sections.

Eléments de promotion et variables

Les éléments de promotion et leurs variables permettent à l'outil Promotions du Centre de gestion de gérer les données de création des sections purchaseCondition, customCondition et targetingCondition du code XML d'exécution de promotion dans un cadre générique.

Les informations relatives à un élément de promotion et à ses variables sont sauvegardées dans les tables PX_ELEMENT et PX_ELEMENTNVP. Pour illustrer cette relation, considérons les données exemple suivantes.
Contenu du modèle de table PX_ELEMENT
PX_ELEMENT_ID PX_PROMOTION_ID NAME TYPE SubType Parent Séquence
1001 10101 Name1001 PurchaseCondition UI_PurchaseCondition NULL 0
1002 10101 Name1002 DiscountRange UI_DiscountRange Name1001 0
1003 10101 Name1003 DiscountRange UI_DiscountRange Name1001 1
Contenu du modèle de table PX_ELEMENTNVP
PX_ELEMENTNVP_ID PX_ELEMENT_ID NAME VALUE Remarque
1000000 1001 Monnaie USD La devise est USD
1000001 1002 LowerBound 100 Pour la gamme Name1002, le lowerbound=100
1000002 1002 Percentage 10 Pour la gamme Name1002, le Percentage=10
1000003 1003 LowerBound 500 Pour la gamme Name1003, le lowerbound=500
1000004 1003 Percentage 50 Pour la gamme Name1003, le Percentage=50
Dans l'exemple précédent, l'élément de promotion est utilisé pour décrire une unité d'une règle de promotion. La colonne TYPE de la table PX_ELEMENT peut être mappée sur un concept de promotion utilisé dans le code XML de promotion d'exécution. Par exemple, un type d'élément PurchaseCondition est mappé sur le noeud PurchaseCondition, dans le code XML d'exécution de promotion. De même, le type DiscountRange est mappé sur les noeuds DistributionRange dans le code XML d'exécution de promotion. La colonne SUBTYPE de la table PX_ELEMENT est utilisée par l'outil Promotions du Centre de gestion pour identifier un objet fenêtre spécifique qui gère la saisie d'un professionnel. Les informations de relations parent-enfant dans les colonnes PARENT et SEQUENCE de la table PX_ELEMENT permettent à la logique d'activation de promotion de construire l'arborescence XML du code XML de création de promotion. Voici un exemple :
<PurchaseCondition>
   <DiscountRange></DiscountRange>
   <DiscountRange></DiscountRange>
</PurchaseCondition>
Une variable d'élément de promotion décrit la valeur de données facultative associée à un élément de promotion. Lorsqu'un professionnel active une promotion, la logique d'activation de promotion construit le code XML de création de promotion et insère un noeud de données sous le noeud d'élément de promotion approprié, suivi de noeuds de texte construits conformément au nom et à la valeur figurant dans la table PX_ELEMENTNVP pour l'élément. Voici un exemple :
<PurchaseCondition>
   <Data>
     <Currency>USD</Currency>
   </Data>
   <DiscountRange>
     <Data>
       <LowerBound>100</LowerBound>
       <Percentage>10</Percentage>
     </Data>
   </DiscountRange>
   <DiscountRange>
     <Data>
       <LowerBound>500</LowerBound>
       <Percentage>50</Percentage>
     </Data>
   </DiscountRange> 
</PurchaseCondition>

Types d'éléments prédéfinis

Dans le code XML d'exécution de promotion, une clé d'entité métier est définie par des identificateurs externes. Voici un exemple de clé de profil client ciblé :
<TargetedProfile>
   <CustomerProfileKey>
      <ProfileName>Customers who are under 40 years of age</ProfileName>
      <OwnerDN>ou=b2c,o=seller organization,o=root organization</OwnerDN> 
   </CustomerProfileKey>  
</TargetedProfile>
Afin de simplifier la conception de l'outil Promotions du Centre de gestion et pour améliorer les performances, plusieurs types d'élément prédéfinis permettent la gestion d'entités métier de ce type uniquement à l'aide de la clé primaire (ID). Le service d'activation de promotion utilise ensuite cet ID pour convertir les informations sur l'identificateur externe requises dans le code XML d'exécution de promotion, puis pour ajouter ces informations au code XML de création de promotion comme si elles étaient collectées à partir de l'interface utilisateur. Ces informations d'identificateur externe converties sont insérées dans le noeud de données de l'élément afin d'être disponibles pour une transformation.
L'exemple suivant est un extrait du code XML de création de promotion, basé sur des données d'élément dont les identificateurs externes sont résolus (le code XML de création de promotion complet est utilisé pour le processus de transformation XSL) :
<TargetingCondition>
   <IncludeMemberGroupIdentifier>
      <Data>
         <Id>8000000000000000551</Id>
         <DN>ou=b2c,o=seller organization,o=root organization</DN>
         <Name>Registered Customers</Name>
      </Data>
   </IncludeMemberGroupIdentifier>
   <ExcludeMemberGroupIdentifier>
      <Data>
         <Id>8000000000000000555</Id>
         <DN>ou=b2c,o=seller organization,o=root organization</DN>
         <Name>Female Customers</Name>
      </Data>
   </ExcludeMemberGroupIdentifier>
   <ExcludeMemberGroupIdentifier>
      <Data>
         <Id>8000000000000000553</Id>
         <DN>ou=b2c,o=seller organization,o=root organization</DN>
         <Name>Guest Shoppers</Name>
      </Data>
   </ExcludeMemberGroupIdentifier>
   <IncludeMemberGroupIdentifier>
      <Data>
         <Id>8000000000000000554</Id>
         <DN>ou=b2c,o=seller organization,o=root organization</DN>
         <Name>Male Customers</Name>
      </Data>
   </IncludeMemberGroupIdentifier> 
</TargetingCondition>
La liste des types d'élément prédéfinis inclut les entrées suivantes. Bien que certains de ces éléments prédéfinis ne soient pas utilisés par les types de promotion par défaut, ils sont fournis pour prendre en charge la personnalisation.
IncludeMemberGroupIdentifier
Groupe de membres faisant partie d'une condition d'inclusion dans la règle.
ExcludeMemberGroupIdentifier
Groupe de membres faisant partie d'une condition d'exclusion dans la règle.
IncludeCategoryIdentifier
Catégorie faisant partie d'une condition d'inclusion dans la règle.
ExcludeCategoryIdentifier
Catégorie faisant partie d'une condition d'exclusion dans la règle.
IncludeCatalogEntryIdentifier
Entrée de catalogue faisant partie d'une condition d'inclusion dans la règle.
ExcludeCatalogEntryIdentifier
Entrée de catalogue faisant partie d'une condition d'exclusion dans la règle.
GiftCatalogEntryIdentifier
Entrée de catalogue faisant fonction de cadeau offert dans la règle.
IncludePromotionIdentifier
Promotion faisant partie d'une condition d'inclusion dans la règle.
ExcludePromotionIdentifier
Promotion faisant partie d'une condition d'exclusion dans la règle.
IncludeShipModeIdentifier
Mode d'expédition faisant partie d'une condition d'inclusion dans la règle.
ExcludeShipModeIdentifier
Mode d'expédition faisant partie d'une condition d'exclusion dans la règle.
IncludeStoreIdentifier
Magasin faisant partie d'une condition d'inclusion dans la règle.
ExcludeStoreIdentifier
Magasin faisant partie d'une condition d'exclusion dans la règle.
IncludeUserIdentifier
Utilisateur faisant partie d'une condition d'inclusion dans la règle. .
ExcludeUserIdentifier
Utilisateur faisant partie d'une condition d'exclusion dans la règle.
Pour utiliser ces types d'élément prédéfinis, utilisez un élément paire nom-valeur avec le nom Id et la valeur appropriée en tant que clé primaire. Dans la mesure du possible, vous devriez utiliser ce type d'éléments prédéfinis. Lorsqu'une promotion est activée, les valeurs d'ID sont aussi utilisées pour compléter les tables CATENCALCD et CATGPCALCD afin de prendre en charge ShopcartDrivenAgendaBuilder.