Agenda builder

The agenda builder builds a table that shows the relationship between promotions and polices during promotion evaluation. The agenda builder is a configurable part of the promotion engine.

Based on the template specified, the agenda builder finds all of the active promotions in the groups named in the template. This is the list of promotions that will be attempted. Global policies are deemed applicable to every single promotion in the list. Group level policies are applicable only to promotions in the group with which that policy is associated. A custom implementation of the agenda builder is part of a possible customization.

Custom agenda builders must implement the com.ibm.commerce.marketing.promotion.runtime.PromotionExecutionAgendaBuilder interface.

The following XML fragment shows how an agenda builder is registered with the promotion engine.


<PromotionExecutionAgendaBuilder impl="com.ibm.commerce.marketing.promotion.runtime.DefaultAgendaBuilder">
   <InvocationTemplates>
      <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>
      <Template>
         <TemplateKey>
            <StoreKey>
               <DN>o=root organization</DN>
               <Identifier>NullEntity</Identifier>
            </StoreKey>
            <Name>Order Level Promotion</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>OrderLevelPromotion</GroupName>
         </PromotionGroupKey>
      </Template>
   </InvocationTemplates
</PromotionExecutionAgendaBuilder>

The template definition is part of the agenda builder configuration. This implies that if you provide your own implementation of the agenda builder, you do not have to follow the template scheme.