Чтобы продолжить работу с примером рабочего процесса, его необходимо настроить.
Чтобы перейти к настройке блока, нажмите «Изменить параметры» на вкладке или щелкните блок правой кнопкой мыши и выберите «Изменить параметры». Откроется окно . Когда у блока появляются параметры, кнопка меняется на .
Чтобы настроить блоки для примера, выполните следующие действия:
-
Откройте окно для действия
.«Список локалей»
-
Для полей и нужны динамические значения, которые определяются во время выполнения.
-
Нажмите значок связи
рядом с полем и выберите действие
.«Получить токены доступа»
Значок связи становится зеленым, после чего поле можно редактировать.
-
Для доступа к свойствам триггера или действия, на которые указывает ссылка, используется следующий синтаксис:
{{$.path.to.value}}Если вывод действия
выглядит так:«Получить токены доступа»
{ "tokens": {"strings_token": "STRINGS_TOKEN", "tms_token": "TMS_TOKEN"} }то для поля потребуется выражение
{{$.tokens.strings_token}}. -
Нажмите значок связи
рядом с полем и выберите триггер
.«uploads:create»
Значок связи становится зеленым, после чего поле можно редактировать.
-
Вывод триггера
выглядит примерно так:«uploads:create»
{ "branch": { "name": "my_branch" }, "event": "uploads:create", "message": "user-1 initialized file upload file.yml in project name_1672734591_11 within branch my_branch\n", "project": { "created_at": "2023-01-03 08:29:51 UTC", "id": "abcdabcdabcdabcd-11", "main_format": "yml", "name": "name_1672734591_10", "point_of_contact": null, "project_image_url": null, "slug": "name_1672734591_10", "updated_at": "2023-01-03 08:29:51 UTC" }, "upload": { "created_at": "2023-01-03 08:29:48 UTC", "filename": "file.yml", "format": "yml", "id": "upload-1", "state": "initialized", "summary": {}, "tag": null, "updated_at": "2023-01-03 08:29:48 UTC" }, "user": { "gravatar_uid": "29a2d1baa67d4ea524cf0f247f7bbb94", "id": "9c365b9a6f77c247c3de959f6152b231", "name": "Joe Sixpack", "username": "user-1" } }Для поля потребуется выражение
{{$.project.id}}. -
Нажмите Сохранить.
Окно закрывается, а параметры действия сохраняются.
-
-
Для создания задания нужен идентификатор локали проекта по умолчанию: его передают действию
. Действие«Создать задание»
принимает данные в формате JSON, применяет указанный фильтр и возвращает результат в формате JSON.«Преобразовать JSON с помощью jq»
-
На вкладке окна найдите phrase-jq.
Перетащите блок действия
под блок действия«Преобразовать JSON с помощью jq»
, чтобы соединить их.«Список локалей»
-
Откройте окно для действия
«Преобразовать JSON с помощью jq». -
В раскрывающемся списке выберите .
-
Нажмите значок связи
рядом с полем и выберите действие
.«Список локалей»
Значок связи становится зеленым, после чего поле можно редактировать.
-
Поле принимает данные в формате JSON. Специальное фиксированное выражение (
@вместо$) обеспечивает передачу в поле всего вывода действия, на которое указывает ссылка.Введите выражение
{{@.outputs.result}}в поле . -
Нажмите значок связи
рядом с полем и выберите действие
.«Список локалей»
Значок связи становится зеленым, после чего поле можно редактировать.
-
Нужен фильтр, который возвращает список локалей со значением свойства
default, равнымtrue.У проекта может быть только одна локаль по умолчанию, поэтому в полученном списке будет ровно один нужный элемент. К этому элементу можно обратиться напрямую с помощью синтаксиса массива
.[0].Введите выражение
map(select(.default))|.[0]в поле . -
Нажмите Сохранить.
Окно закрывается, а параметры действия сохраняются.
-
-
Теперь можно настроить действие
, используя приемы из предыдущих блоков.«Создать задание»
-
Нажмите значок связи
рядом с полем и выберите действие
.«Получить токены доступа»
Значок связи становится зеленым, после чего поле можно редактировать.
Введите выражение
{{$.tokens.strings_token}}. -
Нажмите значок связи
рядом с полем и выберите триггер
.«uploads:create»
Ссылка становится зеленой, и поле можно редактировать.
Введите выражение
{{$.project.id}}. -
Нажмите значок ссылки
для поля «» и выберите действие «
Transform JSON with jq».Ссылка становится зеленой, и поле можно редактировать.
Введите выражение
{{@.outputs.result}}. -
Срок выполнения можно рассчитать с помощью функций sprig или Expr, но в этом примере будет использоваться заранее заданная дата в формате, понятном API.
В поле «» введите 2023-12-31T12:00:00Z.
-
Нажмите Сохранить.
Конфигурация сохранена, и подробности можно просмотреть на вкладке «».
-
-
Каждое действие может иметь одно или несколько условий, объединённых логическими операторами
ANDиOR. Эти условия проверяются во время выполнения. Действие и его дочерние элементы выполняются только в том случае, если условие истинно.Чтобы отразить это в примере, выберите действие
и нажмите «Edit conditions» на вкладке «» или щёлкните правой кнопкой мыши по блоку и выберите «Edit conditions».«Create a job»
Открывается окно «».
-
По аналогии с предыдущими блоками свяжите поле «» с триггером
и введите выражение«uploads:create»
{{$.upload.tag}}. -
В первом раскрывающемся списке выберите «NOT», чтобы изменить результат проверки условия на противоположный.
-
В раскрывающемся списке «» выберите «IsNull».
-
Нажмите Сохранить.
Условие отображается на вкладке «».
Рабочий процесс остановится на этом этапе, если загрузка не содержит тега (то есть новых или обновлённых ключей и переводов не было).
-
-
Теперь для задания требуются целевые локали. В этом примере будут созданы две локали: для испанского (es-ES) и немецкого (de-DE). Как и на шаге 3, локали добавляются в окне «» для двух действий
.«Transform JSON with jq»
-
В поле «» обоих действий введите выражение
{{@.outputs.result}}, свяжите его с действиеми сохраните параметр.«List locales»
-
В поле «» одного из действий введите выражение
map(select(.name == "es-ES"))|.[0]и свяжите его с действием.«List locales»
Сохраните параметр.
-
Во втором действии введите выражение
map(select(.name == "de-DE"))|.[0]и свяжите его с действием.«List locales»
Сохраните параметр.
-
-
Теперь локали будут применяться при создании задания.
Настройте два действия
по той же схеме, что и ранее.«Add a target locale to a job»
-
Теперь задание можно запустить.
Настройте действие
по той же схеме, что и ранее.«Start a job»
После настройки блоков рабочий процесс можно запустить по требованию, чтобы протестировать его, не дожидаясь запуска по триггеру, например по расписанию или через вебхук.
Запустите выполнение одним из следующих способов:
-
В редакторе рабочих процессов нажмите кнопку «Run», чтобы открыть диалоговое окно «».
-
Отправьте запрос
POSTна адрес/orchestrator/api/v1/workflows/{workflow_id}/executionsв общедоступном API.
При запуске всегда используется последняя версия рабочего процесса. Версия не обязательно должна быть опубликована, но она должна пройти проверку для публикации. При каждом запуске создаётся новое выполнение рабочего процесса, которое отображается на странице «» с тегом «Manual».
Примечание
Запуск по требованию доступен только для рабочих процессов, использующих механизм выполнения нового поколения. Для устаревших рабочих процессов кнопка «Run» не отображается в редакторе, а API возвращает ошибку 422.
Пакеты действий и шаблоны запускать нельзя; кроме того, у рабочего процесса должен быть владелец.