Join Action
Description
The Join action is used to synchronize parallel branches in a workflow. It acts as a control point that waits for all preceding parallel branches at the same level to complete before continuing with the next action(s).
This eliminates the need to create separate child workflows solely for the purpose of joining and continuing execution after parallel tasks have completed.
Usage
Traditionally in Apache Hop, if you wanted to run parts of a workflow in parallel and then continue with a sequential flow, you would isolate those parallel sections in a child workflow. This was necessary to prevent downstream actions from being executed prematurely.
With the new Join action, this workaround is no longer needed.
To use the Join action:
-
Configure your workflow with multiple outgoing hops from a single action.
-
Enable parallel execution on the outgoing hops you want to run in parallel.
-
Add the Join action at the point where all parallel branches converge.
-
Connect all parallel branches to the Join action with regular (non-parallel) hops.
-
Connect the Join action to the next action you want to execute after all parallel tasks have finished.
Example Workflow Structure
When executed:

-
The actions
pipeline-1,pipeline-2andpipeline-3run in parallel. -
The
joinaction waits untilpipeline-1,pipeline-2andpipeline-3are finished. -
Once they complete, the workflow continues with final action
check-datasets.
Benefits
-
Simplifies parallel execution: No need for a separate child workflow just to coordinate branches.
-
Improves readability: Your parallel and sequential logic can be maintained in a single workflow.
-
Increases maintainability: Fewer components and external dependencies (child workflows) to manage.
Result
What this action passes on to the next action. See Action results for how results travel through a workflow.
| Result | Value |
|---|---|
True |
Every branch that leads to the Join has finished, and none of them failed on the way. Only a branch whose hop into the Join is a success hop counts as failed when its last action is false: with a failure hop or an unconditional hop, a false action does not make the Join false. |
False |
A branch ended false while its hop into the Join is a success hop, or can’t run any more because of an earlier failure. The number of errors is the number of such branches. |
Result files |
The result files of one branch are passed on. The result files of the other branches are not added: when several branches add result files, only those of one branch reach the next action. |
Result rows |
The result rows of one branch are passed on, as for the result files. |