• Thomas Pollinger
  • 25.06.2018
  • EN

RenderTags: Availability of Store Render Tag

OpenText Web Site Management Server Release Notes

Changes in Management since Server 11.2 Service Pack 1 Hotfix 5


Availability of Store Render Tag

Store RenderTags can be used to temporarily store values during rendering (execution) of pages. Each store consists of a name and value. The name is of type string while value can be all objects that can be retrieved from other RenderTags or a string that can be directly assigned. Store RenderTags are not completely new - they have already been used in ForEach RenderTags.

  1. Create/modify a store:
<output type="object" object="Store:Set(storeName,value)" />
  1. Short notation:
<%!! Store:Set(storeName,value) !!%>
  1. Read a value from a store:
<output type="object" object="Store:Get(storeName)" />
  1. Short notation:
<%!! Store:Get(storeName) !!%>
<%!! Store:storeName !!%>

Consider that, if the same RenderTag (with exactly the same code) is used multiple times during rendering of a page, it will only be executed once on first occurrence and each other occurrences of the RenderTag will be substituted with the same result.

As default, the scope of stored values is restricted to the same thread where it is defined. Because of the usage of multithreaded rendering of navigation output areas, it is not possible to exchange stores between navigation output areas and masterpages or vice versa. If you for example define a store in master page template (or a container page of the master page), it is not possible to get the value of this store when rendering a navigation output area. For such cases, an option has been introduced to execute the navigation output in a sequential modus (see below).

Changes to Navigation output areas

With the default configuration (OpenText.WS.MS.ObjectProcessService.exe.config in WS\MS\Services\Navigation), navigation levels of one navigation area will be rendered in parallel, which means that once the RenderTag <navigation:nextlevel> can be found in code, the next level will be rendered in a parallel thread. The maximum number of parallel threads is configured in the configuration file mentioned above. The current level will continue to be rendered in the original thread. It is then possible that all available threads are rendering separate levels of a single navigation output.

Now, it is also possible to define if a navigation area should be executed sequential or parallel by using the new option useParallelRenderThreadsForNavigationLevels for Navigation provider. The option will not be evaluated if MultiThreadRendering is set to false in above configuration file. With this new option, it is possible to disable multi-thread rendering for one navigation area making it possible to set and read Store RenderTag values during the whole rendering of a page without having unpredictable results. Each <navigation:nextlevel> will be executed immediately and after the execution, the rendering of the current level will be continued (Depth-first search). The default value for this option is true which means that the area is executed in parallel; if set to false, the area is executed sequential.

  1. Default notation of Render Navigation output areas:
    <navigation areaname="MainMenu" />
  1. Short notation (area name):
<%!! Navigation:OutputArea(String:MainMenu) !!%>
  1. Displaying selected page navigations and interpreting authorizations:
    <navigation areaname="MainMenu" usehiddenindexes="Bool:True" pageguid="Guid:A1D3C7C4202540FF90AEEA36A0A66173" userights="Bool:True" useParallelRenderThreadsForNavigationLevels="Bool:True"/>
  1. Short notation (area name, use hidden index, guid of calling page, evaluate rights, use parallel render threads):
<%!! Navigation:OutputArea(String:MainMenu, Bool:True, Guid:A1D3C7C4202540FF90AEEA36A0A66173, Bool:True, Bool:True) !!%>
  1. Applying authorizations and determine parallelism:
    <navigation areaname="MainMenu" usehiddenindexes="Bool:True" userights="Bool:True" useParallelRenderThreadsForNavigationLevels="Bool:True"/>
  1. Short notation (area name, use hidden index, evaluate rights, use parallel render threads):
<%!! Navigation:OutputArea(String:MainMenu, Bool:True, Bool:True, Bool:True) !!%>

Über den Autor:
Thomas Pollinger

... ist Senior Site Reliability Engineer bei der Vodafone GmbH in Düsseldorf. Seit dem Jahr 2007 betreut er zusammen mit seinen Kollegen die OpenText- (vormals RedDot-) Plattform Web Site Management für die deutsche Konzernzentrale.

Er entwickelt Erweiterungen in Form von Plug-Ins und PowerShell Skripten. Seit den Anfängen in 2001 (RedDot CMS 4.0) kennt er sich speziell mit der Arbeitweise und den Funktionen des Management Server aus.