How promotion data is stored and managed
If you are creating a new custom promotion type for Management Center, you should understand how the Management Center interacts with the promotion component, and how promotions are stored in the database.
Promotion XML
There are two types of promotion XML:- The authoring promotion XML contains the data about a promotion that business users input into the Promotions tool user interface when authoring promotions. The authoring promotion XML was introduced with Management Center Version 6 Feature Pack 4 to make promotions customization easier.
- The runtime promotion XML is used by the server to evaluate promotions during the shopping flow. The runtime promotion XML has not changed from previous Management Center feature packs.
When a business user activates a promotion, the following process transforms the authoring promotion XML into the runtime promotion XML:
- The promotion activation logic builds the authoring promotion XML from data stored in the Management Center promotion authoring tables. These tables contain the business user input about a promotion.
- A set of XSLT templates transform the authoring promotion XML into the runtime promotion XML
that the promotion engine requires to evaluate promotions. The transformation involves several
steps:
- The XSLT template files transform the authoring promotion XML to create four sections of the runtime promotion XML: the basePromotion section, the purchaseCondition section, the customCondition section, and the targetingCondition section.
- The transformation process uses the fromXML interface to initialize a promotion object.
- The transformation process uses the toXML interface to generate the runtime promotion XML and store it in the PX_PROMOTION table in the XMLPARAM column.
The following diagram illustrates this process:
Note that until a promotion is activated, only placeholder promotion XML is stored in the PX_PROMOTION table.
XSLT templates
To add a new promotion type, developers can design widgets that gather the required input and save the input to the promotion authoring tables. As shown in the previous diagram, XSLT templates then transform the authoring promotion XML into the runtime promotion XML. Therefore, customizing the runtime support for a new promotion type only requires a custom XSLT template to support the user interface widgets; developers do not need to make backend Java code changes to compose the runtime promotion XML. This makes customizing Management Center promotion types simpler than customizing HCL Commerce Accelerator promotion types.
Each promotion type defined in the Management Center Promotions tool is configured to work with certain XSLT templates. The Promotions tool provides the set of XSLT templates that transform the default promotions types. When you create a custom promotion type, you must create a new custom XSLT template; however, you can copy the content of an existing XSLT template into your new file and then customize only the sections that are different.
Promotion elements and variables
Promotion elements and their variables allow the Management Center Promotions tool to manage the authoring data for the purchaseCondition section, the customCondition section, and the targetingCondition section of the runtime promotion XML in a generic framework.
PX_ELEMENT_ID | PX_PROMOTION_ID | NAME | TYPE | SubType | Parent | Sequence |
---|---|---|---|---|---|---|
1001 | 10101 | Name1001 | PurchaseCondition | UI_PurchaseCondition | NULL | 0 |
1002 | 10101 | Name1002 | DiscountRange | UI_DiscountRange | Name1001 | 0 |
1003 | 10101 | Name1003 | DiscountRange | UI_DiscountRange | Name1001 | 1 |
PX_ELEMENTNVP_ID | PX_ELEMENT_ID | NAME | VALUE | Note |
---|---|---|---|---|
1000000 | 1001 | Currency |
USD |
The currency is USD |
1000001 | 1002 | LowerBound |
100 |
For range of Name1002, the lowerbound=100 |
1000002 | 1002 | Percentage |
10 |
For range of Name1002, the Percentage=10 |
1000003 | 1003 | LowerBound |
500 |
For range of Name1003, the lowerbound=500 |
1000004 | 1003 | Percentage |
50 |
For range of Name1003, the Percentage=50
|
<PurchaseCondition>
<DiscountRange></DiscountRange>
<DiscountRange></DiscountRange>
</PurchaseCondition>
A
promotion element variable describes the optional data value associated with a promotion element.
When a business user activates a promotion, the promotion activation logic builds the authoring
promotion XML and inserts a data node under the appropriate promotion element node, followed by text
nodes that are built according to the name and value from the PX_ELEMENTNVP table for the element.
Here is an
example:<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>
Predefined element types
<TargetedProfile>
<CustomerProfileKey>
<ProfileName>Customers who are under 40 years of age</ProfileName>
<OwnerDN>ou=b2c,o=seller organization,o=root organization</OwnerDN>
</CustomerProfileKey>
</TargetedProfile>
To
simplify the design of the Management Center
Promotions tool and to improve performance, there are several predefined element types that allow
such business entities to be managed with only the primary key (ID). The promotion activation
service then uses this ID to resolve external identifier information that is required in the runtime
promotion XML and then add that information to the authoring promotion XML as if the information was
gathered from the user interface. This resolved external identifier information is inserted into the
data node of the element so that it is available for transformation. <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>
The
list of predefined element types includes the following items. While not all of these predefined
elements are currently used by the default promotion types, they are provided to support customization.- IncludeMemberGroupIdentifier
- A member group that is part of an inclusion condition in the rule.
- ExcludeMemberGroupIdentifier
- A member group that is part of an exclusion condition in the rule.
- IncludeCategoryIdentifier
- A category that is part of an inclusion condition in the rule.
- ExcludeCategoryIdentifier
- A category that is part of an exclusion condition in the rule.
- IncludeCatalogEntryIdentifier
- A catalog entry that is part of an inclusion condition in the rule.
- ExcludeCatalogEntryIdentifier
- A catalog entry that is part of an exclusion condition in the rule.
- GiftCatalogEntryIdentifier
- A catalog entry that is a free gift in the rule.
- IncludePromotionIdentifier
- A promotion that is part of an inclusion condition in the rule.
- ExcludePromotionIdentifier
- A promotion that is part of an exclusion condition in the rule.
- IncludeShipModeIdentifier
- A ship mode that is part of an inclusion condition in the rule.
- ExcludeShipModeIdentifier
- A ship mode that is part of an exclusion condition in the rule.
- IncludeStoreIdentifier
- A store that is part of an inclusion condition in the rule.
- ExcludeStoreIdentifier
- A store that is part of an exclusion condition in the rule.
- IncludeUserIdentifier
- A user that is part of an inclusion condition in the rule.
- ExcludeUserIdentifier
- A user that is part of an exclusion condition in the rule.
Idand the appropriate value as the primary key. Use these predefined element types whenever possible. When a promotion is activated, the Id values are also used to populate the CATENCALCD and CATGPCALCD tables to support the ShopcartDrivenAgendaBuilder.