Core Concepts
The authoritative vocabulary for the WBSKT workflow builder. Covers both the visual canvas UI and the underlying engine runtime — from the elements you drag and drop to the objects the engine creates and manages at runtime.
Canvas & UI Layer
The visual objects and interactive surfaces that make up the workflow builder interface. Everything visible in the editor maps to a concept defined here.
The canvas is the primary editing surface of the WBSKT workflow builder. It provides an infinite 2D plane on which users drag nodes from the node palette, position them spatially, and wire them together. The canvas has no functional meaning at runtime — it is purely a design-time representation. When a workflow is deployed, the engine reads the saved topology and discards all positional metadata.
Multiple canvases can exist within a tenant — each one corresponds to exactly one Workflow Definition.
Workflow Definition is what gets serialized and saved to the platform when you publish. The canvas is your working surface; the definition is the artifact.
Nodes are the atomic building blocks of every workflow. Each node has a defined type (e.g. HttpWebhookTrigger, LogicGate, StaticForLoop), a set of configurable properties edited in the Properties Panel, and one or more ports through which it connects to other nodes.
At runtime, the engine executes nodes in sequence based on the signals flowing through connections. Each node type defines its own execution semantics — from routing a signal through a conditional branch to iterating over a list.
Node Categories
| Category | Role |
|---|---|
| Trigger | Entry points that initiate workflow execution in response to an external event. No input ports. |
| Logic & Control | Conditional routing, branching, looping, and parallel join nodes. Shape the execution path. |
| Data | Read, transform, and write values in the WorkflowContext. |
| Action | Perform side-effects: send commands, call external APIs, dispatch notifications. |
WorkflowContext. A node reads from context, acts, and optionally writes results back to context before emitting a signal.
Connections are the edges of the workflow graph. Every connection has a source (an output port) and a target (an input port). The direction is always source → target; signals cannot travel backwards along a connection.
In the builder UI, a connection is drawn by clicking and dragging from an output port dot to an input port dot. The only constraint is direction — an output port connects to an input port. There is no type-based port compatibility check; all ports carry signals.
A single output port can fan-out to multiple connections, emitting the same signal to several downstream nodes simultaneously. A single input port can receive connections from multiple sources, but fires independently for each arriving signal.
WorkflowContext, not through the connection itself. The signal that travels along the wire is a zero-payload notification pulse.
Every node exposes one or more named ports. Input ports appear on the left of the node block; output ports appear on the right. Port names are unique within a node and are surfaced in the Properties Panel and in the port diagram on each node's specification page.
All ports carry signals. The port color indicates the role of that signal within the workflow — not a distinct data type. The only rule governing connections is direction: an output port must connect to an input port.
Signal Role Legend
| Role | Semantics | |
|---|---|---|
| signal | Standard execution pulse. Notifies the target node to evaluate and run its logic. | |
| control | Internal flow-control signal — used for loop boundary events (e.g. onComplete, onIteration). |
|
| error | Fault signal. Fires when the node encounters an error; routes execution to a recovery branch. |
[ruleLabel] or [caseLabel].
The Properties Panel (also called the Inspector) is a context-sensitive panel that renders the configuration form for whichever node is currently selected. Its contents change entirely depending on the node type — selecting an HttpWebhookTrigger exposes HTTP routing and auth settings, while selecting a LogicGate exposes the rule editor.
All property values edited here are serialized into the Workflow Definition when the workflow is saved. They are also the parameters documented in the "Node Properties" section of each node's specification page in this reference.
WorkflowContext, not in the node's properties.
Workflow Fundamentals
The core objects the engine creates, manages, and executes. Understanding the distinction between a Definition and an Instance is central to working with WBSKT.
A Workflow Definition is the immutable artifact you author in the builder UI and publish to the engine. It describes what should happen — which nodes exist, how they are connected, what each node is configured to do, and how incoming triggers are correlated to instances.
Each definition has a stable definitionId (UUID) and a version. When you edit and republish a definition, the engine creates a new version. Any Workflow Instances that are already running continue on the version they were started with; only new arrivals pick up the updated definition.
The formal schema for Workflow Definitions — including triggers, execution physics, error handling, and governance — is documented in Workflow Definitions.
When a trigger fires and the engine resolves a matching or new CorrelationKey, it creates (or resumes) a Workflow Instance. The instance is the running incarnation of the definition's blueprint. It tracks:
- correlationKey — The unique identifier that distinguishes this instance from all others.
- executionPointer — Which node(s) are currently active.
- WorkflowContext — The shared key-value state accumulated during execution.
-
status —
Running,Waiting,Completed,Failed, orTerminated.
Multiple instances of the same definition can exist simultaneously — each identified by a different correlationKey and maintaining fully independent state. The maximum concurrent count is capped by maxActiveInstances in the definition.
Persistent instances write their state to durable storage at every checkpoint — allowing crash recovery and audit. Ephemeral instances run entirely in memory for maximum throughput, with no recovery guarantee. Set via instanceMode in the Workflow Definition.
Every workflow must have at least one trigger. A trigger monitors an external system (an HTTP endpoint, an MQTT topic, a cron schedule, a connected client, etc.) and fires when its configured conditions are met. When a trigger fires, it:
- Receives the raw external payload.
- Extracts the CorrelationKey from the payload using
correlationExpression. - Applies the
onMatchstrategy to create, resume, replace, or discard a workflow instance. - Normalizes the payload into the WorkflowContext.
- Emits a signal on its
onTriggeroutput port to start the execution chain.
A single Workflow Definition can have multiple triggers of different types (e.g. both an HTTP webhook and an MQTT subscription). This is the multi-trigger pattern — any configured trigger can initiate or update the same instance.
Identity Triggers — Scope execution to registered clients or groups: Single Client, Group / Folder, Policy-Based.
Signals are the mechanism of execution in WBSKT. When a node finishes its work, it emits a signal on one or more of its output ports. That signal travels along the connection(s) attached to those ports and activates the receiving nodes at the other end.
Because signals carry no data, the architecture avoids data coupling between nodes. A node that needs data from a previous step reads it directly from the WorkflowContext rather than receiving it on a wire. This shared-state model makes the graph topology independent of data shape.
Signal Flow Example
onTrigger
→ travels connection →
Logic Gate receives signal on eval
→ reads context → evaluates rules →
emits signal on matching output port(s)
ackStrategy setting.
The WorkflowContext is created when an instance is spawned and destroyed when the instance completes or is terminated. It is scoped strictly to one instance — no two instances share a context, even if they were created from the same definition.
The context is populated in layers as execution progresses:
- The triggering payload is written in at instance creation (e.g. the HTTP request body, the MQTT message).
- Data nodes (
Set Context,Data Mapper) add or transform values during execution. - Action and logic nodes may read values from context to parameterize their behavior.
Nodes reference context values using JSONPath expressions — for example $.sensor.temperature to read a nested field, or $.client.id to access a top-level key.
Identity & Routing
How the engine maps incoming trigger events to the correct workflow instance — or decides to create a new one.
Each trigger can be configured with a correlationExpression — a JSONPath or regex applied to the incoming payload. The value it extracts becomes the CorrelationKey. The engine then looks up all active instances for this definition and checks whether any instance was already created with that key.
Resolution Outcomes — onMatch Strategies
| Strategy | Behavior |
|---|---|
| MapOrCreate | If a matching instance is found, the signal is routed to it. If not, a new instance is created. Default. |
| MapOrDiscard | Only routes to an existing instance. If no match is found, the incoming event is silently dropped. |
| AlwaysCreate | Ignores the resolved key entirely and always spawns a new parallel instance. Useful for stateless, fire-and-forget event logs. |
| MapOrReplace | If a match is found, the existing instance is terminated and a fresh instance starts with the new payload. Use when the latest event must always win. |
When a workflow has multiple triggers (multi-trigger pattern), each trigger defines its own correlationExpression independently. Different triggers may extract the key from different fields of their respective payloads, but they all resolve to the same logical identity space within the definition.
correlationExpression is left empty (null), the engine cannot extract a key and therefore cannot match an existing instance. In practice this behaves like AlwaysCreate — every trigger arrival spawns a new independent instance.
The full correlation specification — including multi-trigger strategy and per-trigger overrides — is defined in Workflow Definitions → Identity & Routing.