This implementation that keeps track of all currently active Enhancement Engines and registers itself as a chain service with the "stanbol.enhancer.chain.name=default" and the service ranking of Integer.MIN_VALUE.
This will cause this chain to be returned by the ChainManager.getDefault() method if users:
- do not deactivate this chain (see below)
- configure an other chain with the "stanbol.enhancer.chain.name=default" and a higher service ranking
The Chain returned by ChainManager.getDefault() is the one used for requests that do not specify a chain. This are enhancement requests to the "/engines" and "/enhancer" endpoint.
This chain can be enabled/disabled by using the "stanbol.enhancer.chain.default.enabled"
This chain does not support the configuration of the name nor the service ranking. The name is fixed to "default" and the service ranking is Integer.MIN_VALUE
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.
Calculation of the ExecutionPlan
This chain considers all currently active Enhancement Engines. The ExecutionPlan is calculated by using the value for the "org.apache.stanbol.enhancer.engine.order" property provided by the EnhancementEngine:
- Engines with a lower order are executed before engines with a higher value
- Engines with the same order may be executed simultaneously if the EnhancementJobMananger and the EnhancementEngine do support this feature.
The DefaultChain ensures that the default behavior of the Stanbol Enhancer does not change after the introduction of EnhancementChains. This is because the WeightedJobManager as used previously followed exactly the same rules.
However after the introduction of EnhancementChains users can now easily change the default behavior.