List Chain

The ListChain creates the ExecutionPlan based on the exact order of the configured EnhancementEngines. This provides users with a simple possibility to configure the exact oder in which 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 GraphChain.

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 GraphChain.


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 of the configured entries is essential for the configuration.

In addition it is possible to define engines as optional. This allows to specify that the enhancement process should not fail if an engine is not active or fails while processing a content item.

The syntax to define an engine as optional is as follows below (Both variants make the execution of the engine with the name optional.):


The following figure shows the configuration dialog for ListChains as provided by the Apache Felix Web Console.

Configuration dialog for the ListChain

It is also possible to configure a ListChain by directly installing a configuration with the name "{classname}-{configName}.config". Note that the {configName} needs not to be the same as the name of the chain. The {configName} is just used by the OSGI environment to distinguish different configurations for {classname}.

To create the same configuration as in the above screenshot the file would need to look like this:"list"

Calculation of the ExecutionPlan

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.