Orchestrator

워크플로우 구성

컨텐츠는 영어 텍스트를 Phrase Language AI를 이용해 기계 번역한 것입니다.

샘플 워크플로우를 계속 진행하려면 먼저 워크플로우를 구성해야 합니다.

Configure 탭에서 Edit parameters를 클릭하거나, 블록을 마우스 오른쪽 버튼으로 클릭하고 Edit parameters를 선택하여 Edit parameters 창을 열면 블록 구성에 액세스할 수 있습니다. 블록에 매개변수가 있으면 Add parameters 버튼이 Edit parameters로 바뀝니다.

예제의 블록을 구성하려면 다음 단계를 따르십시오.

  1. language-blue.svgList locales 작업에 대한 Edit parameters 창을 엽니다.

  2. Access token 및 Project 필드에는 런타임에 확인되는 동적 값이 필요합니다.

    1. Access token 필드의 링크 아이콘 Linking Icon을 클릭하고 circle-blue.svgFetch access tokens 작업을 선택합니다.

      링크가 녹색으로 바뀌고 필드를 편집할 수 있게 됩니다.

    2. 참조된 트리거 또는 작업의 속성에 액세스하기 위한 구문은 다음과 같습니다.

      {{$.path.to.value}}

      circle-blue.svgFetch access tokens의 출력은 다음과 같습니다.

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

      Access token 필드에 필요한 표현식은 {{$.tokens.strings_token}}입니다.

    3. Project 필드의 링크 아이콘 Linking Icon을 클릭하고 history-orange.svguploads:create 트리거를 선택합니다.

      링크가 녹색으로 바뀌고 필드를 편집할 수 있게 됩니다.

    4. history-orange.svguploads: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 필드에 필요한 표현식은 {{$.project.id}}입니다.

    5. 저장을 클릭합니다.

      Edit parameters 창이 닫히고 작업의 매개변수가 저장됩니다.

  3. 작업을 생성하려면 프로젝트의 기본 로캘 ID를 work-blue.svgCreate Job 작업에 전달해야 합니다. circle-blue.svgTransform JSON with jq 작업은 JSON 입력을 받아 지정된 필터를 적용한 다음 JSON을 출력합니다.

    1. Workflow blocks 창의 Actions 탭에서 phrase-jq를 검색합니다.

      circle-blue.svgTransform JSON with jq 작업 블록을 language-blue.svglist locales 작업 아래로 끌어다 놓아 두 블록을 연결합니다.

    2. Transform JSON with jq 작업의 Edit parameters 창을 엽니다.

    3. Input Type 드롭다운 필드에서 JSON을 선택합니다.

    4. Input 필드의 링크 아이콘 Linking Icon을 클릭하고 language-blue.svglist locales 작업을 선택합니다.

      링크가 녹색으로 바뀌고 필드를 편집할 수 있게 됩니다.

    5. Input 필드는 JSON 입력을 받습니다. 특수 고정 식($ 대신 @)을 사용하면 참조된 작업의 전체 출력이 필드로 전달됩니다.

      Input 필드에 표현식 {{@.outputs.result}}을 입력합니다.

    6. Jq 필드의 링크 아이콘 Linking Icon을 클릭하고 language-blue.svglist locales 작업을 선택합니다.

      링크가 녹색으로 바뀌고 필드를 편집할 수 있게 됩니다.

    7. default 속성이 true인 모든 요소를 포함하는 새 목록을 반환하는 로캘 목록 필터가 필요합니다.

      프로젝트당 하나의 기본 로캘만 존재할 수 있으며, 해당 목록에는 식별 가능하고 필수적인 요소가 하나 있습니다. 해당 요소는 .[0] 배열 구문을 사용하여 직접 액세스됩니다.

      Jq 필드에 map(select(.default))|.[0] 표현식을 입력합니다.

    8. 저장을 클릭합니다.

      Edit parameters 창이 닫히고 작업의 매개변수가 저장됩니다.

  4. 이제 work-blue.svgCreate a job 작업을 구성할 수 있으며 이전 블록의 패턴을 사용하게 됩니다.

    1. Access token 필드의 링크 아이콘 Linking Icon을 클릭하고 circle-blue.svgFetch access tokens 작업을 선택합니다.

      링크가 녹색으로 바뀌고 필드를 편집할 수 있게 됩니다.

      {{$.tokens.strings_token}} 표현식을 입력하십시오.

    2. Project 필드의 링크 아이콘 Linking Icon을 클릭하고 language-orange.svguploads:create 트리거를 선택하십시오.

      링크가 녹색으로 바뀌고 필드를 편집할 수 있게 됩니다.

      {{$.project.id}} 표현식을 입력하십시오.

    3. Source locale 필드의 링크 아이콘 Linking Icon을 클릭하고 Transform JSON with jq 작업을 선택하십시오.

      링크가 녹색으로 바뀌고 필드를 편집할 수 있게 됩니다.

      {{@.outputs.result}} 표현식을 입력하십시오.

    4. 기한은 sprig 또는 Expr 함수로 계산할 수 있지만, 이 예제에서는 API가 이해하는 하드코딩된 날짜를 사용합니다.

      Due date 필드에 2023-12-31T12:00:00Z를 입력하십시오.

    5. 저장을 클릭합니다.

      구성이 저장되며 Configure 탭에서 세부 정보를 확인할 수 있습니다.

  5. 모든 작업에는 논리 연산자 AND와 OR로 결합된 하나 이상의 조건을 설정할 수 있습니다. 이러한 조건은 런타임에 평가되며, 조건이 참으로 평가되는 경우에만 작업 및 해당 하위 항목이 실행됩니다.

    이를 예제에 반영하려면 work-blue.svgCreate a job 작업이 선택된 상태에서 Conditions 탭의 Edit conditions를 클릭하거나 블록을 마우스 오른쪽 버튼으로 클릭하고 Edit conditions를 선택하십시오.

    Edit conditionals 창이 열립니다.

    1. 이전 블록의 패턴에 따라 variable 필드를 language-orange.svguploads:create 트리거에 연결하고 {{$.upload.tag}} 표현식을 입력하십시오.

    2. 첫 번째 드롭다운 목록에서 NOT을 선택하여 조건식을 반전시키십시오.

    3. compare 드롭다운 목록에서 IsNull을 선택하십시오.

    4. 저장을 클릭합니다.

      조건이 Conditions 탭에 표시됩니다.

    업로드에 태그가 포함되어 있지 않으면(즉, 새 키/번역이나 업데이트된 키/번역이 없는 경우) 워크플로우가 이 지점에서 중단됩니다.

  6. 이제 작업에 대상 로캘이 필요합니다. 예시를 위해 스페인어(es-ES)용과 독일어(de-DE)용으로 두 개의 로캘이 생성됩니다. 로캘은 3단계에서와 같이 Edit parameters 창의 두 circle-blue.svgTransform JSON with jq 작업에 추가됩니다.

    1. 두 작업의 Input 필드에 {{@.outputs.result}} 표현식을 입력하고 language-blue.svgList locales 작업에 연결한 다음 매개변수를 저장하십시오.

    2. 한 작업의 Jg 필드에 map(select(.name == "es-ES"))|.[0] 표현식을 입력하고 language-blue.svgList locales 작업에 연결하십시오.

      매개변수를 저장하십시오.

    3. 두 번째 작업에 map(select(.name == "de-DE"))|.[0] 표현식을 입력하고 language-blue.svgList locales 작업에 연결하십시오.

      매개변수를 저장하십시오.

  7. 이제 로캘이 작업 생성에 적용됩니다.

    이전에 정의한 것과 동일한 패턴으로 두 개의 work-blue.svgAdd a target locale to a job 작업을 구성하십시오.

  8. 이제 작업을 시작할 수 있습니다.

    이전에 정의한 것과 동일한 패턴으로 work-blue.svgStart a job 작업을 구성하십시오.

온디맨드로 워크플로우 실행

블록이 구성되면 일정이나 웹후크와 같은 트리거를 기다리지 않고 워크플로우를 온디맨드로 실행하여 테스트할 수 있습니다.

다음 두 가지 방법 중 하나로 실행을 시작하십시오:

  • 워크플로우 편집기에서 Run 버튼을 사용하여 Run 대화 상자를 엽니다.

  • 공개 API에서 /orchestrator/api/v1/workflows/{workflow_id}/executions로 POST 요청을 보냅니다.

실행은 항상 워크플로우의 최신 리비전을 사용합니다. 리비전을 게시할 필요는 없지만 게시 유효성 검사를 통과해야 합니다. 실행할 때마다 새 실행 인스턴스가 생성되며, 이는 Manual 태그와 함께 Executions 페이지에 나열됩니다.

참고

온디맨드 실행은 차세대 워크플로우 엔진의 워크플로우에서만 사용할 수 있습니다. 레거시 워크플로우의 경우 편집기에 Run 버튼이 표시되지 않으며 API는 422 오류를 반환합니다.

액션 번들과 템플릿은 실행할 수 없으며, 워크플로우에는 반드시 소유자가 있어야 합니다.

도움이 되었습니까?
★ ★ ★ ★ ★

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.