Skip to main content
Skip table of contents

Expression Language (Low-Code Syntax)

Expression Language Overview

The Expression Language is the low-code syntax used across the P4 Platform to define data transformations, calculations, conditions, and dynamic behavior inside Process Builder configurations.

It provides a compact, declarative way to work with values stored in the DataStore without writing traditional code.
Expressions are evaluated at runtime by the P4 execution engine and are used wherever simple data mapping is not sufficient.

The Expression Language is not tied to a single layer of the platform. Instead, it acts as a shared expression layer used consistently across Flow logic, UI behavior, and layout configuration.


Purpose of the Expression Language

The primary purpose of the Expression Language is to allow controlled data manipulation directly inside configuration fields.

It is designed to solve scenarios such as:

  • Transforming values before assigning them to variables or entity fields

  • Evaluating conditions in decision nodes

  • Formatting or normalizing user input

  • Computing derived values (KPIs, flags, calculated attributes)

  • Defining dynamic visibility and behavior in UI elements

By embedding expressions directly into configuration, the platform avoids the need for custom scripting while still supporting non-trivial logic.

Where Expressions Are Used

Expressions can be used in multiple areas of the P4 Process Builder, including:

  • Flow Builder

    • Variable Assignment nodes

    • If / Condition nodes

    • Loop conditions and calculated values

    • Mapping values into Create / Update Object nodes

  • Widgets (UI Logic Layer)

    • Visibility conditions

    • Dynamic parameter values

    • Input and output data bindings

Because expressions are evaluated in the same way in all these contexts, users only need to learn one consistent syntax.

Design Principles

The Expression Language follows several strict design principles to ensure predictability and safety.

Declarative and Side-Effect Free

Expressions describe what value should be computed, not how execution flows.
They do not modify system state, persist data, or trigger actions on their own.

Deterministic Evaluation

For a given input state in the DataStore, an expression always produces the same result.
There is no randomness, timing dependency, or external state access.

Strongly Typed

Expressions operate on well-defined data types such as Number, String and Boolean.
Type mismatches are handled explicitly, preventing silent or ambiguous conversions.

Runtime Interpretation

Expressions are evaluated at runtime as part of Flow or UI execution.
They are not precompiled and always operate on the current execution context.

Relationship to the DataStore

All expressions operate on data stored in the DataStore, which represents the in-memory state of a running process.

Expressions can:

  • Read process variables

  • Access values produced by previous nodes

  • Reference input and output variables

  • Work with object fields loaded into memory

Expressions do not access the database directly.
They always work with the current in-memory representation managed by the Flow execution engine.

This guarantees transactional safety and predictable behavior during execution and debugging.


Expression Language vs. Programming Languages

Although the Expression Language may resemble spreadsheet formulas or functional expressions, it is intentionally limited.

The Expression Language:

  • Is not a programming language

  • Does not support loops, assignments, or state changes

  • Does not replace Flow structure or node logic

  • Does not allow custom user-defined functions

Its role is to complement visual process modeling, not to replace it.

Complex logic, branching, iteration, and persistence should always be implemented using Flow nodes.
Expressions should remain small, readable, and focused on value computation.


Typical Usage Philosophy

As a general guideline:

  • Use simple mappings when values can be passed directly.

  • Use expressions when values require transformation or calculation.

  • Use Flows and nodes when logic becomes multi-step, conditional, or stateful.

Keeping expressions concise improves:

  • Readability of configurations

  • Debugging transparency

  • Reusability of Flows and Widgets

  • AI interpretability for Artoo-assisted automation


Summary

The Expression Language is a core building block of the P4 low-code architecture.

It provides:

  • A unified syntax for data transformation across the platform

  • A safe and deterministic way to compute values at runtime

  • A bridge between visual configuration and dynamic behavior

Understanding this language is essential for building expressive, maintainable, and scalable Process Builder configurations.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.