Assigns
An assign is a named value held on the token. Assigns are how downstream nodes see what earlier nodes produced. Typical patterns:- A step that fetches employees from a source system writes the list to an assign named
employees. - A later node reads that assign, iterates over it, and writes a transformed list to
outgoing_employees. - A final step reads
outgoing_employeesand sends it to the target system.
- Assign Read reads one assign and exposes its value on an output port.
- Assign Put writes a value coming in on an input port to a named assign.
- FlowAssign writes a single resolved value to an assign as its own step.
- FlowCompose builds a struct payload from per-field mapping specs and stores it under an assign.
- FlowDefault falls back to a computed value when an assign is nil or missing.
Pipeline steps
A step is a named unit of work - an operation that reaches out to a source or target system, runs a calculation, or performs a side effect. The FlowAction node is how a step is invoked from a flow. A FlowAction configures:- The step to run. Steps are grouped by system in the picker (for example, “Fortnox: Get all projects”). Every step has a stable internal key that persists in saved flows; the display name can change without breaking existing flows.
- The system integration the step should target, when the step talks to an external system.
- The step’s options. Each step declares its own typed option schema, and the editor renders a form from it.
- An on error policy. See Execution and error handling.
- An optional cache mode, described below.
Step caching
Some steps are expensive - fetching a large list from a source system, for example. When the same step with the same inputs would be called more than once in a single run, the result can be memoised. Caching is per-run: the first invocation of a cached step populates the cache, and subsequent invocations with an equivalent cache key reuse the first result. Only the step’s assigns are cached; log entries and errors are not. Steps opt into caching by declaring a cache key. Not every step is cacheable; those that aren’t simply run again each time they are invoked. A FlowAction’s cache mode can be set to force, which bypasses the cache and forwards a signal to the step so any internal caches inside the step’s implementation can also be bypassed. This is the escape hatch for reruns that must see fresh data.Reading dated properties
Domain entities in Twine - Employee, Schedule, TimeReport, and so on - carry their history as dated properties. At the flow level, dated properties are read and written through dedicated assign nodes:- FlowAssign, FlowCompose, and FlowDefault can each read a dated property as a value source, with an optional as-of date. This is how a flow pulls a dated-property value out of an assign whose value carries that history: FlowAssign extracts a single value and names it, while FlowCompose reads several into the fields of a struct.
- FlowDatedPropertyPut writes one dated property onto a struct held in an assign.