Skip to main content

Worked example

A complete screen definition for a fictional "SAP system restart" start dialog, showing sections, a table, several field types, validation, and input binding. This screen would typically be the second screen in the dialog, receiving inputs from the first.

Inputs this screen expects

Using {{name}} bindings creates these input parameters, wired in the workflow editor to outputs of an earlier screen or script step:

InputTypeExample valueUsed for
systemNametext"PRD"Interpolated into the section title
isProductionbooleantrueShows/hides the approval section
defaultJobsinteger4Default for the parallel jobs field

The definition

[
{
"type": "section",
"id": "restart-options",
"title": "Restart options for {{systemName}}",
"description": "Configure how the restart is performed.",
"optional": false,
"fields": [
{
"type": "system",
"id": "target-system",
"label": "Target SAP system",
"required": true,
"multiSelect": false,
"systemType": "SAP_SYSTEM"
},
{
"type": "select",
"id": "restart-mode",
"label": "Restart mode",
"required": true,
"value": ["soft"],
"options": [
{ "label": "Soft restart (drain work processes)", "value": "soft" },
{ "label": "Hard restart", "value": "hard" }
]
},
{
"type": "integer",
"id": "parallel-jobs",
"label": "Parallel jobs",
"value": "{{defaultJobs}}",
"minValue": 1,
"maxValue": 16,
"step": 1
},
{
"type": "boolean",
"id": "notify-users",
"label": "Notify logged-on users before restart?",
"value": true,
"trueText": "Send notification",
"falseText": "Restart silently"
},
{
"type": "datetime",
"id": "start-at",
"label": "Start no earlier than",
"required": false,
"allowPast": false,
"helpText": "Leave empty to start immediately."
}
]
},
{
"type": "section",
"id": "approval",
"title": "Production approval",
"available": "{{isProduction}}",
"fields": [
{
"$comment": "Only shown for production systems; ticket format enforced by regex.",
"type": "text",
"id": "change-ticket",
"label": "Change ticket",
"required": true,
"regex": "/^CHG-[0-9]{6}$/",
"helpText": "Format: CHG- followed by six digits, e.g. CHG-004711."
},
{
"type": "text_secure",
"id": "approver-password",
"label": "Approver password",
"required": true
}
]
},
{
"type": "table",
"id": "pre-checks",
"title": "Pre-restart checks",
"optional": true,
"fields": [
{ "type": "text", "id": "check-name", "label": "Check" },
{ "type": "boolean", "id": "abort-on-failure", "label": "Abort on failure" }
],
"values": [
{
"row": [
{ "name": "check-name", "value": "Active batch jobs" },
{ "name": "abort-on-failure", "value": true }
]
},
{
"row": [
{ "name": "check-name", "value": "Update queue empty" },
{ "name": "abort-on-failure", "value": false }
]
}
]
}
]

What the user sees

  • Restart options for PRD: the title interpolates {{systemName}}. The user picks an SAP system, a restart mode (pre-selected to Soft restart), a parallel-jobs count defaulting to 4 (from {{defaultJobs}}), a notification toggle showing "Send notification / Restart silently", and an optional start time that cannot be in the past.
  • Production approval: only appears because isProduction resolved to true. The change ticket must match CHG-###### (the help text explains the format, as required whenever regex is set); the approver password is masked and stored encrypted.
  • Pre-restart checks: an optional table pre-filled with two rows; the user can edit, add, or remove rows, each with a text column and a boolean column.

What the workflow receives

Each field ID becomes an output parameter; the table produces a single output named after its ID:

OutputVariable typeExample value
target-systemSAP systemthe selected system's ID
restart-modeStringsoft
parallel-jobsInteger4
notify-usersBooleantrue
start-atString (date-time)2026-07-04T22:00
change-ticketStringCHG-004711
approver-passwordPassword (encrypted)
pre-checksString (table rows)the entered rows

If isProduction had been false, the approval section would not be shown, its required fields would not be enforced, and change-ticket / approver-password would simply be absent from the outputs (they define no default values).