Skip to main content

Expressions reference

Two mechanisms read data in a node’s config: ${...} placeholders, resolved immediately before the node runs, and expressions, evaluated by plugins such as BRANCH, FILTER, mappers and loops.

Placeholders

A placeholder is ${source} inside any string of a node’s config. When a value is exactly one placeholder the type is preserved; inside a longer string the result is text. A placeholder that cannot be resolved against the message gives an empty value. A configuration that cannot be resolved at all fails that message like a plugin failure, so retry and error routing apply. A readable-list violation or a missing secret also fails the message.

Type suffix

${payload.secs:int} forces a type. An empty value cast to a number is empty, not an error.

Readable environment values

A name containing PASSWORD, PASSWD, SECRET, TOKEN, CREDENTIAL, PRIVATE or KEY (case-insensitive) stays blocked even when listed.

Secrets

decrypted:name reads the environment variable YUKTA_SECRET_ plus the name upper-cased, every character other than a letter or digit replaced by _. decrypted:db.password reads YUKTA_SECRET_DB_PASSWORD. A secret may be scoped: YUKTA_SECRET_S_<SESSION>__<NAME> (session) and YUKTA_SECRET_T_<TENANT>__<NAME> (tenant) are read before the global name. A name containing __ is refused. A secret that is not found fails the message with Secret not found for key. Reads are logged with key name, scope, workflow and node, never the value.
A literal in a field the plugin declares secret, or named like a password, token, api key, authorization or credential, is refused when the definition is saved or run; see Security reference.

Expressions

Expressions are Spring Expression Language (SpEL) strings. A plugin passes the message as the root, so payload and metadata are readable:

Evaluation rules

Allowed methods

On any receiver: equals, hashCode, toString, compareTo, length, size, isEmpty, isBlank, contains, containsKey, containsValue, get, getOrDefault, indexOf, lastIndexOf, charAt, startsWith, endsWith, equalsIgnoreCase, matches, substring, trim, strip, toUpperCase, toLowerCase, split, keySet, values, isPresent, orElse, intValue, longValue, doubleValue, booleanValue, name, ordinal, abs, max, min. Every method of a java.time.* type is allowed.

Script limits

JavaScript scripts (mapper plugin) run with system properties yukta.script.timeout-ms (default 10000), yukta.script.max-statements (default 50000000) and yukta.script.max-heap-bytes (default 0, no limit; enforced only on Oracle GraalVM).