Node-RED as MultiFlexi flow editor¶
MultiFlexi uses Node-RED as a visual editor for automation diagrams. multiflexi-eventor stores and executes those diagrams. Node-RED does not need to be running for chained jobs to continue.
Architecture¶
You draw a flow in Node-RED (event → RunTemplate → map → switch → …).
On Deploy,
node-red-contrib-multiflexisyncs the Multiflexi subgraph toPOST /api/.../flow/.MultiFlexi stores an immutable
flow_version(nodes + wires + ports).Eventor starts a
flow_runwhen amultiflexi-eventtrigger matches (for example AbraFlexibanka/createvia the webhook acceptor).FlowInterpreteradvances steps: schedule jobs, wait for completion, applyenv_mapping, branch onswitch, honourdelay.
Legacy pairwise event_rule A→B chaining still works beside flows.
Executable node catalog¶
Only these node types are stored and executed (capability 1.0.0):
multiflexi-event,multiflexi-runtemplate,multiflexi-map,multiflexi-artifact, stamp nodes (company / application / credential)switch,delay,link in,link out,catch
Other Node-RED palette nodes are ignored or rejected on Deploy so the graph
cannot silently fail at runtime. Arbitrary function / http request
nodes are out of scope for the PHP interpreter.
Design-only RunTemplate nodes¶
multiflexi-runtemplate defaults to Design only: it does not call
POST /job/. Uncheck Design only only for ad-hoc Inject → schedule from
Node-RED.
API¶
Method |
Path |
|---|---|
POST |
|
GET |
|
GET |
|
GET |
|
POST |
|
Manual sync from the editor: POST /multiflexi/flow/sync (Node-RED admin).
Forward-compatible schema¶
Immutable
flow_version; eachflow_runpins a version.Step I/O envelope:
{payload, env, produced, meta}.Wires carry
from_port/to_port.Idempotency key on
flow_run(for examplechange:{source}:{inversion}:…).Job provenance:
source_job_id,flow_run_id,flow_step_id.
Node-RED 5¶
Upgrading Node-RED (including 5.x / Node.js 22+) is an editor package
concern. Live flow_run rows keep executing in eventor on the pinned
flow_version.
See also¶
Design note:
passing_data_between_jobs.md(workspace root)