blob: 4833d3901bb5629c008726d5596b306962e9ad50 [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="keywords" content="SMILA/Documentation/Worker/PipelineProcessorWorker,SMILA/Development Guidelines/How to write a Pipelet,SMILA/Documentation/BPEL Workflow Processor,SMILA/Documentation/SesameOntologyManager,SMILA/Glossary" />
<link rel="shortcut icon" href="http://wiki.eclipse.org/SMILA/Documentation/Worker/favicon.ico" />
<link rel="search" type="application/opensearchdescription+xml" href="http://wiki.eclipse.org/opensearch_desc.php" title="Eclipsepedia (English)" />
<link rel="alternate" type="application/rss+xml" title="Eclipsepedia RSS Feed" href="http://wiki.eclipse.org/index.php?title=Special:Recentchanges&amp;feed=rss" />
<link rel="alternate" type="application/atom+xml" title="Eclipsepedia Atom Feed" href="http://wiki.eclipse.org/index.php?title=Special:Recentchanges&amp;feed=atom" />
<title>SMILA/Documentation/Worker/PipelineProcessorWorker - Eclipsepedia</title>
<style type="text/css" media="screen,projection">/*<![CDATA[*/ @import "http://wiki.eclipse.org/skins/eclipsenova/novaWide.css?116"; /*]]>*/</style>
<link rel="stylesheet" type="text/css" media="print" href="http://wiki.eclipse.org/skins/eclipsenova/eclipsenovaPrint.css?116" />
<link rel="stylesheet" type="text/css" media="handheld" href="http://wiki.eclipse.org/skins/eclipsenova/handheld.css?116" />
<link rel="stylesheet" type="text/css" href="http://wiki.eclipse.org/skins/eclipsenova/Nova/css/header.css" media="screen" />
<link rel="stylesheet" type="text/css" href="http://wiki.eclipse.org/skins/eclipsenova/tabs.css" media="screen" />
<link rel="stylesheet" type="text/css" href="http://wiki.eclipse.org/skins/eclipsenova/Nova/css/visual.css" media="screen" />
<link rel="stylesheet" type="text/css" href="http://wiki.eclipse.org/skins/eclipsenova/Nova/css/layout.css" media="screen" />
<link rel="stylesheet" type="text/css" href="http://wiki.eclipse.org/skins/eclipsenova/Nova/css/footer.css" media="screen" />
<!--[if IE]><link rel="stylesheet" type="text/css" href="/skins/eclipsenova/IEpngfix.css" media="screen" /><![endif]-->
<!--[if lt IE 5.5000]><style type="text/css">@import "/skins/eclipsenova/IE50Fixes.css?116";</style> <![endif]-->
<!--[if IE 5.5000]><style type="text/css">@import "/skins/eclipsenova/IE55Fixes.css?116";</style><![endif]-->
<!--[if IE 6]><style type="text/css">@import "/skins/eclipsenova/IE60Fixes.css?116";</style><![endif]-->
<!--[if IE 7]><style type="text/css">@import "/skins/eclipsenova/IE70Fixes.css?116";</style><![endif]-->
<!--[if lt IE 7]><script type="text/javascript" src="/skins/common/IEFixes.js?116"></script>
<meta http-equiv="imagetoolbar" content="no" /><![endif]-->
<script type= "text/javascript">/*<![CDATA[*/
var skin = "eclipsenova";
var stylepath = "/skins";
var wgArticlePath = "/$1";
var wgScriptPath = "";
var wgScript = "/index.php";
var wgServer = "http://wiki.eclipse.org";
var wgCanonicalNamespace = "";
var wgCanonicalSpecialPageName = false;
var wgNamespaceNumber = 0;
var wgPageName = "SMILA/Documentation/Worker/PipelineProcessorWorker";
var wgTitle = "SMILA/Documentation/Worker/PipelineProcessorWorker";
var wgAction = "view";
var wgRestrictionEdit = [];
var wgRestrictionMove = [];
var wgArticleId = "32889";
var wgIsArticle = true;
var wgUserName = null;
var wgUserGroups = null;
var wgUserLanguage = "en";
var wgContentLanguage = "en";
var wgBreakFrames = false;
var wgCurRevisionId = "286224";
var wgVersion = "1.12.0";
var wgEnableAPI = true;
var wgEnableWriteAPI = false;
/*]]>*/</script>
<script type="text/javascript" src="http://wiki.eclipse.org/skins/common/wikibits.js?116"><!-- wikibits js --></script>
<!-- Performance mods similar to those for bug 166401 -->
<script type="text/javascript" src="http://wiki.eclipse.org/index.php?title=-&amp;action=raw&amp;gen=js&amp;useskin=eclipsenova"><!-- site js --></script>
<!-- Head Scripts -->
<script type="text/javascript" src="http://wiki.eclipse.org/skins/common/ajax.js?116"></script>
<link rel="stylesheet" type="text/css" href="PipelineProcessorWorker.html" /> </head>
<body class="mediawiki ns-0 ltr page-SMILA_Documentation_Worker_PipelineProcessorWorker">
<div id="globalWrapper">
<div id="column-one">
<!-- Eclipse Additions for the Top Nav start here M. Ward-->
<div id="header">
<div id="header-graphic">
<img src="http://wiki.eclipse.org/skins/eclipsenova/eclipse.png" alt="Eclipse Wiki">
</div>
<!-- Pulled 101409 Mward -->
<div class="portlet" id="p-personal">
<div class="pBody">
<ul>
<li id="pt-login"><a href="http://wiki.eclipse.org/index.php?title=Special:Userlogin&amp;returnto=SMILA/Documentation/Worker/PipelineProcessorWorker">Log in</a></li>
</ul>
</div>
</div>
<div id="header-icons">
<div id="sites">
<ul id="sitesUL">
<li><a href="http://www.eclipse.org"><img src="http://dev.eclipse.org/custom_icons/eclipseIcon.png" width="28" height="28" alt="Eclipse Foundation" title="Eclipse Foundation" /><div>Eclipse Foundation</div></a></li>
<li><a href="http://marketplace.eclipse.org"><img src="http://dev.eclipse.org/custom_icons/marketplace.png" width="28" height="28" alt="Eclipse Marketplace" title="Eclipse Marketplace" /><div>Eclipse Marketplace</div></a></li>
<li><a href="https://bugs.eclipse.org/bugs"><img src="http://dev.eclipse.org/custom_icons/system-search-bw.png" width="28" height="28" alt="Bugzilla" title="Bugzilla" /><div>Bugzilla</div></a></li>
<li><a href="http://live.eclipse.org"><img src="http://dev.eclipse.org/custom_icons/audio-input-microphone-bw.png" width="28" height="28" alt="Live" title="Live" /><div>Eclipse Live</div></a></li>
<li><a href="http://planeteclipse.org"><img src="http://dev.eclipse.org/large_icons/devices/audio-card.png" width="28" height="28" alt="PlanetEclipse" title="Planet" /><div>Planet Eclipse</div></a></li>
<li><a href="http://portal.eclipse.org"><img src="http://dev.eclipse.org/custom_icons/preferences-system-network-proxy-bw.png" width="28" height="28" alt="Portal" title="Portal" /><div>My Foundation Portal</div></a></li>
</ul>
</div>
</div>
</div>
<!-- NEW HEADER STUFF HERE -->
<div id="header-menu">
<div id="header-nav">
<ul> <li><a class="first_one" href="http://wiki.eclipse.org/" target="_self">Home</a></li> <li><a href="http://www.eclipse.org/downloads/" target="_self">Downloads</a></li>
<li><a href="http://www.eclipse.org/users/" target="_self">Users</a></li>
<li><a href="http://www.eclipse.org/membership/" target="_self">Members</a></li>
<li><a href="http://wiki.eclipse.org/index.php/Development_Resources" target="_self">Committers</a></li>
<li><a href="http://www.eclipse.org/resources/" target="_self">Resources</a></li>
<li><a href="http://www.eclipse.org/projects/" target="_self">Projects</a></li>
<li><a href="http://www.eclipse.org/org/" target="_self">About Us</a></li>
</ul>
</div>
<div id="header-utils">
<!-- moved the search window here -->
<form action="http://wiki.eclipse.org/Special:Search" >
<input class="input" name="search" type="text" accesskey="f" value="" />
<input type='submit' onclick="this.submit();" name="go" id="searchGoButton" class="button" title="Go to a page with this exact name if one exists" value="Go" />&nbsp;
<input type='submit' onclick="this.submit();" name="fulltext" class="button" id="mw-searchButton" title="Search Eclipsepedia for this text" value="Search" />
</form>
</div>
</div>
<!-- Eclipse Additions for the Header stop here -->
<!-- Additions and mods for leftside nav Start here -->
<!--Started nav rip here-->
<!-- these are the nav controls main page, changes etc -->
<div id="novaContent" class="faux">
<div id="leftcol">
<ul id="leftnav">
<!-- these are the page controls, edit history etc -->
<li class="separator"><a class="separator">Navigation &#160;&#160;</li>
<li id="n-mainpage"><a href="http://wiki.eclipse.org/Main_Page">Main Page</a></li>
<li id="n-portal"><a href="http://wiki.eclipse.org/Eclipsepedia:Community_Portal">Community portal</a></li>
<li id="n-currentevents"><a href="http://wiki.eclipse.org/Eclipsepedia:Current_events">Current events</a></li>
<li id="n-recentchanges"><a href="http://wiki.eclipse.org/Special:Recentchanges">Recent changes</a></li>
<li id="n-randompage"><a href="http://wiki.eclipse.org/Special:Random">Random page</a></li>
<li id="n-help"><a href="http://wiki.eclipse.org/Help:Contents">Help</a></li>
<li class="separator"><a class="separator">Toolbox &#160;&#160;</a></li>
<li id="t-whatlinkshere"><a href="http://wiki.eclipse.org/Special:Whatlinkshere/SMILA/Documentation/Worker/PipelineProcessorWorker">What links here</a></li>
<li id="t-recentchangeslinked"><a href="http://wiki.eclipse.org/Special:Recentchangeslinked/SMILA/Documentation/Worker/PipelineProcessorWorker">Related changes</a></li>
<!-- This is the toolbox section -->
<li id="t-upload"><a href="http://wiki.eclipse.org/Special:Upload">Upload file</a></li>
<li id="t-specialpages"><a href="http://wiki.eclipse.org/Special:Specialpages">Special pages</a></li>
<li id="t-print"><a href="http://wiki.eclipse.org/index.php?title=SMILA/Documentation/Worker/PipelineProcessorWorker&amp;printable=yes">Printable version</a></li> <li id="t-permalink"><a href="http://wiki.eclipse.org/index.php?title=SMILA/Documentation/Worker/PipelineProcessorWorker&amp;oldid=286224">Permanent link</a></li> </ul>
</div>
<!-- Additions and mods for leftside nav End here -->
<div id="column-content">
<div id="content">
<a name="top" id="top"></a>
<div id="tabs">
<ul class="primary">
<li class="active"><a href="PipelineProcessorWorker.html"><span class="tab">Page</span></a></li>
<li><a href="http://wiki.eclipse.org/index.php?title=Talk:SMILA/Documentation/Worker/PipelineProcessorWorker&amp;action=edit"><span class="tab">Discussion</span></a></li>
<li><a href="http://wiki.eclipse.org/index.php?title=SMILA/Documentation/Worker/PipelineProcessorWorker&amp;action=edit"><span class="tab">View source</span></a></li>
<li><a href="http://wiki.eclipse.org/index.php?title=SMILA/Documentation/Worker/PipelineProcessorWorker&amp;action=history"><span class="tab">History</span></a></li>
<li><a href="http://wiki.eclipse.org/index.php?title=Special:Userlogin&amp;returnto=SMILA/Documentation/Worker/PipelineProcessorWorker"><span class="tab">Edit</span></a></li>
</ul>
</div>
<script type="text/javascript"> if (window.isMSIE55) fixalpha(); </script>
<h1 class="firstHeading">SMILA/Documentation/Worker/PipelineProcessorWorker</h1>
<div id="bodyContent">
<h3 id="siteSub">From Eclipsepedia</h3>
<div id="contentSub"><span class="subpages">&lt; <a href="../../../SMILA.html" title="SMILA">SMILA</a> | <a href="../../Documentation.1.html" title="SMILA/Documentation">Documentation</a></span></div>
<div id="jump-to-nav">Jump to: <a href="PipelineProcessorWorker.html#column-one">navigation</a>, <a href="PipelineProcessorWorker.html#searchInput">search</a></div> <!-- start content -->
<table id="toc" class="toc" summary="Contents"><tr><td><div id="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1"><a href="PipelineProcessorWorker.html#PipelineProcessorWorker_.28bundle_org.eclipse.smila.processing.worker.29"><span class="tocnumber">1</span> <span class="toctext">PipelineProcessorWorker (bundle org.eclipse.smila.processing.worker)</span></a>
<ul>
<li class="toclevel-2"><a href="PipelineProcessorWorker.html#JavaDoc"><span class="tocnumber">1.1</span> <span class="toctext">JavaDoc</span></a></li>
<li class="toclevel-2"><a href="PipelineProcessorWorker.html#Configuration"><span class="tocnumber">1.2</span> <span class="toctext">Configuration</span></a></li>
<li class="toclevel-2"><a href="PipelineProcessorWorker.html#PipelineProcessorWorker_definition_in_workers.json"><span class="tocnumber">1.3</span> <span class="toctext">PipelineProcessorWorker definition in workers.json</span></a></li>
<li class="toclevel-2"><a href="PipelineProcessorWorker.html#Access_task_parameters_in_pipelets"><span class="tocnumber">1.4</span> <span class="toctext">Access task parameters in pipelets</span></a></li>
<li class="toclevel-2"><a href="PipelineProcessorWorker.html#Error_handling"><span class="tocnumber">1.5</span> <span class="toctext">Error handling</span></a></li>
</ul>
</li>
</ul>
</td></tr></table><script type="text/javascript"> if (window.showTocToggle) { var tocShowText = "show"; var tocHideText = "hide"; showTocToggle(); } </script>
<a name="PipelineProcessorWorker_.28bundle_org.eclipse.smila.processing.worker.29"></a><h1> <span class="mw-headline"> PipelineProcessorWorker (bundle org.eclipse.smila.processing.worker) </span></h1>
<p>The PipelineProcessorWorker is a <a href="../../Glossary.html#W" title="SMILA/Glossary">worker</a> designed to process synchronous pipelines inside an <a href="../../Glossary.html#W" title="SMILA/Glossary">asynchronous workflow</a>. The worker in principal is independent of a dedicated pipeline processing implementation. However, in SMILA we use <a href="../BPEL_Workflow_Processor.html" title="SMILA/Documentation/BPEL Workflow Processor">BPEL pipelines</a> for synchronous workflows, so in common speech the worker is also called <i>BPEL worker</i>.
</p><p>The BPEL pipelines that can be used for execution are those defined in SMILA for BPEL processing. So there's no need to copy or configure them separately to use them with the PipelineProcessorWorker.
</p><p>BPEL pipelines resp. pipelets are able to process records in parallel. Therefore, the PipelineProcessorWorker can divide the records of the input bulk in bunches of records to be processed in a single call to reduce the overhead caused by invoking a BPEL pipeline. This can be configured via <i>pipelineRunBulkSize</i> parameter (see below).
</p>
<a name="JavaDoc"></a><h2> <span class="mw-headline"> JavaDoc </span></h2>
<p>This page gives only a rough overview of the service. Please refer to the <a href="http://build.eclipse.org/rt/smila/javadoc/current/index.html?org/eclipse/smila/processing/worker/PipelineProcessorWorker.html" class="external text" title="http://build.eclipse.org/rt/smila/javadoc/current/index.html?org/eclipse/smila/processing/worker/PipelineProcessorWorker.html" rel="nofollow">JavaDoc</a> for detailed information about the Java components.
</p>
<a name="Configuration"></a><h2> <span class="mw-headline"> Configuration </span></h2>
<p>The PipelineProcessorWorker is configured via incoming task parameters. These parameters could have been set e.g. in a <a href="../../Glossary.html#J" title="SMILA/Glossary">job</a> definition.
</p>
<table border="1px solid #CCC" cellpadding="5px" style="border:1px solid #CCC; border-collapse:collapse; font:small/1.5 Tahoma, Bitstream Vera Sans, Verdana, Helvetica, sans-serif;">
<tr>
<th> Parameter
</th><th> Description
</th><th> Default value
</th></tr>
<tr>
<td> <tt>pipelineName</tt>
</td><td> Name of the synchronous (BPEL) pipeline to execute
</td><td> ---
</td></tr>
<tr>
<td> <tt>pipelineRunBulkSize</tt>
</td><td> Number of records to be processed in a single call by the synchronous workflow (a value &lt;= 0 means default value)
</td><td> 1
</td></tr>
<tr>
<td> <tt>keepAttachmentsInMemory</tt>
</td><td> By default, attachments on processed records are kept in memory. If you don't have much memory or very large attachments it may be useful to set this parameter to false and have a BinaryStorage service activated. Then attachments are stored in BinaryStorage while processing and less memory is used. However, processing will probably be slower in this case. It may be better to reduce the pipelineRunBulkSize instead. After processing the attachments will be removed from BinaryStorage again. If no BinaryStorage service is active, all attachments will be kept in memory and this parameter will not have any effect.
</td><td> true
</td></tr>
<tr>
<td> <tt>writeAttachmentsToOutput</tt>
</td><td> By default, attachments on incoming records are also added to the output records (if any are written). If this parameter is set to <tt>false</tt>, only record metadata is written to the output bulk. This can save a lot of IO if attachments are not needed anymore in the workflow after this worker.
</td><td> true
</td></tr>
</table>
<p>Sample job definition that sets the parameters:
</p>
<pre>
{
&quot;name&quot;:&quot;myJob&quot;,
&quot;parameters&quot;:{
&quot;pipelineName&quot;: &quot;myBpelPipeline&quot;,
&quot;pipelineRunBulkSize&quot;: &quot;10&quot;,
...
},
&quot;workflow&quot;:&quot;myWorkflow&quot;
}
</pre>
<a name="PipelineProcessorWorker_definition_in_workers.json"></a><h2> <span class="mw-headline"> PipelineProcessorWorker definition in workers.json </span></h2>
<pre>
GET /smila/jobmanager/workers/pipelineProcessor/
HTTP/1.x 200 OK
{
&quot;name&quot;&nbsp;: &quot;pipelineProcessor&quot;,
&quot;readOnly&quot;&nbsp;: true,
&quot;parameters&quot;&nbsp;: [
{
&quot;name&quot;&nbsp;: &quot;pipelineName&quot;
},
{
&quot;name&quot;&nbsp;: &quot;&lt;pipeletParameters&gt;&quot;,
&quot;optional&quot;&nbsp;: true,
&quot;type&quot;&nbsp;: &quot;any&quot;
},
{
&quot;name&quot;&nbsp;: &quot;pipelineRunBulkSize&quot;,
&quot;optional&quot;&nbsp;: true
} ],
&quot;input&quot;&nbsp;: [ {
&quot;name&quot;&nbsp;: &quot;input&quot;,
&quot;type&quot;&nbsp;: &quot;recordBulks&quot;
} ],
&quot;output&quot;&nbsp;: [ {
&quot;name&quot;&nbsp;: &quot;output&quot;,
&quot;type&quot;&nbsp;: &quot;recordBulks&quot;,
&quot;modes&quot;&nbsp;: [ &quot;optional&quot; ]
} ]
}
</pre>
<p>The output bucket of the worker is optional, hence in an <a href="../../Glossary.html#W" title="SMILA/Glossary">asynchronous workflow</a> the worker does not need to have a successor. If the output bucket is not defined, the result records of the pipeline processing are not persisted to a bulk, but thrown away. This makes sense if the pipeline stores the records somewhere itself, e.g. adds them to an index.
</p>
<a name="Access_task_parameters_in_pipelets"></a><h2> <span class="mw-headline"> Access task parameters in pipelets </span></h2>
<p>The worker adds all task parameters to a map in attribute <tt>_parameters</tt> in each record before giving it to the workflow processor, so each pipelet can access them. The helper class <tt>org.eclipse.smila.processing.parameters.ParameterAccesssor</tt> supports this by checking for requested parameters first in this <tt>_parameters</tt> map, then at the top-level of a record and then in the pipelet configuration. Therefore it's possible to override properties from the pipelet configuration by setting them as task parameters, if the pipelet uses the <tt>ParameterAccessor</tt> to access parameters in records and configuration. This is done for example by the <a href="../SesameOntologyManager.html" title="SMILA/Documentation/SesameOntologyManager">Sesame</a> pipelets.
</p><p>If the internal parameter <tt>_failOnError</tt> was not set before, the worker will set the parameter to "false". This means that the called pipelets should continue processing records and not stop when processing defect records. The pipelets themselves must implement this behavior. How to achieve this is explained in <a href="../../Development_Guidelines/How_to_write_a_Pipelet.html" class="mw-redirect" title="SMILA/Development Guidelines/How to write a Pipelet">How to write a Pipelet</a>.
</p>
<a name="Error_handling"></a><h2> <span class="mw-headline"> Error handling </span></h2>
<p>The following errors may occur when a <a href="../../Glossary.html#T" title="SMILA/Glossary">task</a> for the PipelineProcessorWorker is processed:
</p>
<ul><li> Pipeline parameter missing or invalid parameter
<ul><li> If the given pipeline parameter is not set (or invalid) the task will fail with a non-recoverable error.
</li></ul>
</li><li> ProcessingException while processing a bunch of parallel records.
<ul><li> Recoverable <tt>ProcessingException</tt>: The current task will fail with a recoverable error, so the whole task (with all records) will be repeated.
</li><li> Non-recoverable <tt>ProcessingException</tt>: An error will be logged and the worker will continue with the next bunch of records. The records of the current bunch will be lost. (This is implemented in a way as to <i>not</i> fail the whole task with all its input records in case of a single record defect.)
</li></ul>
</li></ul>
<!--
NewPP limit report
Preprocessor node count: 27/1000000
Post-expand include size: 174/2097152 bytes
Template argument size: 0/2097152 bytes
#ifexist count: 0/100
-->
<!-- Saved in parser cache with key wikidb:pcache:idhash:32889-0!1!0!!en!2!edit=0 and timestamp 20130416060936 -->
<div class="printfooter">
Retrieved from "<a href="PipelineProcessorWorker.html">http://wiki.eclipse.org/SMILA/Documentation/Worker/PipelineProcessorWorker</a>"</div>
<!-- end content -->
<div class="visualClear"></div>
</div>
</div>
</div>
<!-- Yoink of toolbox for phoenix moved up -->
</div>
</div>
<div id="clearFooter"/>
<div id="footer" >
<ul id="footernav">
<li class="first"><a href="http://www.eclipse.org/">Home</a></li>
<li><a href="http://www.eclipse.org/legal/privacy.php">Privacy Policy</a></li>
<li><a href="http://www.eclipse.org/legal/termsofuse.php">Terms of Use</a></li>
<li><a href="http://www.eclipse.org/legal/copyright.php">Copyright Agent</a></li>
<li><a href="http://www.eclipse.org/org/foundation/contact.php">Contact</a></li>
<li><a href="http://wiki.eclipse.org/Eclipsepedia:About" title="Eclipsepedia:About">About Eclipsepedia</a></li>
</ul>
<span id="copyright">Copyright &copy; 2013 The Eclipse Foundation. All Rights Reserved</span>
<p id="footercredit">This page was last modified 16:24, 24 January 2012 by <a href="http://wiki.eclipse.org/index.php?title=User:Nadine.auslaender.attensity.com&amp;action=edit" class="new" title="User:Nadine.auslaender.attensity.com"> </a>. Based on work by <a href="http://wiki.eclipse.org/index.php?title=User:Juergen.schumacher.attensity.com&amp;action=edit" class="new" title="User:Juergen.schumacher.attensity.com">Juergen Schumacher</a>, <a href="http://wiki.eclipse.org/User:Andreas.Weber.empolis.com" title="User:Andreas.Weber.empolis.com">Andreas Weber</a> and <a href="http://wiki.eclipse.org/User:Drazen.cindric.attensity.com" title="User:Drazen.cindric.attensity.com">Drazen Cindric</a> and <a href="http://wiki.eclipse.org/index.php?title=SMILA/Documentation/Worker/PipelineProcessorWorker&amp;action=credits" title="SMILA/Documentation/Worker/PipelineProcessorWorker">others</a>.</p>
<p id="footerviews">This page has been accessed 2,078 times.</p>
</div>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-910670-4");
pageTracker._trackPageview();
</script>
<!-- <div class="visualClear"></div> -->
<script type="text/javascript">if (window.runOnloadHook) runOnloadHook();</script>
</div>
<!-- Served in 0.112 secs. --></body></html>