Personnalisation de l'organisation des promotions

Si les groupes de promotions par défaut (aux niveaux commande, produit et expédition) ne répondent pas à vos besoins métier, vous pouvez personnaliser l'organisation des promotions. En particulier, vous pouvez créer des groupes personnalisés qui diffèrent des groupes par défaut pour que les promotions incluses dans les nouveaux groupes soient régies par d'autres stratégies. Cette personnalisation doit s'effectuer lors de la configuration du magasin. Ce processus inclut l'incorporation des groupes de promotions dans un modèle d'appel et l'association des stratégies aux nouveaux groupes.

Avant de commencer

Ce scénario considère qu'aucune personnalisation n'est appliquée à la gestion de la persistance des groupes de promotions, des promotions ou des stratégies.

Avant de personnaliser l'organisation des promotions, vous devez déterminer si le groupe de promotions personnalisé sera disponible pour tous les magasins ou simplement pour un sous-ensemble. Vous devez également indiquer le nom du groupe, les stratégies associées ainsi que le mode d'inclusion de ce groupe dans le processus existant d'évaluation de promotion. Les étapes suivantes décrivent en détail comment ajouter plusieurs groupes, les associer à des stratégies et les utiliser lors de l'exécution.

Procédure

  1. Créez des stratégies affectées au groupe. Pour créer ces stratégies, vous devez insérer une ou plusieurs entrées dans la table PX_POLICY. A titre d'aide à la création de stratégies, vous pouvez utiliser une stratégie par défaut comme modèle. Pour localiser les stratégies par défaut affectées à votre magasin, ouvrez une connexion de base de données et exécutez la requête suivante :
    SELECT * FROM PX_POLICY WHERE STOREENT_ID=storeId;
    
    Dans les résultats de la requête, la colonne IMPLCLS définit le nom de la classe qui implémente une stratégie. La colonne XMLPARAM contient la définition XML d'une stratégie. Le contenu réel du fragment XML dépend du modèle XML utilisé pour l'implémentation de la stratégie. Un exemple de définition XML de stratégie de promotion ressemble au code suivant :
    <PromotionPolicy impl="com.ibm.commerce.marketing.promotion.policy.RedemptionLimitEnforcementPolicy">
          <PromotionPolicyKey>
                <PolicyName>Unique Name for the policy</PolicyName>
                <StoreKey>
                      <DN>o=root organization</DN>
                      <Identifier>BlueStore 202</Identifier>
                </StoreKey>
          </PromotionPolicyKey>
          <Status>Active</Status>
    </PromotionPolicy>
    

    Vous pouvez utiliser une définition XML renvoyée par votre requête pour faciliter la modélisation de la nouvelle stratégie. Pour plus d'informations, voir Stratégies de promotion personnalisées.

  2. Créez le groupe de promotions par l'insertion de l'entrée correspondante dans la table PX_GROUP. A titre d'aide à la création de groupe, vous pouvez utiliser une entrée de groupe existante comme modèle. Pour localiser les groupes par défaut affectés à votre magasin, exécutez la requête suivante :
    SELECT * FROM PX_GROUP WHERE STOREENT_ID=storeId;
    Dans les résultats renvoyés par la requête, la colonne XMLPARAM contient la définition XML des groupes de promotions. Un exemple de définition XML de groupe de promotions ressemble au code suivant :
    
    <PromotionGroup impl="com.ibm.commerce.marketing.promotion.group.PromotionGroup">
       <!-- Key is made up of a reference to the store that owns this group, and a string name -->
       <PromotionGroupKey>
          <GroupName>OrderLevelPromotion</GroupName>
          <StoreKey>
             <DN>o=root organization</DN>
             <Identifier>BlueStore 202</Identifier>
          </StoreKey>
       </PromotionGroupKey>
       <!-status is active -->
       <Status>active</Status>
    
       <!-- Associated policies -->
    
       <AssociatedPromotionPolicies>
          <PromotionPolicyKey>
             <PolicyName>New Policy One</PolicyName>
                <StoreKey>
                   <DN>o=root organization</DN>
                   <Identifier>BlueStore 202</Identifier>
                </StoreKey>
          </PromotionPolicyKey>
          <PromotionPolicyKey>
             <PolicyName>New Policy Two</PolicyName>
             <StoreKey>
                <DN>o=root organization</DN>
                <Identifier>BlueStore 202</Identifier>
             </StoreKey>
          </PromotionPolicyKey>
       </AssociatedPromotionPolicies>
    </PromotionGroup>
    
  3. Affectez une stratégie à chaque groupe de promotions que vous créez. Pour affecter une stratégie à un groupe, vous devez insérer une entrée dans la table de base de données PX_GRPPOLICY. Cette entrée associe l'identificateur PX_GROUP_ID du groupe de promotions à une stratégie spécifique, PX_POLICY_ID.
  4. Ajoutez le groupe à un modèle d'appel en mettant à jour le fichier XML de configuration du moteur de promotion. Pour ajouter un groupe à un modèle d'appel, vous pouvez modifier un modèle existant, ou dupliquer un modèle et le modifier pour répondre à vos besoins. Si vous souhaitez que le nouveau groupe de promotions soit partagé par tous les magasins, vous pouvez ajouter une entrée pour ce groupe au modèle "All Promotions" ("Toutes les promotions"). Si le groupe est spécifique à un magasin, vous devez dupliquer un modèle et le modifier en conséquence.
    1. Accédez au répertoire workspace_dir/WC/xml/PromotionEngineConfiguration.
    2. Ouvrez le fichier WCSPromotionEngineConfig.xml pour l'éditer.
    3. Localisez le fragment de code suivant. Il s'agit du fragment XML qui définit le modèle "All Promotions" ("Toutes les promotions") :
      
      <Template>
         <TemplateKey>
            <StoreKey>
               <DN>o=root organization</DN>
               <Identifier>NullEntity</Identifier>
            </StoreKey>
            <Name>All Promotions</Name>
         </TemplateKey>
         <MonetaryValuePresence>
            <Price>true</Price>
            <ShippingCharge>false</ShippingCharge>
            <Tax>false</Tax>
            <ShippingTax>false</ShippingTax>
         </MonetaryValuePresence>
         <PromotionGroupKey>
            <StoreKey>
               <DN>o=root organization</DN>
               <Identifier>NullEntity</Identifier>
            </StoreKey>
            <GroupName>ProductLevelPromotion</GroupName>
         </PromotionGroupKey>
         <PromotionGroupKey>
            <StoreKey>
               <DN>o=root organization</DN>
               <Identifier>NullEntity</Identifier>
            </StoreKey>
            <GroupName>OrderLevelPromotion</GroupName>
         </PromotionGroupKey>
         <PromotionGroupKey>
            <StoreKey>
               <DN>o=root organization</DN>
               <Identifier>NullEntity</Identifier>
            </StoreKey>
            <GroupName>ShippingPromotion</GroupName>
         </PromotionGroupKey>
      </Template>
      
    4. Ajoutez le groupe au modèle, ou dupliquez le modèle et modifiez-le pour indiquer un groupe spécifique au magasin. Insérez l'entrée pour le groupe selon l'ordre d'évaluation des promotions.
      Par exemple, si les promotions du nouveau groupe doivent être évaluées après les promotions du groupe "ProductLevelPromotion", le modèle peut ressembler au fragment de code suivant :
      
      <Template>
         <TemplateKey
            <StoreKey>
               <DN>o=root organization</DN>
               <Identifier>NullEntity</Identifier>
            </StoreKey>
            <Name>All Promotions</Name>
         </TemplateKey>
         <MonetaryValuePresence>
            <Price>true</Price>
            <ShippingCharge>false</ShippingCharge>
            <Tax>false</Tax>
            <ShippingTax>false</ShippingTax>
         </MonetaryValuePresence>
         <PromotionGroupKey>
            <StoreKey>
               <DN>o=root organization</DN>
               <Identifier>NullEntity</Identifier>
            </StoreKey>
            <GroupName>ProductLevelPromotion</GroupName>
         </PromotionGroupKey>
            
         <PromotionGroupKey>
            <StoreKey>
               <DN>o=root organization</DN>
               <Identifier>NullEntity</Identifier>
            </StoreKey>
            <GroupName>My New Group</GroupName>
         </PromotionGroupKey>
            
         <PromotionGroupKey>
            <StoreKey>
               <DN>o=root organization</DN>
               <Identifier>NullEntity</Identifier>
            </StoreKey>
            <GroupName>OrderLevelPromotion</GroupName>
         </PromotionGroupKey>
         <PromotionGroupKey>
            <StoreKey>
               <DN>o=root organization</DN>
               <Identifier>NullEntity</Identifier>
            </StoreKey>
            <GroupName>ShippingPromotion</GroupName>
         </PromotionGroupKey>
      </Template>
      
  5. Redémarrez HCL Commerce. Etant donné que les groupes de promotions, les stratégies et les modèles constituent des informations de configuration mises en mémoire cache, vous devez redémarrer HCL Commerce pour que les modifications prennent effet.