Sungard SCT's RDBMDistributedLayoutStore

This page is part of the Aggregated Layout Management Convergence 2.x effort that will be added to 3.x.

For our version of ALM we have the portal.properties parameter UserLayoutStoreFactory.implementation configured to use a subclass of RDBMUserLayoutStore that we provide.

Portal.properties DLM Settings
org.jasig.portal.UserLayoutStoreFactory.implementation = 
   campuspipeline.uportal.dlm.RDBMDistributedLayoutStore

This class performs the following tasks when constructed.

Activity

Description

Obtain UserIdentityStore

Used during loading of fragments since layouts for a fragment are aquired from the layout of the owner account specified for a fragment in dlm.xml.

Load dlm.xml Configuration

Accomplished through the ConfigurationLoader class which loads a DOM representation of the contents of dlm.xml and then creates:

  1. A Properties object containing the <dlm:property> values and
  2. An array of FragmentDefinition objects that house the declared fragment definitions.
    These are then placed in RDBMDistributedLayoutStore. The FragmentDefinition class represents a single <dlm:fragment> element in dlm.xml. It implements the Evaluator interface, loads the declared EvaluatorFactory for each nested <dlm:audience> element, and from those factories aquires an Evaluator for each audience. It also holds the ownerId and the set of declared roles at this point.

Turns on debugging

If the debugging property in dlm.xml is true then debug entries for DLM will be dumped for most activities performed by the DLM classes both for loading and for evaluating and merging fragments for a user at log-in. See Sample DLM merging debug output.

Loads Layout Decorator

If a layout decorator is specified in dlm.xml this is the point where it is loaded and made ready for use during loading of layouts.

Launches Activator Thread

FragmentDefinitions must be expanded into the full loaded layout of the fragment's specified owner and converted to have node ids that are consistently reproducible and unique system wide. This is critical so that when these fragments are merged with a user's owned portion of the layout we don't get id collisions and so that we can always trace back to the original layout node that contributed a specific node to the user's layout. This facilitates users modifying fragments and duplicating those modifications the next time the user logs in. This process of loading, and converting the layouts is known as fragment activation and is performed by a FragmentActivator class. All requests for regular user layouts are blocked until activation has completed.

Launches Fragment Cleaner Daemon

This thread reloads layouts for fragments based on the cache refresh rate specified in dlm.xml. It too uses the FragmentActivator class to load and convert the layouts during refreshing.