Transient order tracking is handled by the component /atg/commerce/order/abandoned/AbandonedOrderEventListener
. This component has two purposes.
When a session is destroyed (either because the user logs out or the session times out), the AbandonedOrderEventListener
checks whether a profile was associated with the session, and whether that profile is transient. If so, it then checks whether a non-empty shopping cart is also associated with the session, and whether that shopping cart’s total value is at least as great as the AbandonedOrderEventListener
.minimumAmount
property. By default, the minimumAmount
property of the AbandonedOrderEventListener
points to the minimumAmount
property in AbandonedOrderService
. If the order meets the criteria, then a new TransientOrderEvent
is created, and populated with the orderId
and amount
, and the value 0
is placed in the event’s submitted
property. Then, the event is sent out on the messaging system.
The AbandonedOrderEventListener
also registers as a listener for SubmitOrder
events. When a SubmitOrder
event is received, the AbandonedOrderEventListener
checks whether the profile associated with the order is transient. If so, then it also creates a new TransientOrderEvent
, this time populating the submitted
property in the event with the value 100
. We populate the submitted
property with this value so that we can calculate the percentage of transient orders by averaging the values of the submitted
property.