Hitachi Vantara Pentaho Community Wiki
Child pages
  • PDI Extension Point Plugins
Skip to end of metadata
Go to start of metadata

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
  • No labels

1 Comment

  1. There are three ways to add the plugin to your environment:

    1. put a .jar file in the right "plugins" directory on the PDI Client and Server
    2. set a JVM system property called KETTLE_PLUGIN_CLASSES to a comma separated list of fully qualified class names
    3. in your application, register the plugin using ExtenstionPointPluginType.getInstance().registerCustom(...)

    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:

    ExtensionPointPluginType.getInstance().registerCustom(MyPlugin.class, "category", "my_plugin", "JobFinish", "description", null);
    

    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.