Idea: PortObject type that not require the execution


I was checking the KNIME labs nodes for data generation. I think it would be an interesting/useful feature if there were an optional port type that do not require the processed output from the predecessor nodes, although could use the data if it is available. (This is not the same as the streaming API imho, quite the opposite of the data aware dialogs, similar to flow variables.) You might ask what would be the usecase... Well, the specs can contain domain information, or even statistics in properties, it could also use the flow variables. So with this information it could generate a surrogate for the actual data without computing it. (Or if it is computed it can decide to simply pass-through it, or regenerate the surrogate on reset) I think this would be quite useful for the visualizing nodes that create output image and allow a preview during the configuration (like specifying the colours without executing the predecessors for different series.)

What do you think?

Thanks, gabor

Hi, can't this be done with optional ports?

I'm using:

new PortType(MyPortObject.class, true)

Hope this helps.



I'm afraid no. When I have a normal optional port connected and execute the node, the predecessors also get executed, even if it takes long time, or the data is not available yet. I guess this might be quite confusing from user's perspective (or simply just hidden behind the expert flag), so maybe it is not so good idea after all. (For example it might be necessary -after execution of predecessors- to turn the node's state to executed with warnings? Or reexecute?)