01 Background Information on DLM

Long, Long Ago in 2001

When Sungard Higher Education, then Campus Pipeline, chose to adopt uPortal 2.0 into its Luminis product offering Luminis' existing UI was very rigid in that it provided no customization to end users of the portal and only minimal customizations for the institution. uPortal was chosen to provide a much more flexible offering as far as end user UI customization was concerned. However, there was one major issue that had to be addressed. Institutions would certainly not allow going from no end user customization to complete customization by end users. Institutions should have the ability to determine how rigid or how flexible the policy should be for end user customizations.

uPortal 2.0 was completely open to end users for customizations. Items could be restricted by poking data into specific locations in the database. However, such "hacks" had to be made to each user's layout every time such restrictions or additions were to be modified. Such changes applied across all user layouts in the database had obvious shortcomings: duplication of layout content, large performance hits to update all layouts, etc.

A Derivatve Solution

The resultant solution was called Distributed Layout Management. It was a derivative solution in that it derived from the strengths and functionality already existent in uPortal, namely the functionality already provided SimpleLayoutManager and its associated code.

For example, there wasn't much difference between a regular user's layout and a portion of a layout to be pushed into regular user's layouts. So regular user accounts were used for creating the layout that was to be pushed. By using regular user layouts the existing User Preferences channel was leveraged for editing the layouts-to-be-pushed.

Furthermore, as more flexible restrictions were defined that could be configured by a layout owner when editing their layout such restrictions had to be persisted in the database. These were placed on layout elements within the layout owner's layout using the existing database schema. Such enhancement values only appear in two columns of two existing tables. Therefore, the bulk of the existing database access code was untouched.

A "Fragment" is Born

Now, the resulting layouts-to-be-pushed to end users were modified slightly when being preloaded to be included in end user's layouts. For example, end user's already had a header and footer folder containing channels used by the theme stylesheet. These were necessary when the editor of the layout-to-be-pushed logged in to edit the layout but were not needed by the user of the layout. Therefore, such pieces were dropped during loading for merging into end user's layouts. As such, the term, layout fragment, was coined to identify the remaining layout piece that was merged into user's layouts. Such is the term used by both DLM and the alternative approach, ALM today.

Configuration

Finally, to convey to the system what user accounts were to be used as fragments an XML file was used. Put simply, it told the system what fragments existed, what user accounts were used to provide the layout of each, and what users would recieve each fragment. This file was named dlm.xml and was read each time that the system started up allowing the portal to then pre-load each of the layouts of the indicated fragments and special classes used to determine which users, the audience of the fragment, received each fragment when they logged in.

DLM Today

uPortal with DLM premiered in Luminis starting in 2002. Then in mid 2004 there was talk of requirements for the uPortal 3.0 offering along the lines of layout management functionality. There were several areas where ALM and DLM each had differing strengths and weaknesses. A result of such discussions was a compilation of a Gap Analysis illustrating such differences. This was followed by discussions of merging the two feature sets together.

As a first step toward such an effort DLM was to be made available to the community. The result is the offering available in uPortal 2.5.0. For a more technical discussion on DLM see Sungard SCT's ALM.