Record Caching Optimization

Only one record is added to cache when requested. Previously, when records were requested, they were retrieved from the database and added to the cache.

Records can be preloaded into the cache when the server is restarted and at runtime when a record is requested, it can be retrieved from the cache and returned. This is done by asynchronous messaging.

The message for a given Organization loads all PRODUCTKEYS into the cache. All records for a given repository and organization are loaded into the cache.

Processing of the PRODUCTKEY and records is done in the same message, that is, synchronously. If both are required to be done in parallel, a new instance of the class needs to be added in the ConfigValues.xml file, passing:
  catalogName=PRODUCTKEY and RECORD
in the second.
OrganizationName=PRODUCTKEY and RECORD
in the second.
<ConfValue description="The list of catalog/repository names for which the record data should be cached on startup. Specify a comma separated list. Example : MASTERCATALOG, TEST" isHotDeployable="false" listDefault="DEMO" name="Cache Preloader Catalog/Repository Name List" propname="com.tibco.cim.init.PreLoadManager.catalogName" sinceVersion="7.0" visibility="Advanced">
   <ConfList>
      <ConfListString value="DEMO" />
   </ConfList>
</ConfValue>
<ConfValue description="The list of organization names used to select catalogs/repositories for preloading on startup. This should correspond to catalog/repository names. Specify a comma separated list. Example : MYORG, TIBCOCIM" isHotDeployable="false" listDefault="TIBCOCIM" name="Cache Preloader Organization List" propname="com.tibco.cim.init.PreLoadManager.OrganizationName" sinceVersion="7.0" visibility="Advanced">
   <ConfList>
      <ConfListString value="TIBCOCIM" />
   </ConfList>
</ConfValue>
<ConfValue description="List of object types which should be cached on startup. Only the record (RECORD) and the key information of the record (PRODUCTKEY) are supported right now." isHotDeployable="false" listDefault="RECORD PRODUCTKEY" name="Cache Preloader Record Types" propname="com.tibco.cim.init.PreLoadManager.ObjectName" sinceVersion="7.0" visibility="All">
   <ConfList>
      <ConfListString value="RECORD" />
      <ConfListString value="PRODUCTKEY" />
   </ConfList>
</ConfValue>
<ConfValue description="The list of input map names used to filer records for preloading on startup. Example : INPUTMAP1" isHotDeployable="false" listDefault="DEMO" name="Cache Preloader Input Map Name List" propname="com.tibco.cim.init.PreLoadManager.inputMapName" sinceVersion="7.1" visibility="All">
   <ConfList>
   </ConfList>
</ConfValue>
If an inputmap is specified, records/productkeys for the data source related to that inputmap are loaded into the cache. <ConfValue description="The list of input map names where the record data should be cached on startup. Example : INPUTMAP1" isHotDeployable="false" listDefault="DEMO" name="Cache Preloader InputMap Name List" propname="com.tibco.cim.init.PreLoadManager.inputMapName" sinceVersion="7.1" visibility="All">
   <ConfList>
   </ConfList>
</ConfValue>
Preloading can also be done through a utility ($MQ_HOME/bin/preload.sh or bat), when the server is running. The utility sends an asynchronous message to preload records and Productkeys per the configuration in the config file.