Configuration
- Decide by — Rule: a one-line text rule tested once per item
(
twine_time_type = "sick_leave" and overlaps(it, period)). The item’s fields are in scope bare,itis the item, and the flow’s other assigns are reachable by name. Inner engine: the predicate graph below. - Rule — the text rule, when deciding by rule. See Expressions for the full language.
- Source assign — the assign holding the list to filter.
- Current item assign — the name each item goes by while it is being
tested. A rule can use it instead of
it(employee.salary_amount); an inner engine reads it with Assign Read. It is set before each item and restored afterwards, so nothing leaks past the filter. - Output assign — where the filtered list is written.
- Subject assign (inner engine only) — what Attribute nodes in the predicate graph read. Defaults to the current item, which is almost always what you want; a rule always has the item as its subject.
Truthiness rules
The predicate result is unwrapped before the check:nil,false,[], and""are falsy.- A list of dated properties is truthy when any element is truthy — handy for “keep this employee if they ever matched X historically”.
- Everything else (strings, numbers, structs) is truthy.
On predicate error
If the predicate crashes or errors for an item, On inner error decides:- Skip branch (default): drop just that item and keep filtering the rest.
This is the historical behavior — now the drop is logged at
:errorand the run is marked completed with issues instead of passing silently. - Halt flow: fail the whole run.
Tips
- Use Match or an arithmetic node as the final node of the predicate to return a boolean directly.
- The Evaluator pane lets you paste sample JSON for the current item assign so you can preview the predicate without a real run.