|
||||||||||
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 fromMethod 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 NodeModel
data
- 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 preparationprotected 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 |