v2.1.6+Run logic
The Run logic panel is a unified configuration area in the Graphical Designer that consolidates data iteration, conditional suppression, and looping strategies into a single task level control, enabling you to define when and how often a task runs without building workaround pipelines.
The Run logic panel absorbs the Repeat for each value field from Scheduling options and introduces four run strategies driven by JSONata boolean expressions. These controls let you express iteration, suppression, and polling behavior directly in the task definition without building conditional wrapper workflows.
Run strategies
The Run strategy field controls when the run condition is evaluated
and what happens when it resolves to false.
| Strategy | Evaluation point | Run condition | Loop exit | Final state on exit |
|---|---|---|---|---|
RUN_IF |
Pre-run | Expression must be true to run. |
N/A — single check | True: task runs. False: SUPPR with sub-status SUPPR_BY_RUN_CONDITION. |
WHILE_TRUE |
Pre-run | Expression must be true to run. |
Expression evaluates to false. |
First check false: SUPPR. Subsequent loop exit: terminal run
is SUPPR. Lifecycle status reflects the previous successful
run. |
REPEAT_WHILE |
Post-run | Always runs at least once. | Expression evaluates to false. |
Reflects the status of the final run. |
REPEAT_UNTIL |
Post-run | Always runs at least once. | Expression evaluates to true. |
Reflects the status of the final run. |
The run condition expression must return a strict boolean. If the expression returns any other type — string, number, null, or object — the task transitions immediately to FAIL with error code FAILED_PRECONDITION and the parent workflow abends.
Task lifecycle and pipeline impact
When a task is
skipped by a RUN_IF or WHILE_TRUE evaluation, it moves to
a clean SUPPR state with sub-status
SUPPR_BY_RUN_CONDITION. This distinguishes intentional skips from run
failures and prevents ambiguous monitoring states.
A task in SUPPR state satisfies On Success dependencies for downstream successor tasks. The workflow continues without breaking the downstream pipeline sequence.
When a loop exits because it reaches the configured Maximum repeats
cap, the run stops cleanly without raising a failure. HCL Universal Orchestrator logs an internal
audit record LOOP_STOPPED_BY_MAX_ITERATIONS for verification.
Within any run condition expression, you can reference the current iteration number using the 1-based tracker variable accessed as $this().iteration.