Шаблонизация
Для полей спецификации 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 |
Нет | Идентификатор версии секрета. |
Примеры использования jq-функции lockboxPayload
-
Получение последней версии секрета:
\(lockboxPayload("<идентификатор_секрета>"; "<ключ_секрета>")) -
Получение указанной версии секрета:
\(lockboxPayload("<идентификатор_секрета>"; "<ключ_секрета>"; "<идентификатор_версии_секрета>"))