Skip to main content

Advanced Features

Multiple Entry Points

Workflows can have multiple entry points for different triggers:

{
"entrypoints": [
{
"id": "web-request",
"name": "Handle Web Request",
"startAt": "validate-request",
"guards": [
{
"condition": "{{payload.method}} == 'POST'",
"error": "Only POST requests allowed"
}
]
},
{
"id": "scheduled-task",
"name": "Daily Cleanup",
"startAt": "cleanup-data"
},
{
"id": "default",
"name": "Default behavior if no entrypoint in script parameters",
"startAt": "default-start-step"
}
]
}

Run specific entry points:

nexroo run config.json web-request
nexroo run config.json scheduled-task

If no entrypoint selected, it will use the "default" entrypoint.

nexroo run config.json

Queue Management & Iteration Control

The engine includes run limits to prevent infinite loops and control execution flow:

Step Run Limits

{
"id": "limited-step",
"runLimit": 5,
"action": "template::process_data",
"condition": {
"if": "{{step-data.output.hasMore}} == true",
"then": "limited-step",
"else": "completion-step"
}
}

runLimit values:

  • Positive integer: Step can execute up to that many times
  • 1 (default): Step executes only once
  • -1: Infinite execution (no limit)

Note: The engine has a global safety limit of 1000 total iterations per workflow execution to prevent infinite loops. This applies regardless of individual step runLimit values.

For detailed information on flow control, see:

Addon Testing & Validation

The engine automatically tests addons during initialization:

Automatic Addon Testing

{
"addons": [
{
"id": "my-addon-instance",
"type": "addon-name",
"enabled": true,
"config": {
"base_url": "https://api.example.com",
"timeout": 30
},
"secrets": {
"api_key": "API_KEY"
}
}
]
}

Addon registering process:

  1. Configuration Validation: Validates addon config against schema
  2. Connectivity Test: Calls addon's test() method
  3. Action Registration: Registers addon methods as workflow actions.

Addon Status Tracking

View addon status in observability data, by default in '/observe/' folder:

{
"addon_summary": {
"api-service": {
"load_status": "success",
"test_result": true,
"registered_actions": ["rest_api::get", "rest_api::post"],
"package_version": "1.2.3",
"test_duration_ms": 245
}
}
}

For comprehensive addon and observability information, see:

Workflow Design & Development

  • Workflow Structure - Complete configuration reference for addons, entrypoints, and workflows
  • Template System - Variable resolution, external data access ({{payload}}, {{user}}), and dynamic parameters
  • Flow Control & Conditions - Conditional logic, loops, parallel execution, and branching strategies