Extension Point Plugins
Extension point plugins, introduced in the Kettle 5 API, allow someone to add plugins to the Kettle ecosystem for execution at specific points in the Kettle code.
The plugin implements the ExtensionPointInterface interface:
public interface ExtensionPointInterface { /** * This method is called by the Kettle code * @param log the logging channel to log debugging information to * @param object The subject object that is passed to the plugin code * @throws KettleException In case the plugin decides that an error has occurred and the parent process should stop. */ public void callExtensionPoint(LogChannelInterface log, Object object) throws KettleException; }
The following extension points are available by default (see the KettleExtensionPoint enum):
ID |
Description |
Java object passed |
Since version |
---|---|---|---|
TransformationPrepareExecution |
A transformation begins to prepare execution |
Trans |
5.0 |
TransformationStartThreads |
A transformation begins to start |
Trans |
5.0 |
TransformationStart |
A transformation has started |
Trans |
5.0 |
TransformationFinish |
A transformation finishes |
Trans |
5.0 |
TransformationMetaLoaded |
Transformation metadata was loaded |
TransMeta |
5.0 |
TransPainterArrow |
Draw additional information on top of a transformation hop (arrow) |
TransPainterExtension |
5.0 |
TransPainterStep |
Draw additional information on top of a transformation step icon |
TransPainterExtension |
5.0 |
TransPainterStart |
Draw transformation or plugin metadata at the start (below the rest) |
TransPainter |
5.1 |
TransPainterEnd |
Draw transformation or plugin metadata at the end (on top of all the rest) |
TransPainter |
5.1 |
TransGraphMouseDown |
A left or right button was clicked in a transformation |
TransGraphExtension |
5.1 |
TransGraphMouseDoubleClick |
A left or right button was double-clicked in a transformation |
TransGraphExtension |
5.1 |
SpoonTransMetaExecutionStart |
Spoon initiates the execution of a transformation |
TransMeta |
5.0 |
SpoonTransExecutionConfiguration |
Right before the configuration of a transformation to be executed takes place in Spoon |
TransExecutionConfiguration |
5.0 |
JobStart |
A job starts |
Job |
5.0 |
JobFinish |
A job finishes |
Job |
5.0 |
JobBeforeJobEntryExecution |
Before a job entry executes |
JobExecutionExtension |
5.0 |
JobAfterJobEntryExecution |
After a job entry executes |
JobExecutionExtension |
5.0 |
JobBeginProcessing |
Start of a job at the end of the log table handling |
JobExecutionExtension |
5.0 |
JobPainterArrow |
Draw additional information on top of a job hop (arrow) |
JobPainterExtension |
5.0 |
TransPainterJobEntry |
Draw additional information on top of a job entry copy icon |
JobPainterExtension |
5.0 |
JobGraphJobEntrySetMenu |
Manipulate the menu on right click on a job entry |
JobGraphJobEntryMenuExtension |
5.0 |
JobPainterStart |
Draw job or plugin metadata at the start (below the rest) |
JobPainter |
5.1 |
JobPainterEnd |
Draw job or plugin metadata at the end (on top of all the rest) |
JobPainter |
5.1 |
JobGraphMouseDown |
A left or right button was clicked in a job |
JobGraphExtension |
5.1 |
JobGraphMouseDoubleClick |
A left or right button was double-clicked in a job |
JobGraphExtension |
5.1 |
JobMetaLoaded |
Job metadata was loaded |
JobMeta |
5.0 |
SpoonJobMetaExecutionStart |
Spoon initiates the execution of a job |
JobMeta |
5.0 |
SpoonJobExecutionConfiguration |
Right before the configuration of a job to be executed takes place in Spoon |
JobExecutionConfiguration |
5.0 |
DatabaseConnected |
After a successful connection to a database |
Database |
5.0 |
DatabaseDisconnected |
After a successful disconnection from a database |
Database |
5.0 |
StepBeforeInitialize |
Before a step is about to be initialized |
StepInitThread |
5.0 |
StepAfterInitialize |
After a step is initialized |
StepInitThread |
5.0 |
StepBeforeStart |
Before a step is about to be started |
StepMetaDataCombi |
5.0 |
StepFinished |
After a step has finished |
StepMetaDataCombi |
5.0 |
CarteStartup |
Right after the Carte webserver has started and is fully functional |
WebServer |
5.1 |
CarteShutdown |
Right before the Carte webserver will shut down |
WebServer |
5.1 |
The class implementing the ExtensionPointInterface should be annotated with @ExtensionPoint. The following information needs to be passed:
- id : the unique ID of the plugin
- extensionPointId: the extension point ID, see the table above for the available extension points
- description: a description so that folks can see what it does in the plugin browser
1 Comment
user-2e1e8
There are three ways to add the plugin to your environment:
In an embedded Kettle use case, you probably do not have the plugin in an external .jar placed in a plugins directory, so you need to use method 2 or 3. If you use method 3, it should look something like this:
Note that the fourth argument to this method needs to match the extensionPointId you want to hook into. If this doesn't match, then the ExtensionPointHandler will not call your Extension Point Plugin's code.