Portal Community

Output Ports

Port When Triggered Description
success When the Fork node executes (always, assuming no pre-fork error) All nodes connected to the success port are launched simultaneously as independent parallel lanes. The Fork node connects this single port to multiple downstream lane-start nodes. Each downstream path becomes one lane.

Output Data Per Lane

Each lane receives an independent copy of the full execution context at the moment the Fork fires. The context includes all variables, input data, and prior node outputs accumulated before the Fork.

Field Type Description
parallel_lane_index integer (0-based) The index of this lane (0, 1, 2, ...) within the parallel group. Available to all nodes within the lane for identification and logging.
IsParallelExecutionActive boolean (true) Indicates to nodes within the lane that they are executing in a parallel context.
All pre-fork context fields as received Full copy of variables, input data, and prior outputs. Modifications within a lane do not affect other lanes.

Data Flow Example

// === Pre-fork context ===
{
  "orderId": "ORD-2024-112",
  "customer": { "email": "user@example.com", "phone": "+441234567890" },
  "IsParallelExecutionActive": false
}

// === Parallel Fork fires success port → 3 lanes launched ===

// Lane 0: SendEmailNotification
{
  "parallel_lane_index": 0,
  "IsParallelExecutionActive": true,
  "orderId": "ORD-2024-112",
  "customer": { "email": "user@example.com", "phone": "+441234567890" }
  // Lane 0 adds: emailSent = true
}

// Lane 1: SendSmsNotification (runs simultaneously with Lane 0)
{
  "parallel_lane_index": 1,
  "IsParallelExecutionActive": true,
  "orderId": "ORD-2024-112",
  "customer": { "email": "user@example.com", "phone": "+441234567890" }
  // Lane 1 adds: smsSent = true
}

// Lane 2: PostSlackMessage (runs simultaneously with Lanes 0 and 1)
{
  "parallel_lane_index": 2,
  "IsParallelExecutionActive": true,
  "orderId": "ORD-2024-112",
  "customer": { "email": "user@example.com", "phone": "+441234567890" }
  // Lane 2 adds: slackPosted = true
}

// === All 3 lanes complete → Parallel Join collects results ===

Connecting Lanes to Parallel Join

Each parallel lane must terminate by connecting to the same Parallel Join node. The Parallel Join node automatically tracks how many lanes were spawned and waits until all of them have delivered their results. In the workflow designer, draw connections from the final node in each lane to the Parallel Join node's input.

Lanes do not need to be equal in length or complexity. A lane with 5 nodes will still be waited on by the Join node alongside a lane with a single node. The Join fires its success port only after the last lane to complete reports its result.