You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hop.apache.org by ha...@apache.org on 2020/11/19 08:46:45 UTC
[incubator-hop] branch master updated: HOP-2202 : Passing
parameters using the "Copy results to parametrs" option does not work
(#396)
This is an automated email from the ASF dual-hosted git repository.
hansva pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-hop.git
The following commit(s) were added to refs/heads/master by this push:
new 45ebecc HOP-2202 : Passing parameters using the "Copy results to parametrs" option does not work (#396)
45ebecc is described below
commit 45ebecc32efef026a6c7a356bcac6916a9a4b48e
Author: Matt Casters <ma...@gmail.com>
AuthorDate: Thu Nov 19 09:46:37 2020 +0100
HOP-2202 : Passing parameters using the "Copy results to parametrs" option does not work (#396)
* HOP-2202 : Passing parameters using the "Copy results to parametrs" option does not work
---
.../java/org/apache/hop/workflow/Workflow.java | 36 +++++++++++++++++-----
.../workflow/actions/workflow/ActionWorkflow.java | 1 -
.../actions/workflow/ActionWorkflowRunner.java | 8 ++++-
.../actions/writetolog/ActionWriteToLog.java | 2 +-
4 files changed, 37 insertions(+), 10 deletions(-)
diff --git a/engine/src/main/java/org/apache/hop/workflow/Workflow.java b/engine/src/main/java/org/apache/hop/workflow/Workflow.java
index f894a30..8213039 100644
--- a/engine/src/main/java/org/apache/hop/workflow/Workflow.java
+++ b/engine/src/main/java/org/apache/hop/workflow/Workflow.java
@@ -187,6 +187,8 @@ public abstract class Workflow extends Variables implements IVariables, INamedPa
protected IHopMetadataProvider metadataProvider;
+ protected boolean initializingVariablesOnStart;
+
/**
* <p>
* This enum stores bit masks which are used to manipulate with statuses over field {@link Workflow#status}
@@ -226,6 +228,8 @@ public abstract class Workflow extends Variables implements IVariables, INamedPa
result = null;
startActionMeta = null;
startActionResult = null;
+
+ initializingVariablesOnStart = true;
}
public Workflow( WorkflowMeta workflowMeta ) {
@@ -287,13 +291,15 @@ public abstract class Workflow extends Variables implements IVariables, INamedPa
setFinished( false );
setInitialized( true );
- // Create a new variable name space as we want workflows to have their own set of variables.
- // initialize from parentWorkflow or null
- //
- initializeVariablesFrom( parentWorkflow );
- setInternalHopVariables();
- copyParametersFrom( workflowMeta );
- activateParameters();
+ if (initializingVariablesOnStart) {
+ // Create a new variable name space as we want workflows to have their own set of variables.
+ // initialize from parentWorkflow or null
+ //
+ initializeVariablesFrom(parentWorkflow);
+ setInternalHopVariables();
+ copyParametersFrom(workflowMeta);
+ activateParameters();
+ }
// Run the workflow
//
@@ -1533,4 +1539,20 @@ public abstract class Workflow extends Variables implements IVariables, INamedPa
@Override public void setMetadataProvider( IHopMetadataProvider metadataProvider ) {
this.metadataProvider = metadataProvider;
}
+
+ /**
+ * Gets initializingVariablesOnStart
+ *
+ * @return value of initializingVariablesOnStart
+ */
+ public boolean isInitializingVariablesOnStart() {
+ return initializingVariablesOnStart;
+ }
+
+ /**
+ * @param initializingVariablesOnStart The initializingVariablesOnStart to set
+ */
+ public void setInitializingVariablesOnStart( boolean initializingVariablesOnStart ) {
+ this.initializingVariablesOnStart = initializingVariablesOnStart;
+ }
}
diff --git a/engine/src/main/java/org/apache/hop/workflow/actions/workflow/ActionWorkflow.java b/engine/src/main/java/org/apache/hop/workflow/actions/workflow/ActionWorkflow.java
index 9db039c..34301a4 100644
--- a/engine/src/main/java/org/apache/hop/workflow/actions/workflow/ActionWorkflow.java
+++ b/engine/src/main/java/org/apache/hop/workflow/actions/workflow/ActionWorkflow.java
@@ -570,7 +570,6 @@ public class ActionWorkflow extends ActionBase implements Cloneable, IAction {
// Link both ways!
workflow.getWorkflowTracker().setParentWorkflowTracker( parentWorkflow.getWorkflowTracker() );
-
ActionWorkflowRunner runner = new ActionWorkflowRunner( workflow, result, nr, log );
Thread jobRunnerThread = new Thread( runner );
// PDI-6518
diff --git a/engine/src/main/java/org/apache/hop/workflow/actions/workflow/ActionWorkflowRunner.java b/engine/src/main/java/org/apache/hop/workflow/actions/workflow/ActionWorkflowRunner.java
index e526259..6ccae41 100644
--- a/engine/src/main/java/org/apache/hop/workflow/actions/workflow/ActionWorkflowRunner.java
+++ b/engine/src/main/java/org/apache/hop/workflow/actions/workflow/ActionWorkflowRunner.java
@@ -32,6 +32,7 @@ import org.apache.hop.i18n.BaseMessages;
import org.apache.hop.workflow.Workflow;
import org.apache.hop.workflow.WorkflowMeta;
import org.apache.hop.workflow.engine.IWorkflowEngine;
+import org.apache.hop.workflow.engines.local.LocalWorkflowEngine;
/**
* @author Matt
@@ -68,6 +69,11 @@ public class ActionWorkflowRunner implements Runnable {
//
ExtensionPointHandler.callExtensionPoint( log, HopExtensionPoint.WorkflowStart.id, getWorkflow() );
+ if (workflow instanceof LocalWorkflowEngine ) {
+ // We don't want to re-initialize the variables because we defined them already
+ //
+ ((LocalWorkflowEngine)workflow).setInitializingVariablesOnStart( false );
+ }
result = workflow.startExecution();
} catch ( HopException e ) {
e.printStackTrace();
@@ -75,7 +81,7 @@ public class ActionWorkflowRunner implements Runnable {
result.setResult( false );
result.setNrErrors( 1 );
} finally {
- //[PDI-14981] otherwise will get null pointer exception if 'workflow finished' listeners will be using it
+ // Otherwise we will get a null pointer exception if 'workflow finished' listeners will be using it
workflow.setResult( result );
try {
ExtensionPointHandler.callExtensionPoint( log, HopExtensionPoint.WorkflowFinish.id, getWorkflow() );
diff --git a/plugins/actions/writetolog/src/main/java/org/apache/hop/workflow/actions/writetolog/ActionWriteToLog.java b/plugins/actions/writetolog/src/main/java/org/apache/hop/workflow/actions/writetolog/ActionWriteToLog.java
index 7aeb939..42a5d9f 100644
--- a/plugins/actions/writetolog/src/main/java/org/apache/hop/workflow/actions/writetolog/ActionWriteToLog.java
+++ b/plugins/actions/writetolog/src/main/java/org/apache/hop/workflow/actions/writetolog/ActionWriteToLog.java
@@ -264,7 +264,7 @@ public class ActionWriteToLog extends ActionBase implements Cloneable, IAction {
* Execute this action and return the result. In this case it means, just set the result boolean in the Result
* class.
*
- * @param prev_result The result of the previous execution
+ * @param prevResult The result of the previous execution
* @return The Result of the execution.
*/
@Override