Skip to main content
Keeps only the items in a list where a predicate returns something truthy. The predicate is a small inner graph — open it by drilling into the node. It runs once per item and should evaluate to a boolean-ish value. An unconfigured or empty predicate keeps the list unchanged.

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, it is 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 :error and 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.

Ports