Store relationships for cached store pages
If your store is using data defined in another store through a store relationship, you must use the request attributes specified by the cache filter to define the relationships. The cache filter is a servlet filter that defines request attributes from the session and store relationship information that can be used by the WebSphere Application Server dynamic cache. The dynamic cache then uses this information to construct cache IDs and dependency IDs to be used for cache invalidation.
The cache filter creates the store relationships information by calling the getStorePath() and getStoresForRelatedStore() methods from the StoreAccessBean. The corresponding information is listed in the following table:
Store Relationship Type | Store Relationship Identifier | Request Attributes Name for getStorePath() | Request Attributes Name for getStoresForRelatedStore() |
---|---|---|---|
IBM commerce businessPolicy | -1 | DC_bus_SP_N | DC_bus_RS_N |
IBM commerce business campaigns | -3 | DC_camp_SP_N | DC_camp_RS_N |
IBM commerce business catalog | -4 | DC_cat_SP_N | DC_cat_RS_N |
IBM commerce business command | -5 | DC_cmd_SP_N | DC_cmd_RS_N |
IBM commerce hosted store | -6 | DC_host_SP_N | DC_host_RS_N |
IBM commerce price | -7 | DC_prc_SP_N | DC_prc_RS_N |
IBM commerce referral | -8 | DC_ref_SP_N | DC_ref_RS_N |
IBM commerce segmentation | -9 | DC_seg_SP_N | DC_seg_RS_N |
IBM commerce URL | -10 | DC_url_SP_N | DC_url_RS_N |
IBM commerce view | -11 | DC_view_SP_N | DC_view_RS_N |
IBM commerce inventory | -13 | DC_inv_SP_N | DC_inv_RS_N |
IBM commerce base item | -14 | DC_baseItem_SP_N | DC_baseItem_RS_N |
IBM commerce channel store | -15 | DC_chs_SP_N | DC_chs_RS_N |
IBM commerce currency conversion | -17 | DC_currConv_SP_N | DC_currConv_RS_N |
IBM commerce currency format | -18 | DC_currFmt_SP_N | DC_currFmt_RS_N |
IBM commerce supported currency | -19 | DC_supCurr_SP_N | DC_supCurr_RS_N |
IBM commerce counter value currency | -20 | DC_cterCurr_SP_N | DC_cterCurr_RS_N |
IBM commerce measurement format | -21 | DC_meaFmt_SP_N | DC_meaFmt_RS_X |
IBM commerce contract | -22 | DC_contract_SP_N | DC_contract_RS_N |
Store relationship caching example
To understand how caching pages that use a store relationship works, consider the following example.
Publishing the sample composite store archive DemandChain.sar and then creating a store (for example, ResellerOne) in that site creates the following stores.
Store ID | Directory | Store Type |
---|---|---|
10001 | CommercePlaza | channel hub |
10002 | CommercePlazaCatalog | catalog asset store |
10003 | CommercePlaza | distributor proxy |
10004 | ConsumerDirectResellerProfile | storefront asset store |
10051 | ResellerOne | reseller store |
ResellerOne (10051), the reseller store, uses the assets defined in the storefront asset store (10004) and the catalog asset store (1002).
In order to set up the caching relationship, the cache filter gets the following information:
Store ID | Relationship Type | getStorePath() | getStoresForRelatedStore() |
---|---|---|---|
10001 |
|
10002 | not applicable |
10001 |
|
10051 | not applicable |
10051 |
|
10051, 10002, 10004 | 10051 |
10051 |
|
10051, 10004 | 10051 |
10051 |
|
10051, 10002 | 10051 |
Then the cache filter sets up the following request attributes:
Store Relationship | Store ID 10051 | store ID 10051 | store ID 10001 |
---|---|---|---|
-1 (business policy) | DC_bus_SP_0=10051 DC_bus_SP_1=10002 DC_bus_SP_2=10004 | DC_bus_RS_0=10051 | DC_bus_SP_0=10002 |
-2 (tax) | DC_tax_SP_0=10051 DC_tax_SP_1=10004 | DC_tax_RS_0=10051 | |
-4 (catalog) | DC_cat_SP_0=10051 DC_cat_SP_1=10002 | DC_cat_RS_0=10051 | DC_cat_SP_0=10002 |
-6 (hosted store) | DC_host_SP_0=10051 | DC_host_RS_0=10001 | DC_host_SP_0=10051 |
Whenever the catalog of the catalog asset store (10002) is changed, the catalog pages of the ResellerOne store (10051) must also be invalidated before it can use the information from the catalog asset store (10002). In order for the pages in 10051 to be invalidated, extra dependency IDs must be set up for this store relationship. Setting up the extra dependency IDs for StoreCatalogDisplay is illustrated in the following example:
<!-- Start Store Relationship Dependency Ids -->
<!-- DC_cat1 is the catalog Profile Store ID -->
<dependency-id>storeId
<component id="DC_cat_SP_" type="attribute">
<required>true</required>
<index>1</index>
</component>
</dependency-id>
<dependency-id>storeId:catalogId
<component id="DC_cat_SP_" type="attribute">
<required>true</required>
<index>1</index>
</component>
<component id="catalogId" type="attribute">
<required>true</required>
</component>
</dependency-id>
<dependency-id>StoreCatalogDisplay:storeId
<component id="DC_cat_SP_" type="attribute">
<required>true</required>
<index>1</index>
</component>
</dependency-id>
<!-- Ends Store Relationship Dependency Ids -->
The extra dependency IDs created are as follows:
- storeId:10002
- storeId:catalogId:10002:10051
- StoreCatalogDisplay:storeId:10002
Once these extra dependency IDs are defined, where there are changes to the catalog asset store 10002 that cause the catalog asset store pages to be invalidated, the hosted store (10051) pages will also be invalidated.