Core Concepts
Nodes, edges, delivery modes, and how they fit together.
The flow graph
A FlowDSL document describes a directed acyclic graph (DAG). Nodes are the vertices; edges are the directed connections between them.
text
ValidateOrder → ChargePayment → FulfillOrder → NotifyCustomer
The JSON/YAML document is always the source of truth. The visual canvas is a projection.
Nodes
A node is a unit of business logic. It has no knowledge of how its output is delivered — that is the edge's responsibility.
yaml
nodes:
ChargePayment:
operationId: charge_payment
description: Charges the customer's payment method
Naming conventions:
- Node component names →
PascalCase operationIdvalues →snake_case
Edges
An edge connects two nodes and carries a delivery policy.
yaml
edges:
- from: ChargePayment
to: FulfillOrder
delivery:
mode: checkpoint
packet: "asyncapi#/components/messages/PaymentConfirmed"
The delivery.mode field determines the transport and durability guarantee.
Packets
A packet is an AsyncAPI message reference. FlowDSL never duplicates message schemas — it references them:
yaml
packet: "asyncapi#/components/messages/OrderFulfilled"
The runtime
The FlowDSL runtime reads the graph definition and:
- Starts each node's handler
- Wires up the transport layer according to each edge's delivery policy
- Handles retries, checkpointing, and replay automatically
Your business logic never touches transport code.

