Flow
See a Flow as an app. It defines things like number of steps, path of access and if it is public or protected by authentication. A Flows aims to guide end-users performing a well defined IAM task.
Setting up a flow
The Flow is defined by a JSON file. Name of the file can be anything, but flow.json is a recommended name. Format of the data inside must be either JSON or JSONC. The flow.json file will be picked up, loaded and exposed by the Forms module.
nameLast part of the URL how to access the flow. Must be unique within the forms module.
N/A
publicIf flow can be accessed without any authentication (true/false).
false
require_rolesArray of named roles user must have in order to access the flow, "one of"
Empty array: []
enable_progressbarShould progress bar be visible (true/false).
true
show_user_menuShould user menu be visible (true/false).
true
verbose_logsAdditional logging options. Note. This can be added to forms module and will then be available in all flows.
"flow",
"session"Empty array []
stepsSteps to include for the flow. Recommendation is using @include directive for better overview.
Empty array []
pre_pipePipe executed before first step.
N/A
pipe Pipe to execute when last step is complete.
N/A
summaryStep used after last regular step is executed with success. Used for user notification etc. Do not put any logic here.
N/A
incompleteStep used after last regular step is executed with with failure. Used for user notification etc. Do not put any logic here.
N/A
buttons.
next_button
.enabled
Should next button be enabled (true/false).
true
buttons.
next_button.
textText on "Next" button
Next
buttons.
save_button.
enabledShould save button be enabled (true/false).
true
buttons.
save_button.
textText on "Save" button
Save
buttons.
restart_button.
enabledShould restart button be enabled (true/false).
true
buttons.
restart_button.
textText on "Restart" button
Restart
{
"name": "demo",
"public": false,
"require_roles": [
"role00"
],
"enable_progressbar": false,
"show_user_menu": true,
"verbose_logs": [
"flow",
"session"
],
"buttons": {
"next_button": {
"enabled": true,
"text": "flow00.next_button"
},
"save_button": {
"enabled": true,
"text": "flow00.create_button"
},
"restart_button": {
"enabled": true,
"text": "flow00.restart_button"
}
},
"steps": "@include:steps/*.json",
"pre_pipe": "forms.flow00.pre_pipe",
"pipe": "forms.flow00.finalize",
"incomplete": "@include:incomplete.json",
"summary": "@include:steps/summary.json"
}Before step 1
Sometimes it is necessary to perform some kind of logic before first step is rendered. Typically used for validation and or collecting data reqired in step 1.
For case like this use pre_pipe.
In order to consume data in subsequent steps, make sure the pipe returns one item. Data in this item will be accessible using {{flow.xxx}}