Author: buildbot
Date: Fri Jan 27 08:23:53 2012
New Revision: 803403
Log:
Staging update by buildbot for stanbol
Modified:
websites/staging/stanbol/trunk/content/stanbol/docs/trunk/enhancer/chains/defaultchain.html
websites/staging/stanbol/trunk/content/stanbol/docs/trunk/enhancer/chains/enhancementchain.html
websites/staging/stanbol/trunk/content/stanbol/docs/trunk/enhancer/chains/executionplan.html
websites/staging/stanbol/trunk/content/stanbol/docs/trunk/enhancer/chains/graphchain.html
websites/staging/stanbol/trunk/content/stanbol/docs/trunk/enhancer/chains/listchain.html
websites/staging/stanbol/trunk/content/stanbol/docs/trunk/enhancer/chains/weightedchain.html
websites/staging/stanbol/trunk/content/stanbol/docs/trunk/enhancer/engines/enhancementengine.html
websites/staging/stanbol/trunk/content/stanbol/docs/trunk/enhancer/enhancementjobmanager.html
Modified:
websites/staging/stanbol/trunk/content/stanbol/docs/trunk/enhancer/chains/defaultchain.html
==============================================================================
---
websites/staging/stanbol/trunk/content/stanbol/docs/trunk/enhancer/chains/defaultchain.html
(original)
+++
websites/staging/stanbol/trunk/content/stanbol/docs/trunk/enhancer/chains/defaultchain.html
Fri Jan 27 08:23:53 2012
@@ -57,7 +57,7 @@
<div id="content">
<h1 class="title">DefaultChain</h1>
- <p>Implementation that keeps track of all currently active
EnhancementEngine and registers itself as a Chain service with the
"stanbol.enhancer.chain.name=default" an service ranking of
Integer.MIN_VALUE.</p>
+ <p>Implementation that keeps track of all currently active
EnhancementEngine](../engines/enhancementengine.html) and registers itself as a
Chain service with the "stanbol.enhancer.chain.name=default" an service ranking
of Integer.MIN_VALUE.</p>
<p>This will cause this chain to be returned by the ChainManager.getDefault()
method if users:</p>
<ul>
<li>do not deactivate this Chain (see below)</li>
@@ -71,7 +71,7 @@
<p>Note that the DefaultChain does not actually implement the Chain interface,
but only registers an instance of the AllActiveEnginesChain on activation.
The implementation is part of the
"org.apache.stanbol.enhancer.chain.allactive" module.</p>
<h3 id="calculation_of_the_executionplan">Calculation of the ExecutionPlan</h3>
-<p>This chain considers all currently active EnhancementEngines. The
ExecutionPlan is calculated by using the value for the
"org.apache.stanbol.enhancer.engine.order" property provided by the
EnhancementEngine:</p>
+<p>This chain considers all currently active
EnhancementEngine](../engines/enhancementengine.html)s. The ExecutionPlan is
calculated by using the value for the
"org.apache.stanbol.enhancer.engine.order" property provided by the
EnhancementEngine:</p>
<ul>
<li>Engines with a lower order are executed before Engines with a higher
value</li>
<li>Engines with the same order may be executed simultaneously if the
EnhancementJobMananger and the EnhancementEngine do support this feature.</li>
Modified:
websites/staging/stanbol/trunk/content/stanbol/docs/trunk/enhancer/chains/enhancementchain.html
==============================================================================
---
websites/staging/stanbol/trunk/content/stanbol/docs/trunk/enhancer/chains/enhancementchain.html
(original)
+++
websites/staging/stanbol/trunk/content/stanbol/docs/trunk/enhancer/chains/enhancementchain.html
Fri Jan 27 08:23:53 2012
@@ -57,7 +57,7 @@
<div id="content">
<h1 class="title">Enhancement Chains</h1>
- <p>An Enhancement Chain defines how Content parsed to the Stanbol Enhancer
is processed. More concrete it defines what engines and in what order are used
to process ContentItems. Chains are not responsible for the actual processing
of ContentItems. They provide the <a
href="executionplan.html">ExecutionPlan</a> to the <a
href="../enhancementjobmanager.html">EnhancementJobManger</a> that does the
actual processing of the ContentItem.</p>
+ <p>An Enhancement Chain defines how Content parsed to the Stanbol Enhancer
is processed. More concrete it defines what <a
href="../engines/enhancementengine.html">EnhancementEngine</a>s and in what
order are used to process ContentItems. Chains are not responsible for the
actual processing of ContentItems. They provide the <a
href="executionplan.html">ExecutionPlan</a> to the <a
href="../enhancementjobmanager.html">EnhancementJobManger</a> that does the
actual processing of the ContentItem.</p>
<p>In the RESTful API enhancement chains can be accessed by there name
under</p>
<div class="codehilite"><pre><span class="n">http:</span><span
class="sr">//</span><span class="p">{</span><span class="n">host</span><span
class="p">}:{</span><span class="n">port</span><span class="p">}</span><span
class="sr">/{stanbol-path}/</span><span class="n">enhancer</span><span
class="sr">/chain/</span><span class="p">{</span><span
class="n">chain</span><span class="o">-</span><span class="n">name</span><span
class="p">}</span>
</pre></div>
@@ -109,7 +109,7 @@
<p>Each Chain has an name assigned. This is typically provided by the chain
configuration and MUST be set as value to the property
"stanbol.enhancer.chain.name" of the service registration. The getter for the
name MUST return the same value. Chain implementation will usually get the name
by calling</p>
<p>this.name = (String)ComponentContext.getProperties(Chain.PROPERTY_NAME);</p>
<p>within the activate method of the Chain. There is also an AbstractChain
implementation provided by the servicesapi module of the Stanbol Enhancer that
already implements this functionality.</p>
-<p>The getEngines method returns the name of all EnhancementEngines referenced
by a Chain. Note that this method returns a Set. This method is intended to
allow fast access to the referenced engines and does not provide any
information about the execution order.</p>
+<p>The getEngines method returns the name of all <a
href="../engines/enhancementengine.html">EnhancementEngine</a>s referenced by a
Chain. Note that this method returns a Set. This method is intended to allow
fast access to the referenced engines and does not provide any information
about the execution order.</p>
<p>Components that need to know the details about a Chain need to process the
<a href="executionplan.html">ExecutionPlan</a> returned by the
getExectuonPlan() method. The <a href="executionplan.html">ExecutionPlan</a> is
represented as an RDF graph following the ExecutionPlan Ontology. It formally
describes how a ContentItem must be processed by the EnhancementJobManager. For
details see the documentation for the <a
href="executionplan.html">ExecutionPlan</a>.</p>
<p>For Chain implementation it is important that the returned Graph holding
the execution plan MUST BE read-only AND final. Meaning that a change in the
configuration of a Chain MUST NOT change the graph returned by calls to the
getExecutionPlan method.</p>
<p>Because the configuration of a Chain might change at any time
EnhancementJobManager implementation MUST retrieve the execution plan once and
than use this instance for the whole enhancement process. Because of the above
requirement that the execution plan is stored in an read-only and final Graph
this ensures that the plan can not change even for long lasting enhancement
processes. Therefore any change to the configuration of a chain will not
influence ongoing enhancement processes.</p>
@@ -132,7 +132,7 @@
<li>the Chain with the lowest "service.id"</li>
</ol>
<p>If no chain is active a ChainException with an according message MUST BE
thrown.</p>
-<p>All Stanbol launchers are configured with the <a
href="defaultchain.html">Default Chain</a> enabled. This registers itself with
the name "default" and the lowest possible service ranking - Integer.MIN_VALUE.
This default provides a Chain that considered all currently active
EnhancementEngines and sorts them based on there ordering information (see the
<a href="weightedchain.html#calculation_of_the_executionplan">Calculation of
the Execution Plan based on the EnhancementEngine Ordering</a> for details).</p>
+<p>All Stanbol launchers are configured with the <a
href="defaultchain.html">Default Chain</a> enabled. This registers itself with
the name "default" and the lowest possible service ranking - Integer.MIN_VALUE.
This default provides a Chain that considered all currently active <a
href="../engines/enhancementengine.html">EnhancementEngine</a>s and sorts them
based on there ordering information (see the <a
href="weightedchain.html#calculation_of_the_executionplan">Calculation of the
Execution Plan based on the EnhancementEngine Ordering</a> for details).</p>
<h3 id="chainmanager_interface">ChainManager interface</h3>
<p>The <a href="chainmanager.html">ChainManager</a> is the management
interface for EnhancementChains that can be used by components to lookup chains
based on their name. It also provides a getter for the default chain. There is
also OSGI ServiceTracker like implementation that can be used to track only
chains with specific names and to get even notified on any change of such
chains.</p>
<h2 id="chain_implementations">Chain implementations</h2>
Modified:
websites/staging/stanbol/trunk/content/stanbol/docs/trunk/enhancer/chains/executionplan.html
==============================================================================
---
websites/staging/stanbol/trunk/content/stanbol/docs/trunk/enhancer/chains/executionplan.html
(original)
+++
websites/staging/stanbol/trunk/content/stanbol/docs/trunk/enhancer/chains/executionplan.html
Fri Jan 27 08:23:53 2012
@@ -71,20 +71,20 @@
<li><strong>ep:inExecutionPlan</strong> (domain: ep:ExecutionNode; range:
ep:ExecutionPlan ;inverseOf: ep:hasExecutionNode): functional property that
links the execution node with an execution plan</li>
<li><strong>ep:engine</strong> (domain: ep:ExecutionNode; range: xsd:string):
The property used to link to the Enhancement Engine by the name of the
engine.</li>
<li><strong>ep:dependsOn</strong> (domain: ep:ExecutionNode; range:
ep:ExecutionNode) Defines that the execution of this node depends on the
completion of the referenced one.</li>
-<li><strong>ep:optional</strong> (domain: ep:ExecutionNode; range:
xsd:boolean) Can be used to specify that the execution of this
EnhancementEngine is optional. If this property is set to TRUE an engine will
be marked as executed even if it execution was not possible (e.g. because an
engine with this name was not active) or the execution failed (e.g. because of
the Exception). </li>
+<li><strong>ep:optional</strong> (domain: ep:ExecutionNode; range:
xsd:boolean) Can be used to specify that the execution of this <a
href="../engines/enhancementengine.html">EnhancementEngine</a> is optional. If
this property is set to TRUE an engine will be marked as executed even if it
execution was not possible (e.g. because an engine with this name was not
active) or the execution failed (e.g. because of the Exception). </li>
</ul>
</li>
</ul>
<p>Note the the data for the ep:ExecutionPlan and the
ep:hasExecutionNode/ep:inExecutionPlan typically need not to be parsed as
configuration of a Chain. This information are typically automatically added
based on the assumption that all ep:ExecutionNode parsed in the configuration
for a chain are member of the execution plan for such chain. Therefore this
information is typically added by the Chain itself when the configuration is
parsed and validated.</p>
<h4 id="example">Example:</h4>
-<p>This example shows an ExecutionPlan with three nodes for the "langId",
"ner", "dbpediaLinking" "geonamesLinking" and "zemanta" engine. Note that this
names refer to actual EnhancementEngine Services registered with the current
OSGI Environment.</p>
+<p>This example shows an ExecutionPlan with three nodes for the "langId",
"ner", "dbpediaLinking" "geonamesLinking" and "zemanta" engine. Note that this
names refer to actual <a
href="../engines/enhancementengine.html">EnhancementEngine</a> Services
registered with the current OSGI Environment.</p>
<p>This example assumes that</p>
<ul>
-<li>"langId" is the singleton instance of LangIdEnhancementEngine</li>
-<li>"ner" is the default instance of the
NamedEntityExtractionEnhancementEngine engine</li>
-<li>"dbpediaLinking" is an instance of the NamedEntityTaggingEngine configured
to use the dbpedia.org ReferencedSite of the Entityhub</li>
-<li>"geonamesLinking" is an instance of the NamedEntityTaggingEngine
configured to use the geonames.org ReferencedSite</li>
-<li>"zemanta" is the singleton instance of the ZemantaEnhancementEngine</li>
+<li>"langId" is the singleton instance of <a
href="../engines/langidengine.html">LangIdEnhancementEngine</a></li>
+<li>"ner" is the default instance of the <a
href="../engines/namedentityextractionengine.html">NamedEntityExtractionEnhancementEngine</a></li>
+<li>"dbpediaLinking" is an instance of the <a
href="../engines/namedentitytaggingengine.html">NamedEntityTaggingEngine</a>
configured to use the dbpedia.org ReferencedSite of the Entityhub</li>
+<li>"geonamesLinking" is an instance of the <a
href="../engines/namedentitytaggingengine.html">NamedEntityTaggingEngine</a>
configured to use the geonames.org ReferencedSite</li>
+<li>"zemanta" is the singleton instance of the <a
href="../engines/zemantaengine.html">ZemantaEnhancementEngine</a></li>
</ul>
<p>The RDF graph of such a chain would look:</p>
<div class="codehilite"><pre><span class="err">urn:execPlan</span>
Modified:
websites/staging/stanbol/trunk/content/stanbol/docs/trunk/enhancer/chains/graphchain.html
==============================================================================
---
websites/staging/stanbol/trunk/content/stanbol/docs/trunk/enhancer/chains/graphchain.html
(original)
+++
websites/staging/stanbol/trunk/content/stanbol/docs/trunk/enhancer/chains/graphchain.html
Fri Jan 27 08:23:53 2012
@@ -57,7 +57,7 @@
<div id="content">
<h1 class="title">GraphChain</h1>
- <p>The GraphChain allows to directly configure the ExecutionPlan returned
by the Chain.getExecutionPlan() method. This means on the one hand that it
allows to configure any kind of execution process on the other hand its usage
also requires a lot of knowledge about the EnhancementEngines and the
ExecutionPlan model form the user.</p>
+ <p>The GraphChain allows to directly configure the ExecutionPlan returned
by the Chain.getExecutionPlan() method. This means on the one hand that it
allows to configure any kind of execution process on the other hand its usage
also requires a lot of knowledge about the <a
href="../engines/enhancementengine.html">EnhancementEngine</a>s and the
ExecutionPlan model form the user.</p>
<p>Typically it is a good practice to start with other - more simple to use -
Chain implementation such as the <a href="weightedchain.html">Weighted
Chain</a> and only afterwards convert this configuration to a GraphChain to
configure optimizations to the enhancement process such as to allow more
Engines to be executed in parallel.</p>
<h3 id="configuration">Configuration</h3>
<p>The GraphChain supports two variants to configure the ExecutionPlan</p>
Modified:
websites/staging/stanbol/trunk/content/stanbol/docs/trunk/enhancer/chains/listchain.html
==============================================================================
---
websites/staging/stanbol/trunk/content/stanbol/docs/trunk/enhancer/chains/listchain.html
(original)
+++
websites/staging/stanbol/trunk/content/stanbol/docs/trunk/enhancer/chains/listchain.html
Fri Jan 27 08:23:53 2012
@@ -57,7 +57,7 @@
<div id="content">
<h1 class="title">ListChain</h1>
- <p>The List Chain creates the ExecutionPlan based on the exact order of
the configured EnhancementEngines. This provides users with a simple
possibility configure the exact oder in that the referenced EnhancementEngines
are called during the enhancement process of a content item. However the
ListChain can not support parallel execution of engines a considerable
disadvantage in contrast to the <a href="graphchain.html">GraphChain</a>.</p>
+ <p>The List Chain creates the ExecutionPlan based on the exact order of
the configured <a
href="../engines/enhancementengine.html">EnhancementEngine</a>s. This provides
users with a simple possibility configure the exact oder in that the referenced
EnhancementEngines are called during the enhancement process of a content item.
However the ListChain can not support parallel execution of engines a
considerable disadvantage in contrast to the <a
href="graphchain.html">GraphChain</a>.</p>
<p>A typical usage scenario would be that users start of with configuring a
ListChain and later optimize the execution by migrating functional
configuration to <a href="graphchain.html">GraphChain</a>s.</p>
<h3 id="configuration">Configuration</h3>
<p>The property "stanbol.enhancer.chain.list.enginelist" is used to provide
the list of engine names. This configuration MUST BE parsed as an Array as
string because the ordering if the configured entries is central for the
configuration.</p>
@@ -79,7 +79,7 @@
<h3 id="calculation_of_the_executionplan">Calculation of the ExecutionPlan</h3>
-<p>The ExecutionPlan is created based on the exact order of the
EnhancementEngines provided by the "stanbol.enhancer.chain.list.enginelist"
property. The configuration MUST contain at least a single engine. In addition
no engine MUST be mentioned twice.</p>
+<p>The ExecutionPlan is created based on the exact order of the
EnhancementEngine](../engines/enhancementengine.html)s provided by the
"stanbol.enhancer.chain.list.enginelist" property. The configuration MUST
contain at least a single engine. In addition no engine MUST be mentioned
twice.</p>
</div>
<div id="footer">
Modified:
websites/staging/stanbol/trunk/content/stanbol/docs/trunk/enhancer/chains/weightedchain.html
==============================================================================
---
websites/staging/stanbol/trunk/content/stanbol/docs/trunk/enhancer/chains/weightedchain.html
(original)
+++
websites/staging/stanbol/trunk/content/stanbol/docs/trunk/enhancer/chains/weightedchain.html
Fri Jan 27 08:23:53 2012
@@ -57,7 +57,7 @@
<div id="content">
<h1 class="title">WeightedChain</h1>
- <p>The Wighted Chain takes a list of Enhancement Engine names as input and
uses the "org.apache.stanbol.enhancer.engine.order" metadata of the configured
Engines to calculate the ExecutionPlan.</p>
+ <p>The Wighted Chain takes a list of
EnhancementEngine](../engines/enhancementengine.html) names as input and uses
the "org.apache.stanbol.enhancer.engine.order" metadata of the configured
Engines to calculate the ExecutionPlan.</p>
<p>This Chain is designed for easy configuration - just a list of the engine
names - but has limited possibilities to control the execution order.</p>
<h3 id="configuration">Configuration</h3>
<p>The property "stanbol.enhancer.chain.weighted.chain" is used to provide the
list of engine names. Both Arrays and Collections are supported as values.</p>
@@ -71,7 +71,7 @@
<p>both variants result that the execution of the engine with the name <name>
is optional.</p>
<p><img alt="Configuration Dialog for the WeightedCahin"
src="enhancer-weightedchain-config.png" title="Sceenshot of the Configuration
Dialog for a WeightedChain with two required and one optional Engine" /></p>
<h3 id="calculation_of_the_executionplan">Calculation of the ExecutionPlan</h3>
-<p>It is important to note that the ordering of the list has no influence on
the ExecutionPlan because the order of execution of the configured
EnhancementEngines is calculated only by using the value for the
"org.apache.stanbol.enhancer.engine.order" property provided by the
EnhancementEngine:</p>
+<p>It is important to note that the ordering of the list has no influence on
the ExecutionPlan because the order of execution of the configured
EnhancementEngine](../engines/enhancementengine.html)s is calculated only by
using the value for the "org.apache.stanbol.enhancer.engine.order" property
provided by the EnhancementEngine:</p>
<ul>
<li>Engines with a lower order are executed before Engines with a higher
value</li>
<li>Engines with the same order may be executed simultaneously if the
EnhancementJobMananger and the EnhancementEngine do support this feature.</li>
Modified:
websites/staging/stanbol/trunk/content/stanbol/docs/trunk/enhancer/engines/enhancementengine.html
==============================================================================
---
websites/staging/stanbol/trunk/content/stanbol/docs/trunk/enhancer/engines/enhancementengine.html
(original)
+++
websites/staging/stanbol/trunk/content/stanbol/docs/trunk/enhancer/engines/enhancementengine.html
Fri Jan 27 08:23:53 2012
@@ -57,7 +57,7 @@
<div id="content">
<h1 class="title">EnhancementEngine</h1>
- <p>EnhancementEngines are the components that are responsible to enhance
ContentItmes. They are called by the <a
href="enhancementjobmanager.html">EnhancementJobManager</a>. EnhancementEngines
do have full access to the parsed ContentItems. They are expected to modify the
state of the content item.</p>
+ <p>EnhancementEngines are the components that are responsible to enhance
ContentItmes. They are called by the <a
href="../enhancementjobmanager.html">EnhancementJobManager</a>.
EnhancementEngines do have full access to the parsed ContentItems. They are
expected to modify the state of the content item.</p>
<p>The RESTful interface of an EnhancementEngines can be accessed by</p>
<div class="codehilite"><pre><span class="n">http:</span><span
class="sr">//</span><span class="p">{</span><span class="n">host</span><span
class="p">}:{</span><span class="n">port</span><span class="p">}</span><span
class="sr">/{stanbol-root}/</span><span class="n">enhancer</span><span
class="sr">/engine/</span><span class="p">{</span><span
class="n">engine</span><span class="o">-</span><span class="n">name</span><span
class="p">}</span>
</pre></div>
@@ -128,7 +128,7 @@
</ul>
<p>The Engine Ordering information as described here are used by the <a
href="../chains/defaultchain.html">DefaultChain</a> and the <a
href="../chains/weightedchain.html">WeightedChain</a> to calculate the <a
href="../chains/executionplan.html">ExecutionPlan</a>.</p>
<p>Basically this features allows the implementor of an EnhancementEngine to
define the correct position of his engine within an typical enhancement chain
and therefore ensure that users that add this engine to a Stanbol Enhancer
installation to immediately use this engine with the <a
href="../chains/defaultchain.html">DefaultChain</a>.</p>
-<p>However the Engine Ordering is not the only possibility for users to
control the execution order. Enhancement chain implementations such as the <a
href="../chains/listchain.html">ListChain</a> and the <a
href="../chains/grpahchain.html">GraphChain</a> do also allow to directly
define the oder of execution. For this chains the ordering information provided
by EnhancementEngines are ignored.</p>
+<p>However the Engine Ordering is not the only possibility for users to
control the execution order. Enhancement chain implementations such as the <a
href="../chains/listchain.html">ListChain</a> and the <a
href="../chains/graphchain.html">GraphChain</a> do also allow to directly
define the oder of execution. For this chains the ordering information provided
by EnhancementEngines are ignored.</p>
<h2 id="enhancementengine_management">EnhancementEngine management</h2>
<p>This section describes how EnhancementEngines are managed by the Stanbol
Enhancer and how they can be selected/accessed by the <a
href="../enhancementjobmanager.html">EnhancementJobManager</a> execution a <a
href="../chains/enhancementchain.html">Chain</a>.</p>
<p>EnhancementEngines are registered as OSGI services and managed by using the
following service properties:</p>
Modified:
websites/staging/stanbol/trunk/content/stanbol/docs/trunk/enhancer/enhancementjobmanager.html
==============================================================================
---
websites/staging/stanbol/trunk/content/stanbol/docs/trunk/enhancer/enhancementjobmanager.html
(original)
+++
websites/staging/stanbol/trunk/content/stanbol/docs/trunk/enhancer/enhancementjobmanager.html
Fri Jan 27 08:23:53 2012
@@ -67,7 +67,7 @@
</pre></div>
-<p>Note that the parsed ContentItem will be changed during the enhancement
process. EnhancementEngines will add extracted knowledge to the metadata of the
content item. Also additional content parts may be added to the content
item.</p>
+<p>Note that the parsed ContentItem will be changed during the enhancement
process. <a href="engines/enhancementengine.html">EnhancementEngine</a>s will
add extracted knowledge to the metadata of the content item. Also additional
content parts may be added to the content item.</p>
<h2 id="enhancement_process">Enhancement Process</h2>
<p>While the <a href="chains/executionplan.html">ExecutionPlan</a> defines
what EnhancementEgnies are used and how they depend on each the
EnhancementJobManager is responsible for the actual execution of the
enhancement process based on this plan. This section provides detailed
information about requirements and expectations that MUST BE considered.</p>
<p>The EnhancementJobManager is also responsible to create and update the <a
href="executionmetadata.html">ExecutionMetadata</a> in the metadata of the
processed ContentItem.</p>
@@ -81,7 +81,7 @@
</ol>
<p>See the documentation of the <a
href="executionmetadata.html">ExecutionMetadata</a> for more information.</p>
<h3 id="engine_execution">Engine Execution</h3>
-<p>The ExecutionPlan provides the necessary information what engines can be
executed at any given state. The following code shows how to determine
executable engines.
+<p>The ExecutionPlan provides the necessary information what <a
href="engines/enhancementengine.html">EnhancementEngine</a>s can be executed at
any given state. The following code shows how to determine executable engines.
This code snippet assumes to be called after the execution of an
EnhancementEngine has completed. Note that in a multi threaded environment
access to the list of executed and running engines need to be synchronized.</p>
<div class="codehilite"><pre><span class="n">Collection</span><span
class="sr"><NonLiteral></span> <span class="n">executed</span><span
class="p">;</span> <span class="sr">//</span><span class="n">already</span>
<span class="n">executed</span> <span class="n">Engines</span>
<span class="n">Collection</span><span class="sr"><NonLiteral></span>
<span class="n">running</span><span class="p">;</span> <span
class="sr">//c</span><span class="n">urrently</span> <span
class="n">running</span> <span class="n">Engines</span>
@@ -101,7 +101,7 @@ This code snippet assumes to be called a
</pre></div>
-<p>Before executing an EnhancementEngine the EnhancementJobManager needs to
check if and how the engine can enhance a content item. This is indicated by
the integer returned by the "canEnhance(ContentItem ci)" method:</p>
+<p>Before executing an <a
href="engines/enhancementengine.html">EnhancementEngine</a> the
EnhancementJobManager needs to check if and how the engine can enhance a
content item. This is indicated by the integer returned by the
"canEnhance(ContentItem ci)" method:</p>
<ul>
<li><strong>CANNOT_ENHANCE</strong>: Indicates that this engines can not
process the parsed content item. In this case the EnhancementJobManager needs
to skip this engine and mark the EngineExectuion as skipt with a status message
that the EnhancementEngine was unable to process the content item. If this
engine is marked as optional the enhancement process can continue if not, than
the execution MUST be marked as failed and an according Exception needs to be
thrown.</li>
<li><strong>ENHANCE_SYNCHRONOUS</strong>: Indicates that the engines needs
exclusive access to the parsed content item. The EnhancementJobManager needs to
ensure that in some way. Typically by calling the
"computeEnhancement(ContentItem ci)" method within an write lock.</li>
@@ -110,7 +110,7 @@ This code snippet assumes to be called a
<p>If the execution of an EnhancementEngine completes the JobManager needs to
set the state of the execution to completed and update the other metadata
accordingly.</p>
<p>If a call to "computeEnhancement(ContentItem ci)" results in an Exception
the EnhancementJobManager must mark the execution of the engine as failed with
a decryption of the occurred exception. If the the execution of the affected
engine was optional the enhancement process is continued. Otherwise the
enhancement process needs to be stopped and the Error needs to rethrown by the
"enhanceContent(..)" method.</p>
<h3 id="multi_threaded_enhancement_processes">Multi Threaded enhancement
processes</h3>
-<p>In case the EnhancementJobManager supports to simultaneously call
EnhancementEngines for the same content item in multiple threads it is
important to correctly use the ReadWriteLock as provided by the
ContentItem.getLock() method.</p>
+<p>In case the EnhancementJobManager supports to simultaneously call <a
href="engines/enhancementengine.html">EnhancementEngine</a>s for the same
content item in multiple threads it is important to correctly use the
ReadWriteLock as provided by the ContentItem.getLock() method.</p>
<p>There are manny good examples on how to correctly use
"java.util.concurrent.ReadWriteLock" available on the web.</p>
<h3 id="finalizing_the_enhancementprocess">Finalizing the
EnhancementProcess</h3>
<p>After the execution is completed (successfully or failed) the
EnhancementJobManager need to ensure that the 'em:status' and the
'em:completed' of the 'em:ChainExecution' instance are set. If the execution
failed also the 'em:statusMessage' should be available and contain a message
that describes the problem.</p>