Loop Process (Node)

  • The Loop functionality provides the ability to repeatedly execute the same workflow process for each element of a given array (Loop Target Items).

Key Features

  • Iterative Processing: Executes the specified workflow sequentially for each element in the array.

  • Branch Control: Moves to the 'loop' branch during loop execution and to the 'done' branch upon completion.

  • Result Collection: Collects the results of each iteration and provides a final array of all results.

Parameter Configuration

To use the Loop process, you must configure the following parameters:

  • Loop Target Items (Required)

    • Specifies the data array to be processed iteratively.

    • Can be provided as a List object or JSON array string format.

    • Can be dynamically generated using template variables.

    // Direct array specification
    ["item1", "item2", "item3"]
    
    // Using template variables
    ${previousResult.dataList}
    
    // JSON string format
    "[{\"id\":1,\"name\":\"first\"},{\"id\":2,\"name\":\"second\"}]"
    

Branch Structure (Target ID)

The Loop process uses a special branch structure:

{
    "loop": "next_process_ID_during_iteration",
    "done": "next_process_ID_after_completion"
}
  • loop: Specifies the ID of the next process to be executed during each iteration.

  • done: Specifies the ID of the process to be executed after all iterations are completed.

Operation Flow

  1. Initialization: When the Loop process starts, it parses and validates the items array.

  2. Loop Start: Outputs the first item as a result and moves to the 'loop' branch.

  3. Loop Progress: For each iteration, outputs the current item and collects previous results.

  4. Completion: When all items are processed, outputs the complete results and moves to the 'done' branch.

Result Data

The Loop process provides different results depending on the iteration status:

  • During Iteration: JSON string of the currently processed item

  • Upon Completion: JSON string of an array containing all iteration results

Usage Example

The following is an example of a Loop workflow for sending emails to a user list:

// Loop process parameters
{
    "items": [
        {"email": "user1@example.com", "name": "John Smith"},
        {"email": "user2@example.com", "name": "Jane Doe"},
        {"email": "user3@example.com", "name": "Mike Johnson"}
    ]
}

// Data output for each iteration
// 1st iteration: {"email": "user1@example.com", "name": "John Smith"}
// 2nd iteration: {"email": "user2@example.com", "name": "Jane Doe"}
// 3rd iteration: {"email": "user3@example.com", "name": "Mike Johnson"}

// Final result upon completion: Array containing all iteration results

Limitations and Considerations

  • Maximum Item Count: The maximum size of the items array is limited (1000) for performance and stability.

  • Empty Array Handling: An error occurs when an empty array is input, so prior validation is required.

  • Memory Usage: Memory usage should be considered when processing large volumes of data.

  • Infinite Loop Prevention: Validation is included to prevent infinite loops due to incorrect branch configuration.

Template Variable Usage

The Loop process can utilize the following template variables:

// Using previous process results as items
{
    "items": "${httpRequest.responseData}"
}

// Using conditionally filtered items
{
    "items": "${filteredItems}"
}

Error Handling

The Loop process generates errors in the following situations:

  • When the items parameter is missing or null

  • When items is not in the correct array format

  • When the array is empty

  • When the maximum item count is exceeded

  • When the iteration index is invalid

These errors will halt workflow execution, so it is recommended to perform data validation beforehand.