Sucesos y escuchas de las promociones

El motor de promociones genera numerosos sucesos durante su funcionamiento normal. Los escuchas esperan a que se produzcan determinados tipos de sucesos y, a continuación, registran los sucesos.

Sucesos del motor de promociones
Suceso Cuándo se desencadena el suceso Atributos
PromotionCreatedEvent Cuando se crea una promoción La promoción, el actor y la fecha y hora de la acción.
PromotionDeployedEvent Cuando se despliega (activa) una promoción La promoción, el actor y la fecha y hora de la acción.
PromotionChangedEvent Cuando se modifica una promoción La promoción, el actor y la fecha y hora de la acción.
PromotionSuspendedEvent Cuando se suspende una promoción La promoción, el actor y la fecha y hora de la acción.
PromotionResumedEvent Cuando se reanuda una promoción La promoción, el actor y la fecha y hora de la acción.
PromotionWithdrawnEvent Cuando se retira una promoción La promoción, el actor y la fecha y hora de la acción.
PromotionResetEvent Cuando se restauran las estadísticas de una promoción. La promoción, el actor y la fecha y hora de la acción.
PromotionRemovedEvent Cuando una promoción se marca para supresión La promoción, el actor y la fecha y hora de la acción.
PromotionAssessedEvent Cuando una promoción se evalúa y se cumplen todas las condiciones. El PromotionContext en el momento de la acción.
PromotionEliminatedEvent Cuando una promoción se elimina debido a violaciones de políticas. PromotionExecutionRecords
PromotionQualifiedEvent Cuando se califica una promoción. PromotionExecutionRecords
PromotionRejectedEvent Cuando un cliente rechaza una bonificación de una promoción. PromotionExecutionRecords
PromotionAppliedEvent Cuando una promoción se aplica al pedido. PromotionExecutionRecords
PromotionErrorEvent Cuando se produce un error.
PromotionTraceEvent
PromotionLogEvent Cuando el motor de promociones graba en el archivo de anotaciones.
PromotionDebugEvent

Los escuchas deben implementar la interfaz com.ibm.commerce.marketing.promotion.event.PromotionEventListener, y deben registrarse en el motor de promociones. Se registran cuando se inicia el motor de promociones y se especifican como parte de la configuración del motor. Los escuchas pueden registrarse para escuchar tipos de suceso específicos, proporcionando una máscara de sucesos en el momento del registro. La lista siguiente incluye los escuchas predeterminados:

PrintPromotionLifeCycleEventListener
Escucha los sucesos Created, Changed, Deployed, Suspended, Resumed, Withdrawn, Reset y Removed, y anota los sucesos en la salida estándar.
PrintPromotionExecutionEventListener
Escucha los sucesos Assessed, Eliminated, Qualified, Rejected y Applied, y anota los sucesos en la salida estándar.
PrintPromotionDefaultRASEventListener
Escucha los sucesos Log, Trace y Error y anota los sucesos en la salida estándar.
PrintPromotionDefaultDebugEventListener
Escucha los sucesos Log, Trace, Error y Debug y anota los sucesos en un archivo según lo especificado por el atributo del sistema promotion.debug. Si no se especifica este atributo, todos los sucesos se anotarán en la salida estándar.
PromotionLogEventCommerceListener
Escucha el suceso PromotionLogEvent y anota el suceso en el archivo de anotaciones cronológicas de HCL Commerce, si el registro cronológico de HCL Commerce está habilitado.
PromotionTraceEventCommerceListener
Escucha el suceso PromotionTraceEvent y anota el suceso en el archivo de rastreo de HCL Commerce, si el rastreo de HCL Commerce está habilitado.
PromotionErrorEventCommerceListener
Escucha el suceso PromotionErrorEvent y anota el suceso tanto en el archivo de anotaciones cronológicas de HCL Commerce como en el de rastreo, si el registro cronológico y el rastreo de HCL Commerce están habilitados.

El fragmento XML siguiente de la configuración del motor de promociones configura escuchas de sucesos para el motor de promociones. Tenga en cuenta que hay tres escuchas del sistema que no deben modificarse:

  1. Un escucha de daemon de depuración que escucha los sucesos de depuración.
  2. Un daemon de cupones que emite cupones siempre que se aplica un VoucherAdjustment a un pedido.
  3. Un escucha de ayuda para suspensión que ayuda a procesar promociones suspendidas.

<PromotionEventListenerRegistry impl="com.ibm.commerce.marketing.promotion.event.ListenerRegistry">
   <!-- DO NOT MODIFY THE SECTION BELOW -->

   <Listener impl="com.ibm.commerce.marketing.promotion.event.PrintPromotionDebugEventListener">
      <Name>[SYSTEM]DEBUGDAEMON</Name>
      <ListensFor>com.ibm.commerce.marketing.promotion.event.PromotionDebugEvent</ListensFor>
   </Listener>
   <Listener impl="com.ibm.commerce.marketing.promotion.coupon.CouponDaemon">
      <Name>[SYSTEM]COUPONDAEMON</Name>
      <ListensFor>com.ibm.commerce.marketing.promotion.event.PromotionAppliedEvent</ListensFor>
   </Listener>
   <Listener impl="com.ibm.commerce.marketing.promotion.event.WCSPromotionSuspendedEventListener">
      <Name>[SYSTEM]PROMOTIONSUSPENDHELPER</Name>
      <ListensFor>com.ibm.commerce.marketing.promotion.event.PromotionSuspendedEvent</ListensFor>
   </Listener>
   <!-- DO NOT MODIFY THE SECTION ABOVE -->

   <!--

   <Listener impl="com.ibm.commerce.marketing.promotion.event.PrintPromotionLifeCycleEventListener">
      <Name>PrintLifeCycleEventListener</Name>
         <ListensFor>com.ibm.commerce.marketing.promotion.event.PromotionChangedEvent</ListensFor>
         <ListensFor>com.ibm.commerce.marketing.promotion.event.PromotionCreatedEvent</ListensFor>
         <ListensFor>com.ibm.commerce.marketing.promotion.event.PromotionDeployedEvent</ListensFor>
         <ListensFor>com.ibm.commerce.marketing.promotion.event.PromotionRemovedEvent</ListensFor>
         <ListensFor>com.ibm.commerce.marketing.promotion.event.PromotionResetEvent</ListensFor>
         <ListensFor>com.ibm.commerce.marketing.promotion.event.PromotionResumedEvent</ListensFor>
         <ListensFor>com.ibm.commerce.marketing.promotion.event.PromotionSuspendedEvent</ListensFor>
         <ListensFor>com.ibm.commerce.marketing.promotion.event.PromotionWithdrawnEvent</ListensFor>
   </Listener>
   <Listener impl="com.ibm.commerce.marketing.promotion.event.PrintPromotionExecutionEventListener">
      <Name>PrintExecutionEventListener</Name>
         <ListensFor>com.ibm.commerce.marketing.promotion.event.PromotionAssessedEvent</ListensFor>
         <ListensFor>com.ibm.commerce.marketing.promotion.event.PromotionAppliedEvent</ListensFor>
         <ListensFor>com.ibm.commerce.marketing.promotion.event.PromotionEliminatedEvent</ListensFor>
         <ListensFor>com.ibm.commerce.marketing.promotion.event.PromotionQualifiedEvent></ListensFor>
         <ListensFor>com.ibm.commerce.marketing.promotion.event.PromotionRejectedEvent</ListensFor>
   </Listener>
   <Listener impl="com.ibm.commerce.marketing.promotion.event.PrintPromotionRASEventListener">
      <Name>PrintRASEventListener</Name>
      <StoreKey>
         <DN>ou=BlueMall B2C Organization, o=Seller Organization, o=Root Organization</DN>
         <Identifier>BlueStore 201</Identifier>
      </StoreKey>
      <ListensFor>com.ibm.commerce.marketing.promotion.event.PromotionDebugEvent</ListensFor>
      <ListensFor>com.ibm.commerce.marketing.promotion.event.PromotionErrorEvent</ListensFor>
      <ListensFor>com.ibm.commerce.marketing.promotion.event.PromotionLogEvent</ListensFor>
      <ListensFor>com.ibm.commerce.marketing.promotion.event.PromotionTraceEvent</ListensFor>
   </Listener>
   -->

</PromotionEventListenerRegistry>

Normalmente, los sucesos más interesantes a escuchar son PromotionQualifiedEvent y PromotionAppliedEvent. El primero se emite cuando una promoción se considera aplicable a un pedido, y se ha determinado que aplicar dicha promoción no viola ninguna política. Esto suele ocurrir cuando se añade un artículo de pedido al carro de la compra y ésta se vuelve a evaluar junto con las promociones aplicables. El segundo suceso se emite cuando el pedido finaliza (es decir, cuando se confirma y se somete). El motor de promociones utiliza este suceso para emitir cupones que son el resultado de ofrecer VoucherAdjustments a un comprador.