Шаблонизация
Для полей спецификации YaWL, которые поддерживают шаблонизацию, значения могут генерироваться динамически с использованием данных, полученных из состояния рабочего процесса. Язык шаблонизации — jq
. Подробнее см. документацию jq
По умолчанию шаблонизация не применяется для строковых значений полей — используйте интерполяцию строк
Входные данные для шаблонизатора
Входные данные для шаблонизатора различаются в зависимости от поля.
Поле | Входные данные |
---|---|
input |
Состояние рабочего процесса, которое было до начала выполнения шага. Например, если шаг верхнеуровневый — полное состояние рабочего процесса, если шаг внутри ветки выполнения шага Parallel — состояние рабочего процесса, отфильтрованное с помощью параметра input шага Parallel и измененное во время выполнения предыдущих шагов в ветке. |
output |
Выходные данные шага. |
Другие поля, которые поддерживают шаблонизацию | JSON-объект, отфильтрованный с помощью input . |
Примеры использования шаблонизатора
Пример состояния рабочего процесса:
{
"data": [
{
"some_property_0": "value_0"
},
{
"some_property_1": "value_1"
}
],
"a": {
"b": {
"c": "value_2"
}
}
}
Значение поля | Интерпретация шаблонизатора |
---|---|
this is just a string |
Строка без применения шаблонизации |
this is a value from workflow state \(.data[1].some_property_1) |
this is a value from workflow state value_1 |
\({x: 1, y: .a.b.c}) |
{“x”: 1, “y”: “value_2”} |
Расширения шаблонизатора
Расширения шаблонизатора позволяют вызывать jq-функции, реализующие нестандартную логику.
Переменная $global
Переменная $global
возвращает верхнеуровневое состояние рабочего процесса, которое было перед началом выполнения текущего верхнеуровнего шага. Например, в шаге Foreach фильтрация входных данных — обязательный атрибут, и переменную $global
можно использовать при выполнении последовательности шагов, указанных в do
, чтобы обратиться к верхнеуровневому состоянию рабочего процесса — состоянию рабочего процесса, которое было до начала выполнения шага Foreach.
Переменная $counter
Переменная $counter
возвращает текущий индекс операции (индексация начинается с нуля). Переменную можно использовать внутри полей input
и condition
шага While.
Yandex Lockbox
Специальная jq-функция lockboxPayload
позволяет получать значение секрета Yandex Lockbox по его идентификатору, ключу и (опционально) версии. Чтобы расширение работало корректно, в настройках рабочего процесса должен быть указан сервисный аккаунт, у которого есть права на просмотр содержимого секретов (например, с назначенной ролью lockbox.payloadViewer
). Функция доступна для использования во всех полях интеграционных шагов, кроме поля input
.
Описание аргументов jq-функции lockboxPayload
:
Очередность аргумента | Тип | Обязательное | Описание |
---|---|---|---|
1 | string |
Да | Идентификатор секрета. |
2 | string |
Да | Ключ секрета. |
3 | string |
Нет | Идентификатор версии секрета. |
lockboxPayload
Примеры использования jq-функции -
Получение последней версии секрета:
\(lockboxPayload("<идентификатор_секрета>"; "<ключ_секрета>"))
-
Получение указанной версии секрета:
\(lockboxPayload("<идентификатор_секрета>"; "<ключ_секрета>"; "<идентификатор_версии_секрета>"))