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が必要です。この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であるすべての要素を含む新しいリストを返す、ロケールリストのフィルタが必要です。

      各プロジェクトのデフォルトロケールは1つだけなので、このリストには目的の要素が1つだけ含まれます。その要素には、.[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で結合された1つ以上の条件を設定できます。これらの条件は実行時に評価され、条件が真と評価された場合にのみ、アクションとその子要素が実行されます。

    これを例に反映させるには、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)用の2つのロケールを作成します。ロケールは、ステップ3と同様にEdit parametersウィンドウ内の2つの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. 2番目のアクションに式 map(select(.name == "de-DE"))|.[0] を入力し、language-blue.svgList locales アクションにリンクします。

      パラメーターを保存します。

  7. これで、ロケールがジョブ作成に適用されます。

    以前に定義したのと同じパターンを使用して、2つの work-blue.svgAdd a target locale to a job アクションを設定します。

  8. これでジョブを開始できます。

    以前に定義したのと同じパターンを使用して、work-blue.svgStart a job アクションを設定します。

ワークフローのオンデマンド実行

ブロックの設定後、スケジュールやWebhookなどのトリガーを待たずに、ワークフローをオンデマンドで実行してテストできます。

以下のいずれかの方法で実行を開始します。

  • ワークフローエディターで Run ボタンを使用して、Run ダイアログを開きます。

  • パブリックAPIで /orchestrator/api/v1/workflows/{workflow_id}/executions への POST リクエストを送信します。

実行には常にワークフローの最新リビジョンが使用されます。リビジョンは公開されている必要はありませんが、公開時の検証に合格している必要があります。ワークフローを実行するたびに新しい実行記録が作成され、Executions ページに Manual タグ付きで一覧表示されます。

備考

オンデマンド実行は、次世代ワークフローエンジン上のワークフローでのみ利用可能です。レガシーワークフローの場合、エディターには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.