Search in sources :

Example 1 with ExternalNodeData

use of org.knime.core.node.dialog.ExternalNodeData in project knime-core by knime.

the class WizardPageManager method applyWorkflowParameters.

/**
 * Applies a given map of workflow parameters to the current workflow
 *
 * @param parameterMap a map with parameter name as key and parameter string value as value
 * @throws InvalidSettingsException If a parameter name is not valid or a not uniquely defined in the workflow or if the parameter value does not validate.
 */
public void applyWorkflowParameters(final Map<String, String> parameterMap) throws InvalidSettingsException {
    try (WorkflowLock lock = getWorkflowManager().lock()) {
        if (parameterMap.size() > 0) {
            Map<String, ExternalNodeData> inputData = new HashMap<String, ExternalNodeData>(parameterMap.size());
            for (String key : parameterMap.keySet()) {
                ExternalNodeDataBuilder dataBuilder = ExternalNodeData.builder(key);
                dataBuilder.stringValue(parameterMap.get(key));
                inputData.put(key, dataBuilder.build());
            }
            try {
                // FIXME: This call should happen on the WizardExecutionController, once there is no potential version issues
                getWorkflowManager().setInputNodes(inputData);
            } catch (Exception ex) {
                String errorPrefix = "Could not set workflow parameters: ";
                String errorMessage = ex.getMessage();
                if (!errorMessage.startsWith(errorPrefix)) {
                    errorMessage = errorPrefix + ex.getMessage();
                }
                throw new InvalidSettingsException(errorMessage, ex);
            }
        }
    }
}
Also used : WorkflowLock(org.knime.core.node.workflow.WorkflowLock) ExternalNodeData(org.knime.core.node.dialog.ExternalNodeData) HashMap(java.util.HashMap) InvalidSettingsException(org.knime.core.node.InvalidSettingsException) ExternalNodeDataBuilder(org.knime.core.node.dialog.ExternalNodeData.ExternalNodeDataBuilder) InvalidSettingsException(org.knime.core.node.InvalidSettingsException) IOException(java.io.IOException) JsonProcessingException(com.fasterxml.jackson.core.JsonProcessingException)

Example 2 with ExternalNodeData

use of org.knime.core.node.dialog.ExternalNodeData in project knime-core by knime.

the class TestSRV559_RecursiveInputNodesViaREST method testAmbigiousParameterName.

@Test
public void testAmbigiousParameterName() throws Exception {
    WorkflowManager manager = getManager();
    // should work either way - executed or not
    executeAllAndWait();
    Map<String, ExternalNodeData> inputMap = new HashMap<>();
    final String stringInputKey = m_useSuffix ? "top-level-string-input-1" : "top-level-string-input";
    final String credsInputKey = m_useSuffix ? "top-level-credentials-input-2" : "top-level-credentials-input";
    inputMap.put(stringInputKey, ExternalNodeData.builder(stringInputKey).stringValue("bar").build());
    inputMap.put(credsInputKey, ExternalNodeData.builder(credsInputKey).stringValue("bar-login:bar-password").build());
    manager.setInputNodes(inputMap);
    checkStateOfMany(CONFIGURED, m_credInputTopLevel_2, m_stringInputTopLevel_1);
    executeAllAndWait();
    checkStateOfMany(EXECUTED, m_credInputTopLevel_2, m_stringInputTopLevel_1, m_javaEditValidateTopLevelBar_3, m_credValidateTopLevelBar_6);
    checkStateOfMany(IDLE, m_javaEditValidateTopLevelFoo_4, m_credValidateTopLevelFoo_5);
    Map<String, ExternalNodeData> outputs = manager.getExternalOutputs();
    ExternalNodeData outputData = outputs.get("top-level-json-output-7");
    assertThat(outputData.getJSONValue(), is(toJson("{\"top-level-string-input\":\"bar\"," + "\"metanode-level-string-input\":\"foo\"}")));
}
Also used : ExternalNodeData(org.knime.core.node.dialog.ExternalNodeData) HashMap(java.util.HashMap) Matchers.containsString(org.hamcrest.Matchers.containsString) Test(org.junit.Test)

Example 3 with ExternalNodeData

use of org.knime.core.node.dialog.ExternalNodeData in project knime-core by knime.

the class TestSRV559_RecursiveInputNodesViaREST method testSetInputNodesViaJSON.

@Test
public void testSetInputNodesViaJSON() throws Exception {
    WorkflowManager manager = getManager();
    // should work either way - executed or not
    executeAllAndWait();
    Map<String, ExternalNodeData> inputMap = new HashMap<>();
    final String toplevelStringInputKey;
    final String toplevelCredsInputKey;
    final String metanodelevelStringInputKey;
    final String metanodelevelCredsInputKey;
    if (m_useSuffix) {
        toplevelStringInputKey = "top-level-string-input-1";
        toplevelCredsInputKey = "top-level-credentials-input-2";
        metanodelevelStringInputKey = "metanode-level-string-input-21:10";
        metanodelevelCredsInputKey = "metanode-level-credentials-input-21:11";
    } else {
        toplevelStringInputKey = "top-level-string-input";
        toplevelCredsInputKey = "top-level-credentials-input";
        metanodelevelStringInputKey = "metanode-level-string-input";
        metanodelevelCredsInputKey = "metanode-level-credentials-input";
    }
    inputMap.put(toplevelStringInputKey, ExternalNodeData.builder(toplevelStringInputKey).jsonValue(toJson("{\"string\":\"bar\"}")).build());
    inputMap.put(toplevelCredsInputKey, ExternalNodeData.builder(toplevelCredsInputKey).jsonValue(toJson("{\"username\":\"bar-login\", \"password\":\"bar-password\"}")).build());
    inputMap.put(metanodelevelStringInputKey, ExternalNodeData.builder(toplevelStringInputKey).jsonValue(toJson("{\"string\":\"bar\"}")).build());
    inputMap.put(metanodelevelCredsInputKey, ExternalNodeData.builder(toplevelCredsInputKey).jsonValue(toJson("{\"username\":\"bar-login\", \"password\":\"bar-password\"}")).build());
    manager.setInputNodes(inputMap);
    checkStateOfMany(CONFIGURED, m_credInputTopLevel_2, m_stringInputTopLevel_1);
    executeAllAndWait();
    checkStateOfMany(EXECUTED, m_credInputTopLevel_2, m_stringInputTopLevel_1, m_javaEditValidateTopLevelBar_3, m_credValidateTopLevelBar_6);
    checkStateOfMany(IDLE, m_javaEditValidateTopLevelFoo_4, m_credValidateTopLevelFoo_5);
    Map<String, ExternalNodeData> outputs = manager.getExternalOutputs();
    ExternalNodeData outputDataTopLevel = outputs.get("top-level-json-output-7");
    assertThat(outputDataTopLevel.getJSONValue(), is(toJson("{\"top-level-string-input\":\"bar\"," + "\"metanode-level-string-input\":\"bar\"}")));
    ExternalNodeData outputDataMetanodeLevel = outputs.get("metanode-level-json-output-21:16");
    assertThat(outputDataMetanodeLevel.getJSONValue(), is(toJson("{\"metanode-level-string-input\":\"bar\"}")));
}
Also used : ExternalNodeData(org.knime.core.node.dialog.ExternalNodeData) HashMap(java.util.HashMap) Matchers.containsString(org.hamcrest.Matchers.containsString) Test(org.junit.Test)

Example 4 with ExternalNodeData

use of org.knime.core.node.dialog.ExternalNodeData in project knime-core by knime.

the class TestSRV559_RecursiveInputNodesViaREST method testSetInvalidValueViaString.

@Test(expected = InvalidSettingsException.class)
public void testSetInvalidValueViaString() throws Exception {
    WorkflowManager manager = getManager();
    // should work either way - executed or not
    executeAllAndWait();
    Map<String, ExternalNodeData> inputMap = new HashMap<>();
    final String stringInputKey = m_useSuffix ? "top-level-string-input-1" : "top-level-string-input";
    final String credsInputKey = m_useSuffix ? "top-level-credentials-input-2" : "top-level-credentials-input";
    inputMap.put(stringInputKey, ExternalNodeData.builder(stringInputKey).stringValue("invalid").build());
    inputMap.put(credsInputKey, ExternalNodeData.builder(credsInputKey).stringValue("bar-login:bar-password").build());
    manager.setInputNodes(inputMap);
}
Also used : ExternalNodeData(org.knime.core.node.dialog.ExternalNodeData) HashMap(java.util.HashMap) Matchers.containsString(org.hamcrest.Matchers.containsString) Test(org.junit.Test)

Example 5 with ExternalNodeData

use of org.knime.core.node.dialog.ExternalNodeData in project knime-core by knime.

the class WorkflowManager method setInputNodes.

/**
 * Counterpart to {@link #getInputNodes()} - it sets new values into input nodes on the root level. All nodes as per
 * map argument will be reset as part of this call.
 *
 * @param input a map from node's parameter name to its (JSON or string object value). Invalid entries cause an
 *            exception.
 * @throws InvalidSettingsException If parameter name is not valid or a not uniquely defined in the workflow.
 * @since 2.12
 */
public void setInputNodes(final Map<String, ExternalNodeData> input) throws InvalidSettingsException {
    final CheckedExceptionBiConsumer<InputNode, ExternalNodeData, InvalidSettingsException> validateParamValue = (n, v) -> {
        if (n.isInputDataRequired() && v == null) {
            throw new InvalidSettingsException("An input for parameter '" + n.getInputData().getID() + "' is required.");
        }
        n.validateInputData(v);
    };
    setExternalParameterValues(input, InputNode.class, i -> i.getInputData().getID(), validateParamValue, (n, v) -> n.setInputData(v), true, true);
}
Also used : WorkflowSegment(org.knime.core.node.workflow.capture.WorkflowSegment) 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) 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) Map(java.util.Map) ModifiableNodeCreationConfiguration(org.knime.core.node.context.ModifiableNodeCreationConfiguration) 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) JsonException(javax.json.JsonException) 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) IntFunction(java.util.function.IntFunction) VirtualParallelizedChunkNodeInput(org.knime.core.node.workflow.virtual.parchunk.VirtualParallelizedChunkNodeInput) KNIMEConstants(org.knime.core.node.KNIMEConstants) 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) AuthorInformation(org.knime.core.util.workflowalizer.AuthorInformation) FileOutputStream(java.io.FileOutputStream) PortObjectSpec(org.knime.core.node.port.PortObjectSpec) IOException(java.io.IOException) FileUtils(org.apache.commons.io.FileUtils) DialogNodeValue(org.knime.core.node.dialog.DialogNodeValue) 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) FlowVirtualScopeContext(org.knime.core.node.workflow.virtual.parchunk.FlowVirtualScopeContext) NodeType(org.knime.core.node.NodeFactory.NodeType) ExpandSubnodeResult(org.knime.core.node.workflow.action.ExpandSubnodeResult) NodeCreationConfiguration(org.knime.core.node.context.NodeCreationConfiguration) ListIterator(java.util.ListIterator) InvalidSettingsException(org.knime.core.node.InvalidSettingsException) URL(java.net.URL) 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) JsonValue(javax.json.JsonValue) VirtualParallelizedChunkPortObjectInNodeFactory(org.knime.core.node.workflow.virtual.parchunk.VirtualParallelizedChunkPortObjectInNodeFactory) IExtensionRegistry(org.eclipse.core.runtime.IExtensionRegistry) ReplaceNodeResult(org.knime.core.node.workflow.action.ReplaceNodeResult) 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) 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) AbstractPortObjectRepositoryNodeModel(org.knime.core.node.workflow.virtual.AbstractPortObjectRepositoryNodeModel) Predicate(java.util.function.Predicate) Collection(java.util.Collection) ReExecutable(org.knime.core.node.interactive.ReExecutable) 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) LoadVersion(org.knime.core.util.LoadVersion) 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) ExecutionContext(org.knime.core.node.ExecutionContext) 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) 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) CheckedExceptionBiConsumer(org.knime.core.util.CheckedExceptionBiConsumer) 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) NullProgressMonitor(org.eclipse.core.runtime.NullProgressMonitor) ParallelizedChunkContentMaster(org.knime.core.node.workflow.virtual.parchunk.ParallelizedChunkContentMaster) NodeProperty(org.knime.core.node.workflow.NodePropertyChangedEvent.NodeProperty) MetaNodeDialogType(org.knime.core.node.workflow.MetaNodeDialogPane.MetaNodeDialogType) Collections(java.util.Collections) PortObjectHolder(org.knime.core.node.port.PortObjectHolder) InputNode(org.knime.core.node.dialog.InputNode) QuickFormInputNode(org.knime.core.quickform.in.QuickFormInputNode) ExternalNodeData(org.knime.core.node.dialog.ExternalNodeData) InvalidSettingsException(org.knime.core.node.InvalidSettingsException)

Aggregations

ExternalNodeData (org.knime.core.node.dialog.ExternalNodeData)9 HashMap (java.util.HashMap)7 Matchers.containsString (org.hamcrest.Matchers.containsString)5 Test (org.junit.Test)5 IOException (java.io.IOException)3 Map (java.util.Map)3 File (java.io.File)2 FileOutputStream (java.io.FileOutputStream)2 OutputStream (java.io.OutputStream)2 URI (java.net.URI)2 URL (java.net.URL)2 NoSuchAlgorithmException (java.security.NoSuchAlgorithmException)2 ArrayList (java.util.ArrayList)2 Arrays (java.util.Arrays)2 Collection (java.util.Collection)2 Collections (java.util.Collections)2 HashSet (java.util.HashSet)2 Iterator (java.util.Iterator)2 LinkedHashMap (java.util.LinkedHashMap)2 LinkedHashSet (java.util.LinkedHashSet)2