Orchestrator

Configure a Workflow

Контент автоматически переведен с английского языка с помощью Phrase Language AI.

Чтобы продолжить с примером рабочего процесса, его необходимо настроить.

К настройке блока можно получить доступ, нажав Редактировать параметры на вкладке Настроить, или щёлкнув правой кнопкой мыши по блоку и выбрав Редактировать параметры, чтобы открыть окно Редактировать параметры. После того как у блока есть параметры, кнопка Добавить параметры переключается на Редактировать параметры.

Чтобы настроить блоки для примера, выполните следующие шаги:

  1. Откройте окно Редактировать параметры для действия language-blue.svgСписок языковых стандартов.

  2. Поля Токен доступа и Проект потребуют динамических значений, которые будут определяться во время выполнения.

    1. Нажмите на значок ссылки Linking Icon для поля Токен доступа и выберите действие circle-blue.svgПолучить доступные токены.

      Ссылка становится зеленой, и поле можно редактировать.

    2. Синтаксис для получения доступа к свойствам справочного триггера или действия следующий:

      {{$.path.to.value}}

      Результат для circle-blue.svgFetch access tokens будет следующим:

      { "tokens": {"strings_token": "STRINGS_TOKEN", "tms_token": "TMS_TOKEN"} }

      что делает выражение обязательным для поля Токен доступа {{$.tokens.strings_token}}.

    3. Нажмите на значок ссылки Linking Icon для поля Проект и выберите триггер history-orange.svguploads:create.

      Ссылка становится зеленой, и поле можно редактировать.

    4. Результат триггера history-orange.svguploads:create выглядит следующим образом:

      {
        "branch": {
          "name": "my_branch"
        },
        "event": "uploads:create",
        "message": "user-1 инициализировал загрузку файла file.yml в проекте name_1672734591_11 в ветке 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", // "формат": "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}}.

    5. Нажмите «Сохранить».

      Окно Редактировать параметры закрывается, и параметры для действия сохраняются.

  3. Язык по умолчанию проекта необходим для создания задания, передав ID в действие work-blue.svgСоздать задание. Действие circle-blue.svgПреобразовать JSON с помощью jq принимает входной JSON, применяет указанный фильтр и затем снова выводит JSON

    1. На вкладке Действия окна Блоки рабочего процесса найдите phrase-jq.

      Перетащите блок действия circle-blue.svgTransform JSON with jq ниже блока действия language-blue.svg«список языковых стандартов», чтобы соединить их.

    2. Откройте окно Редактировать параметры для действия Преобразовать JSON с помощью jq.

    3. Выберите JSON из выпадающего поля Тип ввода.

    4. Нажмите на значок ссылки Linking Icon для поля Ввод и выберите действие language-blue.svg«список языковых стандартов»<4>.

      Ссылка становится зеленой, и поле можно редактировать.

    5. Поле Input принимает JSON-данные. Специальное фиксированное выражение (@ вместо $) гарантирует, что весь результат справочного действия передаётся в поле.

      Введите выражение {{@.outputs.result}} в поле Input.

    6. Нажмите на значок ссылки Linking Icon для поля Jq и выберите действие language-blue.svglist locales.

      Ссылка становится зеленой, и поле можно редактировать.

    7. Требуется фильтровать список языковых стандартов так, чтобы возвращался новый список, содержащий все элементы, где свойство default равно true.

      В каждом проекте может быть только один языковой стандарт по умолчанию, и список имеет один идентифицируемый и обязательный элемент. Этот элемент доступен напрямую с помощью синтаксиса массива .[0].

      Введите выражение map(select(.default))|.[0] в поле Jq.

    8. Нажмите «Сохранить».

      Окно «Редактировать параметры» закрывается, и параметры действия сохраняются.

  4. Теперь действие work-blue.svgСоздать задание может быть настроено и будет использовать шаблоны из предыдущих блоков.

    1. Нажмите на значок ссылки Linking Icon для поля «Токен доступа» и выберите действие circle-blue.svg«Получить токены доступа».

      Ссылка становится зеленой, и поле можно редактировать.

      Введите выражение {{$.tokens.strings_token}}.

    2. Нажмите на значок ссылки Linking Icon для поля проект и выберите триггер language-orange.svguploads:создать<4>.

      Ссылка становится зеленой, и поле можно редактировать.

      Введите выражение {{$.project.id}}.

    3. Нажмите на значок ссылки Linking Icon для поля оригинал языковой стандарт и выберите действие Transform JSON with jq.

      Ссылка становится зеленой, и поле можно редактировать.

      Введите выражение {{@.outputs.result}}.

    4. Срок выполнения может быть рассчитан с помощью функций sprig или Expr, но для целей этого примера будет использована жестко закодированная дата, понятная API.

      В поле Срок выполнения введите 2023-12-31T12:00:00Z.

    5. Нажмите «Сохранить».

      Конфигурация сохранена, а детали можно просмотреть на вкладке Configure.

  5. Каждое действие может иметь одно или несколько условий, объединенных логическими И и ИЛИ. Эти условия оцениваются во время выполнения, и действие и его дочерние элементы будут выполняться только в том случае, если условие оценивается как истинное.

    Чтобы отразить это в примере, при выбранном действии work-blue.svgСоздать задание нажмите Редактировать условия на вкладке «Условия» или кликните правой кнопкой мыши по блоку и выберите Редактировать условия.

    Открывается окно «Edit conditionals».

    1. Следуя шаблонам из предыдущих блоков, свяжите поле переменная с триггером language-orange.svg«загрузить:создать» и введите выражение {{$.upload.tag}}.

    2. Выберите НЕ из первого выпадающего списка, чтобы инвертировать утверждение.

    3. Выберите IsNull из выпадающего списка сравнить.

    4. Нажмите «Сохранить».

      Условие представлено на вкладке «Условия».

    Рабочий процесс остановится на этом этапе, если загрузка не содержит тег (то есть не было новых или обновлённых ключей или переводов).

  6. Для задания теперь обязательны целевые языковые стандарты. Для целей примера будут созданы два языковых стандарта; один для испанского (es-ES) и один для немецкого (de-DE). Языковые стандарты будут добавлены к двум действиям circle-blue.svgПреобразовать JSON с помощью jq в окне «Редактировать параметры», как на этапе 3.

    1. В поле «Input» обоих действий введите выражение {{@.outputs.result}}, свяжите с действием language-blue.svg«Список языковых стандартов» и сохраните параметр.

    2. В поле «Jg» одного действия введите выражение map(select(.name == "es-ES"))|.[0] и свяжите с действием language-blue.svg«Список языковых стандартов».

      Сохраните параметр.

    3. Во втором действии введите выражение map(select(.name == "de-DE"))|.[0] и свяжите с действием language-blue.svg«Список языковых стандартов».

      Сохраните параметр.

  7. Языковые стандарты теперь будут применены к созданию задания.

    Настройте два действия work-blue.svg«Добавить целевой языковой стандарт к заданию» с теми же шаблонами, что были определены ранее.

  8. Теперь задание можно запустить.

    Настройте действие work-blue.svg«Запустить задание» с теми же шаблонами, которые были определены ранее.

Была ли эта статья полезной?

Sorry about that! In what way was it not helpful?

The article didn’t address my problem.
I couldn’t understand the article.
The feature doesn’t do what I need.
Other reason.

Note that feedback is provided anonymously so we aren't able to reply to questions.
If you'd like to ask a question, submit a request to our Support team.
Thank you for your feedback.