Creating a BI Platform PojoComponent

PojoComponent is deprecated

NOTE: PojoComponents will be deprecated as of the SUGAR release, they have been succeeded by Actions, which are very similar in form but more robust. You can think of Actions as POJOv2. Look for more documentation here.

The BI Platform executes action sequences, which consists of various types of bi components.  Until BI Server 2.0, these components were Java classes that implemented org.pentaho.platform.api.engine.IComponent.  With BI Platform 2.0, it's now possible to execute a plain old java object as a component within the platform.

 The PojoComponent, located in the org.pentaho.platform.engine.services.solution package, contains the following notes:

This class interfaces with a plain old Java object and makes it available as a component within the Pentaho platform.

Resources and Input Parameters are set on a Pojo via setters. Any public setter is available to both, without bias. The setters are called individually for Resources and Input Parameters and as such may be called for each one should a parameter exist in both forms. Resources are processed first, followed by Input Parameters giving Input Parameters the power to override.

All public getters are exposed through the PojoComponent for consumption as Output Parameters within an Action Sequence.

There exist special methods which may be defined on a Pojo (No interface needed) in order to better facilitate integration to the platform. They are as follows:

Method

Description

configure(Map<String, String>)

requires Set<String> getConfigSettingsPaths()

boolean validate()

called during validation stage of component execution

boolean execute()

called during execution stage of component execution

void done()

called during done stage of component execution

Map<String,Object> getOutputs()

 

void setResources(Map<String, IActionSequenceResource>)

 

void setInputs(Map<String,Object>)

 

void setLogger(Log logger)

 

void setSession(IPentahoSession)

 

void setOutputStream(OutputStream)

 

String getMimeType()