if

Control flow with if-then-else construction.

Description

  • Control flow with if-then-else construction.

  • Run nodes of children followed child_if or child_else.

  • When the flow of child_if or child_else is finished, then run children of if node.

Parameters

Parameter

Type

Required

Default

Comment

child_else

node

No

None

Reference to the node to be processed if the condition parameter evaluates to False.

child_if

node

No

None

Reference to the node to be processed if the condition parameter evaluates to True.

condition

expression

Yes

-

The condition that determines the execution path in a conditional branch.

Examples

# Print true if flowdata['cond'] is OK else print false.
# Parent node can be set with parent field as <node name>.<field name>
#     ┌─> true message  ─┐
# if ─┤                  ├─> out
#     └─> false message ─┘
# Output: No output
- if:
    name: "if"
    condition: "fd.cond == 'OK'"
- message:
    name: "true message"
    msg: "true"
    out_field: "message"
    parent: "if.child_if"
- message:
    name: "false message"
    msg: "false"
    out_field: "message"
    parent: "if.child_else"
- stdout:
    name: "out"
    src: "{{ fd.message }}"
    parent: "if"

# This example behaves in the same way as the one above.
#     ┌─> true message  ──> out true
# if ─┤
#     └─> false message ──> out false
- if:
    name: "if"
    condition: "macro.cond == 'OK'"
- message:
    name: "true message"
    msg: "true"
    parent: "if.child_if"
- stdout:
    name: "out true"
    src: "{{ fd['true message'] }}"
- message:
    name: "false message"
    msg: "false"
    parent: "if.child_else"
- stdout:
    name: "out false"
    src: "{{ fd['false message'] }}"