|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.knime.core.node.NodeModel
org.knime.base.node.parallel.builder.ThreadedTableBuilderNodeModel
public abstract class ThreadedTableBuilderNodeModel
This model is an extension of the NodeModel that allows you to easily
process data in parallel. In contrast to the
ThreadedColAppenderNodeModel,
this model is suitable for creating completely new output tables.
All you have to do is create the output table specs in the
prepareExecute(DataTable[]) method and then implement the
processRow(DataRow, BufferedDataTable[], RowAppender[]) method
to produce one or more (or even no) output row(s) for each input row.
| Constructor Summary | |
|---|---|
ThreadedTableBuilderNodeModel(int nrDataIns,
int nrDataOuts)
Creates a new AbstractParallelNodeModel. |
|
ThreadedTableBuilderNodeModel(int nrDataIns,
int nrDataOuts,
ThreadPool workers)
Creates a new AbstractParallelNodeModel. |
|
| Method Summary | |
|---|---|
protected BufferedDataTable[] |
execute(BufferedDataTable[] data,
ExecutionContext exec)
This function is invoked by the Node#executeNode() method
of the node (through the
#executeModel(BufferedDataTable[],ExecutionMonitor)
method)only after all predecessor nodes have been successfully executed
and all data is therefore available at the input ports. |
protected abstract DataTableSpec[] |
prepareExecute(DataTable[] data)
This method is called before the first row is processed. |
protected abstract void |
processRow(DataRow inRow,
BufferedDataTable[] additionalData,
RowAppender[] outputTables)
This method is called once for each row in the first input table. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public ThreadedTableBuilderNodeModel(int nrDataIns,
int nrDataOuts)
nrDataIns - The number of DataTable elements expected as
inputs.nrDataOuts - The number of DataTable objects expected at the
output.
public ThreadedTableBuilderNodeModel(int nrDataIns,
int nrDataOuts,
ThreadPool workers)
nrDataIns - The number of DataTable elements expected as
inputs.nrDataOuts - The number of DataTable objects expected at the
output.workers - a thread pool where threads for processing the chunks are
taken from| Method Detail |
|---|
protected final BufferedDataTable[] execute(BufferedDataTable[] data,
ExecutionContext exec)
throws Exception
Node#executeNode() method
of the node (through the
#executeModel(BufferedDataTable[],ExecutionMonitor)
method)only after all predecessor nodes have been successfully executed
and all data is therefore available at the input ports. Implement this
function with your task in the derived model.
The input data is available in the given array argument
inData and is ensured to be neither null
nor contain null elements.
In order to create output data, you need to create objects of class
BufferedDataTable. Use the execution context argument to
create BufferedDataTable.
execute in class NodeModeldata - An array holding DataTable elements, one for
each input.exec - The execution monitor for this execute method. It provides us
with means to create new BufferedDataTable.
Additionally, it should be asked frequently if the execution
should be interrupted and throws an exception then. This
exception might me caught, and then after closing all data
streams, been thrown again. Also, if you can tell the progress
of your task, just set it in this monitor.
null DataTable elements with the
size of the number of outputs. The result of this execution.
Exception - If you must fail the execution. Try to provide a
meaningful error message in the exception as it will be
displayed to the user.Please be advised to
check frequently the canceled status by invoking
ExecutionMonitor#checkCanceled which will
throw an CanceledExcecutionException and abort
the execution.
protected abstract DataTableSpec[] prepareExecute(DataTable[] data)
throws Exception
RowAppender passed to
processRow(DataRow, BufferedDataTable[], RowAppender[]) must be
constructed accordingly.
data - the input data tables
Exception - if something goes wrong during preparation
protected abstract void processRow(DataRow inRow,
BufferedDataTable[] additionalData,
RowAppender[] outputTables)
throws Exception
inRow - an input rowadditionalData - the complete tables of additional dataoutputTables - data containers for the output tables where the
computed rows must be added
Exception - if an exception occurs
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||