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