Referencing flow variables in custom scripts

Introduction

If required, you can reference (and therefore manipulate) flow variables in custom scripts. The possibilities here are only as limited as your development expertise however, a simple example might be where you want to generate a running count of order lines, to be output to a total field in a target system.

To achieve this, you would:

  1. Add a flow variable named running_total to your process flow settings.

  2. Write a custom script which loops over each received order line and updates the running_total variable as it goes.

  3. Add the custom script to your process flow via a script shape.

  4. Add a map shape to your process flow and include a rule which maps a custom string transform for {{flow.variables.running_total}}, to the total field in the target system.

Flow variable syntax for custom scripts

To reference flow variables in a custom script, the required syntax is as follows:

PHP 8.1
['flow']['variables']['variableName']
Javascript Node 18
flow.variables.variableName
C# 8
["flow"]["variables"]["variableName"]
Python 3
['flow']['variables']['variableName']
Ruby 3
['flow']['variables']['variableName']

In all cases, the variableName element should be replaced with the actual flow variable name. For example:

PHP 8.1
['flow']['variables']['running_total']

Example

The example script below takes a flow variable named customerID and sets the value to 1234567:

PHP 8.1
<?php

/**
 * Handler function.
 *
 * @param array $data [
 *      'payload'   => (string|null) the payload as a string|null
 *      'variables' => (array[string]string) any variables as key/value
 *      'meta'      => (array[string]string) any meta as key/value
 *    ]
 */

function handle($data)
{
    $data['flow']['variables']['customerID'] = 1234567;

    return $data;
}

So, wherever the customerID flow variable is referenced in a process flow, its value would be set to 1234567 when the process flow runs.

When you update flow variables via a script, those updates persist for the duration of the flow run. Once the process flow has completed, default values are restored.

Last updated

#1409: Release notes - 11.12.24

Change request updated