<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta content="Apache Forrest" name="Generator">
<meta name="Forrest-version" content="0.8-dev">
<meta name="Forrest-skin-name" content="pelt">
<title>Dispatcher (Draft - feature under development) (v0.8-dev)</title>
<link type="text/css" href="../skin/basic.css" rel="stylesheet">
<link media="screen" type="text/css" href="../skin/screen.css" rel="stylesheet">
<link media="print" type="text/css" href="../skin/print.css" rel="stylesheet">
<link type="text/css" href="../skin/profile.css" rel="stylesheet">
<script src="../skin/getBlank.js" language="javascript" type="text/javascript"></script><script src="../skin/getMenu.js" language="javascript" type="text/javascript"></script><script src="../skin/fontsize.js" language="javascript" type="text/javascript"></script>
<link rel="shortcut icon" href="../favicon.ico">
</head>
<body onload="init()">
<script type="text/javascript">ndeSetTextSize();</script>
<div id="top">
<!--+
    |breadtrail
    +-->
<div class="breadtrail">
<a href="http://www.apache.org/">apache</a> &gt; <a href="http://forrest.apache.org/">forrest</a><script src="../skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script>
</div>
<!--+
    |header
    +-->
<div class="header">
<!--+
    |start group logo
    +-->
<div class="grouplogo">
<a href="http://www.apache.org/"><img class="logoImage" alt="Apache" src="../images/apache-forrest.png" title="The Apache Software Foundation"></a>
</div>
<!--+
    |end group logo
    +-->
<!--+
    |start Project Logo
    +-->
<div class="projectlogo">
<a href="http://forrest.apache.org/"><img class="logoImage" alt="Forrest" src="../images/project-logo.gif" title="Apache Forrest"></a>
</div>
<!--+
    |end Project Logo
    +-->
<!--+
    |start Search
    +-->
<div class="searchbox">
<form action="http://www.google.com/search" method="get" class="roundtopsmall">
<input value="forrest.apache.org" name="sitesearch" type="hidden"><input onFocus="getBlank (this, 'Search the site with google');" size="25" name="q" id="query" type="text" value="Search the site with google">&nbsp; 
                    <input name="Search" value="Search" type="submit">
</form>
</div>
<!--+
    |end search
    +-->
<!--+
    |start Tabs
    +-->
<ul id="tabs">
<li>
<a class="unselected" href="../index.html">Welcome</a>
</li>
<li>
<a class="unselected" href="../contrib.html">Developers</a>
</li>
<li class="current">
<a class="selected" href="../versions/index.html">Versioned Docs</a>
</li>
<li>
<a class="unselected" href="../pluginDocs/index.html">Plugins</a>
</li>
<li>
<a class="unselected" href="../tools/index.html">Tools</a>
</li>
</ul>
<!--+
    |end Tabs
    +-->
</div>
</div>
<div id="main">
<div id="publishedStrip">
<!--+
    |start Subtabs
    +-->
<div id="level2tabs">
<a class="unselected" href="../docs_0_70/index.html">0.70 (current)</a><a class="selected" href="../docs_0_80/index.html">0.80-dev (under development)</a><a class="unselected" href="../docs_0_60/index.html">0.60 (past)</a>
</div>
<!--+
    |end Endtabs
    +-->
<script type="text/javascript"><!--
document.write("Last Published: " + document.lastModified);
//  --></script>
</div>
<!--+
    |breadtrail
    +-->
<div class="breadtrail">
             
             &nbsp;
           </div>
<!--+
    |start Menu, mainarea
    +-->
<!--+
    |start Menu
    +-->
<div id="menu">
<div onclick="SwitchMenu('menu_selected_1.1', '../skin/')" id="menu_selected_1.1Title" class="menutitle" style="background-image: url('../skin/images/chapter_open.gif');">0.80-dev</div>
<div id="menu_selected_1.1" class="selectedmenuitemgroup" style="display: block;">
<div class="menuitem">
<a href="../docs_0_80/index.html">Overview</a>
</div>
<div onclick="SwitchMenu('menu_1.1.2', '../skin/')" id="menu_1.1.2Title" class="menutitle">How-To</div>
<div id="menu_1.1.2" class="menuitemgroup">
<div class="menuitem">
<a href="../docs_0_80/howto/index.html">Overview</a>
</div>
<div onclick="SwitchMenu('menu_1.1.2.2', '../skin/')" id="menu_1.1.2.2Title" class="menutitle">Install Forrest</div>
<div id="menu_1.1.2.2" class="menuitemgroup">
<div class="menuitem">
<a href="../docs_0_80/your-project.html">Using Forrest</a>
</div>
<div class="menuitem">
<a href="../docs_0_80/build.html" title="Build and install the current                     unreleased version">Building Forrest from Source</a>
</div>
</div>
<div class="menuitem">
<a href="../docs_0_80/upgrading_08.html">Upgrading to 0.8</a>
</div>
<div class="menuitem">
<a href="">Use Forrest</a>
</div>
<div onclick="SwitchMenu('menu_1.1.2.5', '../skin/')" id="menu_1.1.2.5Title" class="menutitle">Customize Forrest</div>
<div id="menu_1.1.2.5" class="menuitemgroup">
<div class="menuitem">
<a href="../docs_0_80/howto/howto-editcss.html">Edit CSS (WYSIWYG)</a>
</div>
<div class="menuitem">
<a href="../docs_0_80/howto/howto-pdf-tab.html" title="Generate one pdf-document for all pages of a tab">Create tab PDF</a>
</div>
<div class="menuitem">
<a href="../docs_0_80/howto/howto-corner-images.html">CSS corner SVG</a>
</div>
<div class="menuitem">
<a href="../docs_0_80/howto/howto-custom-html-source.html">Custom html source</a>
</div>
<div class="menuitem">
<a href="../docs_0_80/project-sitemap.html">Project sitemap</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.2.6', '../skin/')" id="menu_1.1.2.6Title" class="menutitle">Integrate Forrest with tools</div>
<div id="menu_1.1.2.6" class="menuitemgroup">
<div class="menuitem">
<a href="../docs_0_80/howto/howto-forrest-from-maven.html">Maven Integration</a>
</div>
<div class="menuitem">
<a href="../docs_0_80/catalog.html">Using DTD Catalogs</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.2.7', '../skin/')" id="menu_1.1.2.7Title" class="menutitle">Extend Forrest</div>
<div id="menu_1.1.2.7" class="menuitemgroup">
<div class="menuitem">
<a href="../docs_0_80/howto/howto-buildPlugin.html">Build a Plugin</a>
</div>
<div class="menuitem">
<a href="../docs_0_80/skin-package.html">Package new Skins</a>
</div>
</div>
<div class="menuitem">
<a href="../docs_0_80/howto/howto-asf-mirror.html">Download mirror</a>
</div>
<div onclick="SwitchMenu('menu_1.1.2.9', '../skin/')" id="menu_1.1.2.9Title" class="menutitle">Dispatcher</div>
<div id="menu_1.1.2.9" class="menuitemgroup">
<div class="menuitem">
<a href="../docs_0_80/howto/howto-dispatcher-install.html">Install</a>
</div>
<div class="menuitem">
<a href="../docs_0_80/howto/howto-structurer-dsl.html">Structurer</a>
</div>
<div class="menuitem">
<a href="../docs_0_80/howto/howto-dispatcher-quickstart.html">Quickstart</a>
</div>
<div class="menuitem">
<a href="../docs_0_80/howto/howto-structurer-contracts.html">Contracts</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.2.10', '../skin/')" id="menu_1.1.2.10Title" class="menutitle">Adding Documentation</div>
<div id="menu_1.1.2.10" class="menuitemgroup">
<div class="menuitem">
<a href="../howto-howto.html" title="Instructions for writing                 a new howto-document">Write a How-to</a>
</div>
<div onclick="SwitchMenu('menu_1.1.2.10.2', '../skin/')" id="menu_1.1.2.10.2Title" class="menutitle">Multipage HowTo</div>
<div id="menu_1.1.2.10.2" class="menuitemgroup">
<div class="menuitem">
<a href="../docs_0_80/howto/multi/howto-multi.html">Introduction</a>
</div>
<div class="menuitem">
<a href="../docs_0_80/howto/multi/step1.html">Step 1</a>
</div>
<div class="menuitem">
<a href="../docs_0_80/howto/multi/step2.html">Step 2</a>
</div>
<div class="menuitem">
<a href="../docs_0_80/howto/multi/step3.html">Step 3</a>
</div>
</div>
</div>
</div>
<div class="menuitem">
<a href="../docs_0_80/faq.html">FAQs</a>
</div>
<div onclick="SwitchMenu('menu_1.1.4', '../skin/')" id="menu_1.1.4Title" class="menutitle">Background</div>
<div id="menu_1.1.4" class="menuitemgroup">
<div class="menuitem">
<a href="../docs_0_80/linking.html">Menus and Linking</a>
</div>
<div class="menuitem">
<a href="../docs_0_80/searching.html">Search Options in Forrest</a>
</div>
<div class="menuitem">
<a href="../docs_0_80/locationmap.html">Locationmap</a>
</div>
<div class="menuitem">
<a href="../docs_0_80/skins.html" title="About default skins, their naming and features">Skins</a>
</div>
<div class="menuitem">
<a href="../docs_0_80/sitemap-ref.html">Sitemap Reference</a>
</div>
<div class="menuitem">
<a href="../docs_0_80/status-themes.html">Themes and Dispatcher vs. Skins</a>
</div>
<div class="menuitem">
<a href="../docs_0_80/cap.html">Sourcetype Action</a>
</div>
<div class="menuitem">
<a href="../docs_0_80/validation.html">XML Validation</a>
</div>
</div>
<div class="menuitem">
<a href="../docs_0_80/changes.html">Changes</a>
</div>
<div class="menupage">
<div class="menupagetitle">Dispatcher development</div>
</div>
<div class="menuitem">
<a href="../docs_0_80/glossary.html">Glossary</a>
</div>
<div onclick="SwitchMenu('menu_1.1.8', '../skin/')" id="menu_1.1.8Title" class="menutitle">Reference docs</div>
<div id="menu_1.1.8" class="menuitemgroup">
<div onclick="SwitchMenu('menu_1.1.8.1', '../skin/')" id="menu_1.1.8.1Title" class="menutitle">DTD documentation</div>
<div id="menu_1.1.8.1" class="menuitemgroup">
<div class="menuitem">
<a href="../dtdx/dtd-docs.html">Overview</a>
</div>
<div class="menuitem">
<a href="../dtdx/document-v20.dtdx.html">document-v20</a>
</div>
<div class="menuitem">
<a href="../dtdx/howto-v20.dtdx.html">howto-v20</a>
</div>
<div class="menuitem">
<a href="../dtdx/faq-v20.dtdx.html">faq-v20</a>
</div>
<div class="menuitem">
<a href="../dtdx/document-v13.dtdx.html">document-v13</a>
</div>
<div class="menuitem">
<a href="../dtdx/howto-v13.dtdx.html">howto-v13</a>
</div>
<div class="menuitem">
<a href="../dtdx/faq-v13.dtdx.html">faq-v13</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.8.2', '../skin/')" id="menu_1.1.8.2Title" class="menutitle">Doc samples</div>
<div id="menu_1.1.8.2" class="menuitemgroup">
<div class="menuitem">
<a href="../dtdx/document-v13.html">document-v13</a>
</div>
<div class="menuitem">
<a href="../dtdx/document-v20.html">document-v20</a>
</div>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.9', '../skin/')" id="menu_1.1.9Title" class="menutitle">Older Docs</div>
<div id="menu_1.1.9" class="menuitemgroup">
<div class="menuitem">
<a href="../docs_0_80/primer.html">Forrest Primer</a>
</div>
<div class="menuitem">
<a href="../docs_0_80/libre-intro.html">Libre</a>
</div>
<div class="menuitem">
<a href="../docs_0_80/dreams.html">Dream list</a>
</div>
<div class="menuitem">
<a href="../docs_0_80/howto/cvs-ssh/howto-cvs-ssh.html">CVS over SSH</a>
</div>
</div>
</div>
<div id="credit">
<hr>
        This is documentation for development version v0.8
       (<a href="http://forrest.apache.org/versions/">More</a>)</div>
<div id="roundbottom">
<img style="display: none" class="corner" height="15" width="15" alt="" src="../skin/images/rc-b-l-15-1body-2menu-3menu.png"></div>
<!--+
  |alternative credits
  +-->
<div id="credit2">
<a href="http://www.asia.apachecon.com/"><img border="0" title="ApacheCon Asia 2006 (14-17 August 2006)" alt="ApacheCon Asia 2006 (14-17 August 2006) - logo" src="http://asia.apachecon.com/wp-content/themes/apachecon/css/lyt/apache_con_asia_header.png" style="width: 150px;height: 50px;"></a><a href="http://www.us.apachecon.com/"><img border="0" title="ApacheCon US 2006 (9-13 October 2006)" alt="ApacheCon US 2006 (9-13 October 2006) - logo" src="http://www.us.apachecon.com/images/ASF-us-2006-web_masthead.jpg" style="width: 150px;height: 50px;"></a>
</div>
</div>
<!--+
    |end Menu
    +-->
<!--+
    |start content
    +-->
<div id="content">
<div title="Portable Document Format" class="pdflink">
<a class="dida" href="dispatcher.pdf"><img alt="PDF -icon" src="../skin/images/pdfdoc.gif" class="skin"><br>
        PDF</a>
</div>
<div class="trail">Font size: 
	          &nbsp;<input value="Reset" class="resetfont" title="Reset text" onclick="ndeSetTextSize('reset'); return false;" type="button">      
	          &nbsp;<input value="-a" class="smallerfont" title="Shrink text" onclick="ndeSetTextSize('decr'); return false;" type="button">
	          &nbsp;<input value="+a" class="biggerfont" title="Enlarge text" onclick="ndeSetTextSize('incr'); return false;" type="button">
</div>
<h1>Dispatcher (Draft - feature under development)</h1>
<div id="motd-area">
        This is documentation for development version v0.8
       (<a href="http://forrest.apache.org/versions/">More</a>)</div>
<div id="minitoc-area">
<ul class="minitoc">
<li>
<a href="#introduction">Introduction</a>
</li>
<li>
<a href="#background">Background</a>
<ul class="minitoc">
<li>
<a href="#nc-definition">Definition of naming conventions</a>
</li>
<li>
<a href="#leather">leather-dev</a>
</li>
</ul>
</li>
<li>
<a href="#dispatcher">Dispatcher - advanced separation of concerns</a>
<ul class="minitoc">
<li>
<a href="#contracts">Contracts - grouped functionality</a>
</li>
</ul>
</li>
<li>
<a href="#info">Further information</a>
</li>
</ul>
</div>
    
<div class="warning">
<div class="label">Warning</div>
<div class="content"> The "dispatcher" is new functionality which is still in 
      development phase. That is why it is in the "whiteboard" section of the 
      Forrest distribution. We are working at the moment on moving this plugin
      from the whiteboard into the core plugins. Further all dispatcher related 
      documents will be moved into the plugin as well.
      See <a href="../docs_0_80/status-themes.html">Status of Themes: Skins and Dispatcher</a>.
    </div>
</div>
    
<a name="N10014"></a><a name="introduction"></a>
<h2 class="underlined_10">Introduction</h2>
<div class="section">
<p> As stated in the <a href="../docs_0_80/howto/../your-project.html#skins">Skin 
        documentation </a> the aim of the Forrest skins is to provide many 
        capabilities so that extra skins are not needed. Experience showed that 
        many Forrest users still decided to create a new skin because the 
        default skin did not offer the features that they wanted or they "just" 
        needed extra content in some pages. We introduced skinconf.xml where 
        the user could configure some features of skins but it was up to the 
        skin to support it and did not solve the problem to add page specific 
        extra content. That led us to develop a new concept of creating skins 
        (we called the result "themes") which would be more easily extensible 
        by a user. </p>
</div>
    
<a name="N10022"></a><a name="background"></a>
<h2 class="underlined_10">Background</h2>
<div class="section">
<p> The problem with the forrest skins so far has been that even if 
        "only" the design changed (html-skeleton), we still had to write a 
        completely new skin and implement all functionality. Another problem 
        was that the functionality was not easily extensible by a user. We 
        decided to support a standard regarding naming conventions for css 
        elements. This standard has been developed on the <a href="http://www.oscom.org/events/oscom4/proposals/skins.html"> OSCOM 
        website</a>, where you can find some more background information.</p>
<a name="N1002F"></a><a name="nc-definition"></a>
<h3 class="underlined_5">Definition of naming conventions</h3>
<p> "A naming convention is an attempt to systematize names in a field 
          so they unambiguously convey similar information in a similar 
          manner." <a href="http://en.wikipedia.org/wiki/Naming_conventions">wikipedia</a> 
          
</p>
<a name="N1003D"></a><a name="leather"></a>
<h3 class="underlined_5">leather-dev</h3>
<p> That led to the development of the "leather-dev" skin which 
          established a semantic container approach for div elements. 
          Leather-dev evolved from the "pelt" skin and almost used the same 
          functionality (contracts). We had started to encapsulate functional 
          code into templates, but there have been still in 4 xsl files and without 
          any documentation what they are doing and how to use them. The 
          problems with leather-dev was pointed out in the mail "<a href="http://marc.theaimsgroup.com/?l=forrest-dev&m=111049344517653">status on leather-dev?</a>". The main proplem was to limit users to 
          only one html-skeleton was way too limiting regarding design. Since 
          we had now grouped functionality in named container we were ready to 
          start the dispatcher (aka forrest:views).</p>
</div>
    
<a name="N1004C"></a><a name="dispatcher"></a>
<h2 class="underlined_10">Dispatcher - advanced separation of concerns</h2>
<div class="section">
<p> The aim of the "dispatcher" concept is to provide a flexible 
        framework for creating site and page specific layout in different 
        formats from different content through an advanced seperation of 
        concerns.</p>
<p>The dispatcher is a filter that limits the data-model to a minimum by 
        only requesting what the strucuter (e.g. common.fv) need. This leads to 
        a different URL handling focus - away from document centric. A document 
        can (but do not have to) be behind a certain URL. Like said a 
        structurer can request any given data as input not only a document and 
        the forrest core contracts (like navigation). It may be the main 
        enhancement in comparison to skins that this concept let you easily 
        extend the default data models provided by forrest.</p>
<p>Since the dispatcher has implemented a fallback concept it makes 
        maintenance of custom themes which are based on forrest core ones very 
        easy and less time consuming. The principal is to override or extend 
        only certain parts (contracts) of the core. This is based on the 
        observation that normally only a small percentage of core skin 
        contracts have been changed. At the same time the new plugin system 
        emerged. Plugins are a way of extending Forrest to satisfy 
        site-specific needs. This includes to provide plugin specific 
        contracts.</p>
<a name="N1005B"></a><a name="contracts"></a>
<h3 class="underlined_5">Contracts - grouped functionality</h3>
<p>The result of the leather-dev development were grouped functionality 
          in named container. We gave those code snippets names (based on their 
          functionality) and called them contracts. This naming enabled us to 
          keep the contract separate from the position code itself. Further 
          since major parts of the code of skins never have been documentended 
          we started to add for each contract a description and an explanation 
          how to use this contract. The skinconf.xml gave an excellent 
          source for this documentation effort, since it described most 
          features of the pelt skin.</p>
<p>Contracts are standalone, self explaining, configurable 
            pieces of xsl templates created out of pure maintaining reasons.</p>
</div>
    
<a name="N10069"></a><a name="info"></a>
<h2 class="underlined_10">Further information</h2>
<div class="section">
<p> See the various How-to documents about the dispatcher, starting with 
        <a href="../docs_0_80/howto/howto-dispatcher-install.html">installing the 
        dispatcher</a> and
        <a href="../docs_0_80/howto/howto-dispatcher-quickstart.html">quickstart</a>
      
</p>
<p> Apache Forrest 1.0 Specification (Draft, not yet published): 
        <span class="codefrag">site-author/content/xdocs/TR/2005/WD-forrest10.html</span> 
</p>
</div>
  
</div>
<!--+
    |end content
    +-->
<div class="clearboth">&nbsp;</div>
</div>
<div id="footer">
<!--+
    |start bottomstrip
    +-->
<div class="lastmodified">
<script type="text/javascript"><!--
document.write("Last Published: " + document.lastModified);
//  --></script>
</div>
<div class="copyright">
        Copyright &copy;
         2002-2006 <a href="http://www.apache.org/licenses/">The Apache Software Foundation.</a>
</div>
<!--+
    |end bottomstrip
    +-->
</div>
</body>
</html>
