Workflow Properties v2

The same Property structure is used for Workflow Parameters, Workflow Returns, Step Parameters, Step Returns, and nested object or array fields.

A Property declares shape, design-time guidance, runtime assignment, logging behavior, or a combination appropriate to its location and Node Method contract.

Fields

Field Purpose
Type Simplified type used for validation, mapping, editing, and compilation.
Description Optional explanation of the Property's meaning or contract.
Sample Representative design-time value for previews, inference, and generated interface examples. It is not a runtime assignment or a complete schema.
Value Literal value assigned at runtime.
Expression Runtime mapping from a Workflow Parameter, available Step Return, or mapping function.
Logging Workflow Log handling. Redact: true replaces the captured value with the redaction marker.
Properties Named child Property definitions for an object or an array item.

Configure Logging in Code view to apply Property redaction.

Types

Use the type supplied by the discovered Node Method contract. The authored simplified types are:

Type Represents
string Text, characters, and URL-like scalar values.
number Numeric primitive values.
boolean true or false.
datetime Date/time and date/time-offset values.
timespan A duration.
guid A globally unique identifier.
enum One option from the Method's published enum contract.
object A structured object, dictionary, or JSON value.
array A synchronous or asynchronous collection.
stream An opaque byte Stream.
connectionKey The exact ID of a compatible Connection selected through Console or an authorized tool.

Type describes the target contract. It does not convert incompatible data automatically. Flowgear validates it against the resolved Node Method and mapping shape.

See Data Types for the relationship between authored the Runtime types, document formats, and concrete Node types.

Literal values

Use Value for scalar literals and supported scalar collections:

Parameters:
  minimumAmount:
    Type: number
    Value: 100

  labels:
    Type: array
    Value:
      - priority
      - reviewed

Do not put an object or collection-of-objects payload in a complex Value. Declare its Properties, map it from runtime data, or pass a document to a parser Step. This keeps the authored shape aligned with the Method contract.

Expressions

Use Expression for runtime values:

CustomerId:
  Type: string
  Expression: "{.customerId}"

A runtime-assigned Property must not specify both Value and Expression. The validator reports that combination as an error.

The snippet represents a Step Parameter named CustomerId. Workflow Parameters are inputs, so they cannot define Expressions. Step Parameters and Workflow Returns can map from values available in their scope. A Step Return normally declares the output contract supplied by its Node Method rather than remapping that output.

Short scalar form

A scalar or sequence can be written without the full Property mapping:

Parameters:
  Text: Hello
  Source: "{readRecord.Record.name}"
  Tags:
    - customer
    - active

Flowgear treats a string containing a balanced {...} token as an Expression in short form. Use explicit Value when braces are literal text:

Parameters:
  Template:
    Type: string
    Value: "Use {braces} as text"

Prefer the full form when type, shape, sample, description, or logging behavior matters.

Objects

Use Properties to declare object fields:

Type: object
Properties:
  id:
    Type: string
  displayName:
    Type: string

An object mapping can put an Expression on the parent when the target accepts the upstream object directly. To reshape it, map the required fields under Properties.

Arrays

For a collection-of-objects mapping, put the source collection Expression on the array Property and define one target item beneath Properties:

Type: array
Expression: "{listCustomers.Customers}"
Properties:
  id:
    Type: string
    Expression: "{listCustomers.Customers.id}"
  name:
    Type: string
    Expression: "{listCustomers.Customers.name}"

The parent Expression establishes the per-item collection scope. Mapping a child field from a collection directly into a scalar outside that scope is invalid.

An expressionless array with mapped child fields constructs one item. Use that form only when a singleton collection is the intended target shape.

Streams

A stream is opaque and cannot declare child Properties. Pass it as one value to a Step that accepts a Stream. Parse it first when you need named fields.

The same direct Stream source cannot be exposed through more than one top-level Workflow Return. Return it once and let the caller consume that output.

Samples and logging

Use Sample to make design-time shape and preview behavior more useful. A sample does not provide runtime data and does not replace explicit Properties when a stable nested contract is required.

Logging.Redact: true affects Workflow Log capture for that Property. It does not alter the runtime value and does not sanitize Debug results, exception text, or diagnostics produced elsewhere. Apply redaction before publishing and review all other ways sensitive information could leave the Workflow. See Workflow Log Redaction for nested and deferred values.

See also

See Expression syntax and Mapping functions for runtime assignments, Workflow YAML for the complete document, and Data mapping for mapping design.