Flow Studio
Port Rules
Connection validation runs in real time as you drag. Invalid connections are rejected before you release the mouse, preventing broken workflow graphs. Understanding the rules helps you design without frustration.
Fundamental Rules
| Rule | Enforced |
|---|---|
Source port must be an output (source) port | Always |
Target port must be an input (target) port | Always |
| Cannot connect a port to itself | Always |
| Cannot connect a node to itself | Always |
| No circular dependencies (A → B → A) | Always (cycle detection) |
| Output ports can fan out (connect to multiple nodes) | Allowed |
Input ports that are not isMultiple accept only one connection | Always |
| Error port (source) can only connect to a node's main input (target) | Always |
Visual Feedback During Drag
While dragging from a source port, the canvas provides real-time feedback:
- Valid target ports — highlight green as the cursor approaches
- Invalid target ports — stay red/dim with a "no entry" cursor
- Already connected non-multiple input — shows amber to indicate one connection already exists
- Would create cycle — shows red with tooltip "circular dependency"
Validation Error Messages
| Message | Cause |
|---|---|
| "Cannot connect to self" | Source and target are the same node |
| "Circular dependency detected" | The connection would create a loop in the graph |
| "Port already connected" | Target port is not isMultiple and already has one connection |
| "Type mismatch" | Source dataType and target dataType are incompatible (strict mode only) |
| "Error port must connect to main input" | Attempting to connect an error port to a non-main input port |
Strict Type Checking
By default, all ports accept
any data type and type mismatches are not enforced. Strict type checking can be enabled per-tenant in platform settings. In strict mode, connecting a port with dataType: 'string' to a port expecting dataType: 'number' is rejected.