Search in sources :

Example 11 with Node

use of org.knime.core.node.Node in project knime-core by knime.

the class LearnerTest method setUp.

/**
 * @throws java.lang.Exception
 */
@Before
public void setUp() throws Exception {
    NodeFactory nodeFactory = new LogRegLearnerNodeFactory();
    Node node = new Node(nodeFactory);
    m_exec = new ExecutionContext(new DefaultNodeProgressMonitor(), node, SingleNodeContainer.MemoryPolicy.CacheOnDisc, new HashMap<Integer, ContainerTable>());
}
Also used : ExecutionContext(org.knime.core.node.ExecutionContext) NodeFactory(org.knime.core.node.NodeFactory) HashMap(java.util.HashMap) Node(org.knime.core.node.Node) DefaultNodeProgressMonitor(org.knime.core.node.DefaultNodeProgressMonitor) Before(org.junit.Before)

Example 12 with Node

use of org.knime.core.node.Node in project knime-core by knime.

the class JoinerTest method setUp.

/**
 * @throws java.lang.Exception
 */
@Before
public void setUp() throws Exception {
    NodeFactory<NodeModel> dummyFactory = (NodeFactory) new VirtualParallelizedChunkPortObjectInNodeFactory(new PortType[0]);
    m_exec = new ExecutionContext(new DefaultNodeProgressMonitor(), new Node(dummyFactory), SingleNodeContainer.MemoryPolicy.CacheOnDisc, new HashMap<Integer, ContainerTable>());
}
Also used : NodeModel(org.knime.core.node.NodeModel) ExecutionContext(org.knime.core.node.ExecutionContext) VirtualParallelizedChunkPortObjectInNodeFactory(org.knime.core.node.workflow.virtual.parchunk.VirtualParallelizedChunkPortObjectInNodeFactory) NodeFactory(org.knime.core.node.NodeFactory) HashMap(java.util.HashMap) VirtualParallelizedChunkPortObjectInNodeFactory(org.knime.core.node.workflow.virtual.parchunk.VirtualParallelizedChunkPortObjectInNodeFactory) DefaultNodeProgressMonitor(org.knime.core.node.DefaultNodeProgressMonitor) Node(org.knime.core.node.Node) PortType(org.knime.core.node.port.PortType) Before(org.junit.Before)

Example 13 with Node

use of org.knime.core.node.Node in project knime-core by knime.

the class WorkflowManager method doAfterExecution.

/**
 * Cleanup a node after execution. This will also permit the argument node to change its state in
 * {@link NodeContainer#performStateTransitionEXECUTED(NodeContainerExecutionStatus)}. This method also takes care
 * of restarting loops, if there are any to be continued.
 *
 * <p>
 * As in {@link #doBeforeExecution(NodeContainer)} the argument node is usually a {@link SingleNodeContainer} but
 * can also be a remotely executed <code>WorkflowManager</code>.
 *
 * @param nc node which just finished execution
 * @param status indicates if node execution was finished successfully (note that this does not imply State=EXECUTED
 *            e.g. for loop ends)
 */
void doAfterExecution(final NodeContainer nc, final NodeContainerExecutionStatus status) {
    assert isLocalWFM() : "doAfterExecute not allowed for remotely executing workflows";
    assert !nc.getID().equals(this.getID());
    boolean success = status.isSuccess();
    try (WorkflowLock lock = lock()) {
        nc.getNodeTimer().endExec(success);
        String st = success ? " - success" : " - failure";
        LOGGER.debug(nc.getNameWithID() + " doAfterExecute" + st);
        if (!success) {
            disableNodeForExecution(nc.getID());
        }
        // switch state from POSTEXECUTE to new state: EXECUTED resp. CONFIGURED
        // in case of success (w/out resp. with loop) or IDLE in case of an error.
        nc.performStateTransitionEXECUTED(status);
        boolean canConfigureSuccessors = true;
        // remember previous message in case loop restart fails...
        NodeMessage latestNodeMessage = nc.getNodeMessage();
        if (nc instanceof NativeNodeContainer) {
            NativeNodeContainer nnc = (NativeNodeContainer) nc;
            if (success) {
                Node node = nnc.getNode();
                // process start of bundle of parallel chunks
                if (node.getNodeModel() instanceof LoopStartParallelizeNode && !node.isInactive()) {
                    try {
                        parallelizeLoop(nc.getID());
                    } catch (Exception e) {
                        if (!(e instanceof IllegalLoopException)) {
                            // handle unexpected exceptions properly (i.e.
                            // clean up loop) but report them as error!
                            LOGGER.error("Error in parallelizeLoop: " + e, e);
                        } else {
                            // can happen during regular use
                            // (e.g. wrong end node)
                            LOGGER.debug("parallelizeLoop failed: " + e, e);
                        }
                        // make sure the start node is reset and
                        // and appropriate message is set.
                        latestNodeMessage = new NodeMessage(NodeMessage.Type.ERROR, "Parallel Branch Start Failure: " + e.getMessage());
                        LOGGER.error(latestNodeMessage.getMessage(), e);
                        success = false;
                        canConfigureSuccessors = false;
                        disableNodeForExecution(nc.getID());
                        resetAndConfigureNode(nc.getID());
                    }
                }
                // process loop context for "real" nodes:
                if (nnc.isModelCompatibleTo(LoopStartNode.class)) {
                    // if this was BEGIN, it's not anymore (until we do not restart it explicitly!)
                    node.setLoopEndNode(null);
                }
                if (nnc.isModelCompatibleTo(LoopEndNode.class)) {
                    // make sure entire loop body is executed. Trigger execution of rest if not.
                    // (note that we do not worry about waiting for executing dangling branches, for those
                    // we only need to wait when the loop is about to be restarted!)
                    ArrayList<NodeAndInports> loopBodyNodes = new ArrayList<NodeAndInports>();
                    try {
                        NodeID endID = nnc.getID();
                        NodeID startID = m_workflow.getMatchingLoopStart(endID);
                        loopBodyNodes = m_workflow.findAllNodesConnectedToLoopBody(startID, endID);
                    } catch (IllegalLoopException ile) {
                        // loop is incorrectly wired. We cannot restart potentially dangling branches
                        latestNodeMessage = new NodeMessage(NodeMessage.Type.ERROR, "Loop Body wired incorrectly (" + ile.getMessage() + ").");
                        LOGGER.error(latestNodeMessage.getMessage(), ile);
                        success = false;
                    }
                    // check if any of those nodes can still be executed (configured but not yet executing)
                    for (NodeAndInports nai : loopBodyNodes) {
                        NodeID id = nai.getID();
                        NodeContainer currNode = m_workflow.getNode(id);
                        if (!currNode.getInternalState().equals(EXECUTED)) {
                            // after this first simple & light-weight test we test true executability:
                            if (this.canExecuteNodeDirectly(id)) {
                                // Fixes Bug 2292 (dangling branches were not executed in 1-iteration loops)
                                if (currNode instanceof WorkflowManager) {
                                // FIXME: also here we need to execute...?
                                } else {
                                    assert currNode instanceof SingleNodeContainer;
                                    this.markAndQueueNodeAndPredecessors(id, -1);
                                }
                            }
                        }
                    }
                }
                if (success && node.getLoopContext() != null) {
                    // we are supposed to execute this loop again.
                    assert nnc.isModelCompatibleTo(LoopEndNode.class);
                    FlowLoopContext slc = node.getLoopContext();
                    // then check if the loop is properly configured:
                    if (m_workflow.getNode(slc.getHeadNode()) == null) {
                        // obviously not: origin of loop is not in this WFM!
                        assert false : "Inconsistent loops should be caught earlier.";
                        // nothing else to do: NC returns to being configured
                        if (!InternalNodeContainerState.CONFIGURED_MARKEDFOREXEC.equals(nnc.getInternalState())) {
                            nnc.markForExecution(false);
                        }
                        latestNodeMessage = new NodeMessage(NodeMessage.Type.ERROR, "Loop nodes are not in the same workflow!");
                        LOGGER.error(latestNodeMessage.getMessage());
                        success = false;
                    } else {
                        try {
                            slc.setTailNode(nc.getID());
                            if (!nnc.getNode().getPauseLoopExecution()) {
                                restartLoop(slc);
                            } else {
                            // do nothing - leave successors marked. Cancel execution to stop paused loop.
                            }
                        } catch (IllegalLoopException ile) {
                            LOGGER.error(ile.getMessage(), ile);
                            latestNodeMessage = new NodeMessage(NodeMessage.Type.ERROR, ile.getMessage());
                            success = false;
                        }
                        // make sure we do not accidentally configure the remainder of this node
                        // since we are not yet done with the loop
                        canConfigureSuccessors = false;
                    }
                }
                if (!success) {
                    // make sure any marks are removed (only for loop ends!)
                    disableNodeForExecution(nnc.getID());
                    nnc.getNode().clearLoopContext();
                }
            }
        }
        // note this is NOT the else of the if above - success can be modified...
        if (!success && nc instanceof SingleNodeContainer) {
            // clean up node interna and status (but keep org. message!)
            // switch from IDLE to CONFIGURED if possible!
            configureSingleNodeContainer((SingleNodeContainer) nc, /*keepNodeMessage=*/
            true);
            nc.setNodeMessage(latestNodeMessage);
        }
        // now handle non success for all types of nodes:
        if (!success) {
            // clean loops which were waiting for this one to be executed.
            for (FlowLoopContext flc : nc.getWaitingLoops()) {
                disableNodeForExecution(flc.getTailNode());
            }
            nc.clearWaitingLoopList();
        }
        if (nc.getWaitingLoops().size() >= 1) {
            // finish! Let's try to restart them:
            for (FlowLoopContext slc : nc.getWaitingLoops()) {
                try {
                    restartLoop(slc);
                } catch (IllegalLoopException ile) {
                    // set error message in LoopEnd node not this one!
                    NodeMessage nm = new NodeMessage(NodeMessage.Type.ERROR, ile.getMessage());
                    getNodeContainer(slc.getTailNode()).setNodeMessage(nm);
                }
            }
            nc.clearWaitingLoopList();
        }
        if (canConfigureSuccessors) {
            // may be SingleNodeContainer or WFM contained within this
            // one but then it can be treated like a SNC
            getExecutionController().checkHaltingCriteria(nc.getID());
            configureNodeAndPortSuccessors(nc.getID(), null, false, true, false);
        }
        lock.queueCheckForNodeStateChangeNotification(true);
    }
}
Also used : InteractiveNode(org.knime.core.node.interactive.InteractiveNode) Node(org.knime.core.node.Node) InputNode(org.knime.core.node.dialog.InputNode) DialogNode(org.knime.core.node.dialog.DialogNode) QuickFormInputNode(org.knime.core.quickform.in.QuickFormInputNode) OutputNode(org.knime.core.node.dialog.OutputNode) CredentialsNode(org.knime.core.node.workflow.CredentialsStore.CredentialsNode) MetaNodeDialogNode(org.knime.core.node.dialog.MetaNodeDialogNode) NodeAndInports(org.knime.core.node.workflow.Workflow.NodeAndInports) CopyOnWriteArrayList(java.util.concurrent.CopyOnWriteArrayList) ArrayList(java.util.ArrayList) RestoredFlowLoopContext(org.knime.core.node.workflow.FlowLoopContext.RestoredFlowLoopContext) CanceledExecutionException(org.knime.core.node.CanceledExecutionException) CoreException(org.eclipse.core.runtime.CoreException) LockFailedException(org.knime.core.util.LockFailedException) NoSuchAlgorithmException(java.security.NoSuchAlgorithmException) NotConfigurableException(org.knime.core.node.NotConfigurableException) IOException(java.io.IOException) InvalidSettingsException(org.knime.core.node.InvalidSettingsException) URISyntaxException(java.net.URISyntaxException)

Example 14 with Node

use of org.knime.core.node.Node in project knime-core by knime.

the class WorkflowManager method getExternalNodeDataHandles.

/**
 * Implementation of {@link #getInputNodes()} and {@link #getExternalOutputs()}.
 *
 * @param nodeModelClass either {@link InputNode}.class or {@link OutputNode}.class.
 * @param retriever resolves the data object from the input or output.
 * @return List of nodes with their parameter names unified.
 */
// package scope for tests
<T> List<ExternalNodeDataHandle> getExternalNodeDataHandles(final Class<T> nodeModelClass, final Function<T, ExternalNodeData> retriever) {
    List<ExternalNodeDataHandle> result = new ArrayList<>();
    try (WorkflowLock lock = lock()) {
        Map<NodeID, T> externalNodeDataMap = findNodes(nodeModelClass, NodeModelFilter.all(), true, true);
        // get all "parameter names" from all nodes in the workflow in order to see if there are name conflicts;
        // occurrence map like {"string-input" -> 1, "foo" -> 1, "bar" -> 3}
        Map<String, Long> parameterNamesToCountMap = externalNodeDataMap.values().stream().map(retriever).map(extNodeData -> extNodeData.getID()).collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
        parameterNamesToCountMap.values().removeAll(Collections.singleton(Long.valueOf(1L)));
        Set<String> nonUniqueParameterNames = parameterNamesToCountMap.keySet();
        if (!nonUniqueParameterNames.isEmpty()) {
            LOGGER.warnWithFormat("Workflow contains nodes with duplicate parameter name " + "(will be made unique by appending node IDs): %s", ConvenienceMethods.getShortStringFrom(nonUniqueParameterNames, 5));
        }
        // create result list, make keys unique where needed but also retain the fully qualified parameter name
        for (Map.Entry<NodeID, T> entry : externalNodeDataMap.entrySet()) {
            NodeID nodeID = entry.getKey();
            ExternalNodeData nodeData = retriever.apply(entry.getValue());
            String parameterNameShort = nodeData.getID();
            // this ID = 0:3, nodeID = 0:3:5:0:2:2 => nodeIDRelativePath = 5:0:2:2
            String nodeIDRelativePath = StringUtils.removeStart(nodeID.toString(), getID().toString() + ":");
            // nodeIDRelativePath = 5:0:2:2 --> 5:2:2 (':0' are internals of a subnode)
            nodeIDRelativePath = StringUtils.remove(nodeIDRelativePath, ":0");
            String parameterNameFullyQualified = (parameterNameShort.isEmpty() ? "" : parameterNameShort + "-") + nodeIDRelativePath;
            if (nonUniqueParameterNames.contains(parameterNameShort)) {
                parameterNameShort = parameterNameFullyQualified;
            }
            result.add(new ExternalNodeDataHandle(parameterNameShort, parameterNameFullyQualified, (NativeNodeContainer) findNodeContainer(nodeID), nodeData));
        }
        return result;
    }
}
Also used : Arrays(java.util.Arrays) NodeSettingsRO(org.knime.core.node.NodeSettingsRO) EXECUTING(org.knime.core.node.workflow.InternalNodeContainerState.EXECUTING) ReferencedFile(org.knime.core.internal.ReferencedFile) CanceledExecutionException(org.knime.core.node.CanceledExecutionException) IWriteFileStoreHandler(org.knime.core.data.filestore.internal.IWriteFileStoreHandler) InteractiveNode(org.knime.core.node.interactive.InteractiveNode) CoreException(org.eclipse.core.runtime.CoreException) StringUtils(org.apache.commons.lang3.StringUtils) AbstractQuickFormValueInConfiguration(org.knime.core.quickform.AbstractQuickFormValueInConfiguration) NodeView(org.knime.core.node.NodeView) NodeContainerExecutionStatus(org.knime.core.node.workflow.execresult.NodeContainerExecutionStatus) Node(org.knime.core.node.Node) Vector(java.util.Vector) Matcher(java.util.regex.Matcher) WorkflowFileStoreHandlerRepository(org.knime.core.data.filestore.internal.WorkflowFileStoreHandlerRepository) Map(java.util.Map) FileStoreHandlerRepository(org.knime.core.data.filestore.internal.FileStoreHandlerRepository) LockFailedException(org.knime.core.util.LockFailedException) ExecutionMonitor(org.knime.core.node.ExecutionMonitor) EXECUTINGREMOTELY(org.knime.core.node.workflow.InternalNodeContainerState.EXECUTINGREMOTELY) Set(java.util.Set) ResolverUtil(org.knime.core.util.pathresolve.ResolverUtil) Executors(java.util.concurrent.Executors) POSTEXECUTE(org.knime.core.node.workflow.InternalNodeContainerState.POSTEXECUTE) InputNode(org.knime.core.node.dialog.InputNode) ArrayBlockingQueue(java.util.concurrent.ArrayBlockingQueue) Stream(java.util.stream.Stream) CONFIGURED(org.knime.core.node.workflow.InternalNodeContainerState.CONFIGURED) NoSuchAlgorithmException(java.security.NoSuchAlgorithmException) ThreadNodeExecutionJobManager(org.knime.core.node.exec.ThreadNodeExecutionJobManager) CollapseIntoMetaNodeResult(org.knime.core.node.workflow.action.CollapseIntoMetaNodeResult) CopyOnWriteArrayList(java.util.concurrent.CopyOnWriteArrayList) VirtualParallelizedChunkPortObjectInNodeModel(org.knime.core.node.workflow.virtual.parchunk.VirtualParallelizedChunkPortObjectInNodeModel) FlowVariablePortObject(org.knime.core.node.port.flowvariable.FlowVariablePortObject) VMFileLocker(org.knime.core.util.VMFileLocker) RestoredFlowLoopContext(org.knime.core.node.workflow.FlowLoopContext.RestoredFlowLoopContext) SplitType(org.knime.core.node.workflow.NodeContainer.NodeContainerSettings.SplitType) AbstractQuickFormConfiguration(org.knime.core.quickform.AbstractQuickFormConfiguration) EXECUTED_QUEUED(org.knime.core.node.workflow.InternalNodeContainerState.EXECUTED_QUEUED) ArrayList(java.util.ArrayList) LinkedHashMap(java.util.LinkedHashMap) NotConfigurableException(org.knime.core.node.NotConfigurableException) UpdateStatus(org.knime.core.node.workflow.MetaNodeTemplateInformation.UpdateStatus) IConfigurationElement(org.eclipse.core.runtime.IConfigurationElement) WorkflowExecutionResult(org.knime.core.node.workflow.execresult.WorkflowExecutionResult) DialogNode(org.knime.core.node.dialog.DialogNode) LinkedHashSet(java.util.LinkedHashSet) VirtualParallelizedChunkNodeInput(org.knime.core.node.workflow.virtual.parchunk.VirtualParallelizedChunkNodeInput) KNIMEConstants(org.knime.core.node.KNIMEConstants) LoadVersion(org.knime.core.node.workflow.FileWorkflowPersistor.LoadVersion) QuickFormInputNode(org.knime.core.quickform.in.QuickFormInputNode) Executor(java.util.concurrent.Executor) PREEXECUTE(org.knime.core.node.workflow.InternalNodeContainerState.PREEXECUTE) InteractiveView(org.knime.core.node.interactive.InteractiveView) FileOutputStream(java.io.FileOutputStream) PortObjectSpec(org.knime.core.node.port.PortObjectSpec) IOException(java.io.IOException) FileUtils(org.apache.commons.io.FileUtils) File(java.io.File) ViewContent(org.knime.core.node.interactive.ViewContent) UNCONFIGURED_MARKEDFOREXEC(org.knime.core.node.workflow.InternalNodeContainerState.UNCONFIGURED_MARKEDFOREXEC) OutputNode(org.knime.core.node.dialog.OutputNode) Platform(org.eclipse.core.runtime.Platform) LoopStatus(org.knime.core.node.workflow.NativeNodeContainer.LoopStatus) FileUtil(org.knime.core.util.FileUtil) CONFIGURED_QUEUED(org.knime.core.node.workflow.InternalNodeContainerState.CONFIGURED_QUEUED) NodeType(org.knime.core.node.NodeFactory.NodeType) ExpandSubnodeResult(org.knime.core.node.workflow.action.ExpandSubnodeResult) ListIterator(java.util.ListIterator) InvalidSettingsException(org.knime.core.node.InvalidSettingsException) URL(java.net.URL) Date(java.util.Date) URISyntaxException(java.net.URISyntaxException) WorkflowLoadResult(org.knime.core.node.workflow.WorkflowPersistor.WorkflowLoadResult) ReexecutionCallback(org.knime.core.node.interactive.ReexecutionCallback) MetaNodeLinkUpdateResult(org.knime.core.node.workflow.WorkflowPersistor.MetaNodeLinkUpdateResult) FileFilterUtils(org.apache.commons.io.filefilter.FileFilterUtils) NodeDialogPane(org.knime.core.node.NodeDialogPane) VirtualParallelizedChunkPortObjectInNodeFactory(org.knime.core.node.workflow.virtual.parchunk.VirtualParallelizedChunkPortObjectInNodeFactory) IExtensionRegistry(org.eclipse.core.runtime.IExtensionRegistry) IExtensionPoint(org.eclipse.core.runtime.IExtensionPoint) AbstractNodeView(org.knime.core.node.AbstractNodeView) ConvenienceMethods(org.knime.core.node.util.ConvenienceMethods) URI(java.net.URI) ThreadFactory(java.util.concurrent.ThreadFactory) ContainerTable(org.knime.core.data.container.ContainerTable) MetaNodeToSubNodeResult(org.knime.core.node.workflow.action.MetaNodeToSubNodeResult) PortType(org.knime.core.node.port.PortType) NodeAndInports(org.knime.core.node.workflow.Workflow.NodeAndInports) CONFIGURED_MARKEDFOREXEC(org.knime.core.node.workflow.InternalNodeContainerState.CONFIGURED_MARKEDFOREXEC) Collection(java.util.Collection) CredentialsNode(org.knime.core.node.workflow.CredentialsStore.CredentialsNode) NodeModel(org.knime.core.node.NodeModel) Collectors(java.util.stream.Collectors) Objects(java.util.Objects) List(java.util.List) BufferedDataTable(org.knime.core.node.BufferedDataTable) WorkflowPortTemplate(org.knime.core.node.workflow.WorkflowPersistor.WorkflowPortTemplate) LoadResultEntryType(org.knime.core.node.workflow.WorkflowPersistor.LoadResultEntry.LoadResultEntryType) NodeContainerTemplateLinkUpdateResult(org.knime.core.node.workflow.WorkflowPersistor.NodeContainerTemplateLinkUpdateResult) HiLiteHandler(org.knime.core.node.property.hilite.HiLiteHandler) Entry(java.util.Map.Entry) Optional(java.util.Optional) CheckUtils(org.knime.core.node.util.CheckUtils) CheckUtils.checkState(org.knime.core.node.util.CheckUtils.checkState) PortObject(org.knime.core.node.port.PortObject) NodeContainerExecutionResult(org.knime.core.node.workflow.execresult.NodeContainerExecutionResult) IntStream(java.util.stream.IntStream) IOCase(org.apache.commons.io.IOCase) ThreadPoolExecutor(java.util.concurrent.ThreadPoolExecutor) NodeExecutionJobManagerPool(org.knime.core.node.util.NodeExecutionJobManagerPool) SingleNodeContainerSettings(org.knime.core.node.workflow.SingleNodeContainer.SingleNodeContainerSettings) EXECUTED_MARKEDFOREXEC(org.knime.core.node.workflow.InternalNodeContainerState.EXECUTED_MARKEDFOREXEC) HashMap(java.util.HashMap) NodeSettings(org.knime.core.node.NodeSettings) ConnectionType(org.knime.core.node.workflow.ConnectionContainer.ConnectionType) Function(java.util.function.Function) Pair(org.knime.core.util.Pair) HashSet(java.util.HashSet) IDLE(org.knime.core.node.workflow.InternalNodeContainerState.IDLE) ExternalNodeData(org.knime.core.node.dialog.ExternalNodeData) ConnectionContainerTemplate(org.knime.core.node.workflow.WorkflowPersistor.ConnectionContainerTemplate) NodeLogger(org.knime.core.node.NodeLogger) NodeCreationContext(org.knime.core.node.NodeCreationContext) EXECUTED(org.knime.core.node.workflow.InternalNodeContainerState.EXECUTED) LoadResult(org.knime.core.node.workflow.WorkflowPersistor.LoadResult) LinkedList(java.util.LinkedList) Role(org.knime.core.node.workflow.MetaNodeTemplateInformation.Role) InteractiveWebViewsResult(org.knime.core.node.workflow.action.InteractiveWebViewsResult) SubNodeToMetaNodeResult(org.knime.core.node.workflow.action.SubNodeToMetaNodeResult) OutputStream(java.io.OutputStream) NodeFactory(org.knime.core.node.NodeFactory) Iterator(java.util.Iterator) ReentrantLock(java.util.concurrent.locks.ReentrantLock) TemplateType(org.knime.core.node.workflow.MetaNodeTemplateInformation.TemplateType) MetaPortInfo(org.knime.core.node.port.MetaPortInfo) VirtualParallelizedChunkPortObjectOutNodeFactory(org.knime.core.node.workflow.virtual.parchunk.VirtualParallelizedChunkPortObjectOutNodeFactory) MetaNodeDialogNode(org.knime.core.node.dialog.MetaNodeDialogNode) ParallelizedChunkContent(org.knime.core.node.workflow.virtual.parchunk.ParallelizedChunkContent) NodeSettingsWO(org.knime.core.node.NodeSettingsWO) Type(org.knime.core.node.workflow.NodeMessage.Type) TimeUnit(java.util.concurrent.TimeUnit) Condition(java.util.concurrent.locks.Condition) IEarlyStartup(org.knime.core.util.IEarlyStartup) ParallelizedChunkContentMaster(org.knime.core.node.workflow.virtual.parchunk.ParallelizedChunkContentMaster) IFileStoreHandler(org.knime.core.data.filestore.internal.IFileStoreHandler) NodeProperty(org.knime.core.node.workflow.NodePropertyChangedEvent.NodeProperty) Collections(java.util.Collections) ExternalNodeData(org.knime.core.node.dialog.ExternalNodeData) CopyOnWriteArrayList(java.util.concurrent.CopyOnWriteArrayList) ArrayList(java.util.ArrayList) Map(java.util.Map) LinkedHashMap(java.util.LinkedHashMap) HashMap(java.util.HashMap)

Example 15 with Node

use of org.knime.core.node.Node in project knime-core by knime.

the class CopyNativeNodeContainerPersistor method getNode.

/**
 * {@inheritDoc}
 */
@Override
public Node getNode() {
    Node node = new Node(m_nodeFactory);
    // we don't load any settings into the node instance here as this method is called
    // from the constructor of SingleNodeContainer - it doesn't have a context set and therefore
    // cannot resolve URLs etc (knime://knime.workflow/some-path)
    // Settings are loaded in loadNodeContainer
    m_lastCreatedNode = node;
    return node;
}
Also used : Node(org.knime.core.node.Node)

Aggregations

Node (org.knime.core.node.Node)18 NodeFactory (org.knime.core.node.NodeFactory)11 PortType (org.knime.core.node.port.PortType)11 HashMap (java.util.HashMap)10 NodeModel (org.knime.core.node.NodeModel)10 VirtualParallelizedChunkPortObjectInNodeFactory (org.knime.core.node.workflow.virtual.parchunk.VirtualParallelizedChunkPortObjectInNodeFactory)9 IOException (java.io.IOException)7 CanceledExecutionException (org.knime.core.node.CanceledExecutionException)7 InvalidSettingsException (org.knime.core.node.InvalidSettingsException)7 DialogNode (org.knime.core.node.dialog.DialogNode)7 MetaNodeDialogNode (org.knime.core.node.dialog.MetaNodeDialogNode)7 NodeSettingsRO (org.knime.core.node.NodeSettingsRO)6 InputNode (org.knime.core.node.dialog.InputNode)6 OutputNode (org.knime.core.node.dialog.OutputNode)6 InteractiveNode (org.knime.core.node.interactive.InteractiveNode)6 CredentialsNode (org.knime.core.node.workflow.CredentialsStore.CredentialsNode)6 QuickFormInputNode (org.knime.core.quickform.in.QuickFormInputNode)6 ArrayList (java.util.ArrayList)5 File (java.io.File)4 FileOutputStream (java.io.FileOutputStream)4