• /
  • EnglishEspañolFrançais日本語한국어Português
  • ログイン今すぐ開始

この機械翻訳は、参考として提供されています。

英語版と翻訳版に矛盾がある場合は、英語版が優先されます。詳細については、このページを参照してください。

問題を作成する

ワークフロー定義スキーマ

プレビュー

この機能はまだ開発中ですが、ぜひお試しください。

この機能は現在、弊社のプレリリース ポリシーに従ってプレビュー プログラムの一部として提供されています。

スキーマ

ワークフロー定義は YAML で記述されます。キーはcamelCase命名規則を使用します。

スキーマプロパティ

プロパティ

必須またはオプション

タイプ

形式

制約

説明

name

必須

正規表現に準拠する必要があります

^[A-Za-z_][A-Za-z0-9_-]*$

最大長

: 100

name

値は大文字と小文字を区別しません。たとえば、

ExampleWorkflow

exampleworkflow

EXAMPLEWORKFLOW

はすべて同じワークフロー定義を表すものと見なされます。

description

オプション

正規表現に準拠する必要があります

^[A-Za-z0-9 _-]*$

最大長

: 200

ワークフローの目的を説明するワークフローの

description

workflowInputs

オプション

地図の地図

最大サイズ

: 100

ワークフローが受け入れるワークフロー入力のマップ。詳細なプロパティについては以下を参照してください。

ワークフロー入力

:

workflowInputs:
myInput1:
type: String
myInput2:
type: Number
defaultValue: 42
  • workflowInputs.<inputName> (必須)

    • タイプ: 文字列 (式安全なパターンに準拠)
    • 最小の長さ: 1
    • 最大長: 50
    • 説明: ワークフロー入力の名前。
  • workflowInputs.<inputName>.type (必須)

    • タイプ: 列挙型 (Boolean, List, Map, String, Int, Float)
    • 説明: ワークフロー入力のデータ型。
  • workflowInputs.<inputName>.defaultValue (オプション)

    • タイプ: 任意; typeに準拠する必要があります。
    • 説明: ワークフロー入力のデフォルト値。
  • workflowInputs.<inputName>.required (オプション)

    • タイプ: ブール値 (TrueFalse)。
    • 説明: このフィールドのデフォルト値は「True」です。
  • workflowInputs.<inputName>.enumValues (オプション)

    • タイプ: リスト (String)。
    • 説明: このフィールドのデフォルト値は空のリスト{}です。workflowInput タイプが Enum の場合、これは必須です。
  • workflowInputs.<inputName>.validations (オプション)

    • タイプ: マップの配列。
    • 説明: ユーザーが提供するワークフロー入力に対して実行される検証。これはオプションのフィールドです。ここで説明するプロパティは、すべての検証タイプに存在します。特定の検証タイプは、検証タイプのセクションで説明されているように、追加のプロパティをサポートします。
  • validations[*].type (必須)

  • validations[*].errorMessage (必須)

    • タイプ: 文字列
    • 説明: 特定の検証が失敗したときにユーザーが表示するエラーメッセージ。

検証用のサンプルYAML

name: calendar_demo
workflowInputs:
timezone:
type: String
defaultValue: 'America/Los_Angeles'
validations:
- type: regex
errorMessage: "The provided timezone is not correct"
pattern: "^[A-Za-z]+\/[A-Za-z_]+(?:\/[A-Za-z_]+)?$"
- type: maxLength
errorMessage: "Timezone length should be less than 100"
length: 100
accountId:
type: Int
validations:
- type: minIntValue
errorMessage: "Account id should be greater than 100000"
minValue: 100000
- type: maxIntValue
errorMessage: "Account id should be less than 9999999"
maxValue: 9999999
steps:
- name: getCurrentTime
type: action
action: http.get
version: 1
inputs:
url: 'https://worldtimeapi.org/api/timezone/${{ .workflowInputs.timezone }}'
selectors:
- name: timezone
expression: '.responseBody | fromjson.abbreviation'
- name: datetime
expression: '.responseBody | fromjson.datetime'

手順

プロパティ

必須またはオプション

タイプ

制約

説明

steps

必須

地図の配列

ワークフロー定義の実行時に実行される手順。少なくとも 1 つのステップが必要です。ここで説明するプロパティは、すべてのステップ タイプに存在します。特定のステップ タイプでは、

「ステップ タイプ」

セクションで説明されている追加のプロパティがサポートされます。

重要

ステップは、 steps配列で定義された順序で実行されます。異なる順序付けが必要な場合は、 steps[*].nextプロパティをジャンプするステップの名前に設定してjumpを実行できます。

共通ステッププロパティ

プロパティ

必須またはオプション

タイプ

形式

制約

説明

steps[*].name

必須

式セーフパターン

に準拠する必要があり、

end

にすることはできません。

最大長:

100

steps[*].next

によって参照されるステップの名前。特殊キーワード

end

continue

、または

break

は使用できません。これらは、終了ステップ、ループの継続、またはループからの脱出を示すために使用されます。

steps[*].type

必須

ステップのタイプ。実行時にステップが何を行うかを示します。利用可能なオプションについては、以下の

ステップ タイプ

を参照してください。

steps[*].next

オプション

表現の安全パターンに準拠する必要があります

このステップが正常に完了したときに実行される次のステップの名前。特別なキーワード end を使用すると、このステップが最後に実行されることを示すことができます。

next

が省略されている場合、定義

steps

配列内の次のエントリが暗黙的な次のステップとして使用されます。次のエントリがない場合、ワークフローは完了します。

steps[*].ignoreErrors

オプション

ブール値

ignoreErrors

は、ワークフローのステップ内の設定オプションです。 デフォルトは false です。

ignoreErrors

true

に設定すると、ワークフローでは、このステップの実行中にエラーが発生してもワークフロー全体が失敗しないことが保証されます。代わりに、ワークフローは後続のステップの実行を継続します。

ステップの種類

アクション

特定のアクションを実行するステップ。利用可能なオプションについては、アクション カタログを参照してください。

  • steps[*].action (必須)

    • タイプ: 文字列
    • 説明: 実行するアクション関数の完全修飾名。次の規則に従う必要があります。 <company domain>.<category of work>.<action name in camelCase>

:

  • New Relic サービスを使用したアクション (例: NerdGraph 経由): newrelic.dashboards.getDashboard

  • Slackを使ったアクション: slack.chat.postMessage

  • steps[*].version (必須)

    • タイプ: 文字列
    • 説明: 実行するアクション関数のバージョン。
  • steps[*].inputs (オプション)

    • タイプ: 値のマップ(式を含む)

    • 説明

      • アクション関数に渡す入力。受け入れられる特定の入力は、各アクションによって定義されます。
      • 入力には式を使用できます。詳細については、「式文字列」セクションを参照してください。

    重要

    機密データ ( APIキーやシークレット、PII、PHI、または個人を特定できるデータ) を引数として渡さないでください。

  • steps[*].inputs.selectors (オプション)

    • タイプ: nameexpressionの形式のマップのリスト。

    • 説明

      • selectors入力を使用すると、指定された要素のみを返すように出力を再定義できます。
      • 表現が使えます。詳細については、「式文字列」セクションを参照してください。

:

  • この例では、http.get アクションの応答としてtimezonedatetimeを取得しています。
name: calendar_demo
workflowInputs:
timezone:
type: String
defaultValue: 'America/Los_Angeles'
accountId:
type: Int
steps:
- name: getCurrentTime
type: action
action: http.get
version: 1
inputs:
url: 'https://worldtimeapi.org/api/timezone/${{ .workflowInputs.timezone }}'
selectors:
- name: timezone
expression: '.responseBody | fromjson.abbreviation'
- name: datetime
expression: '.responseBody | fromjson.datetime'

ループ

ループは、 inで定義された特定のコレクションを反復処理し、反復ごとにループ変数indexelementを作成します。これらのループ変数は、式${{ .steps.<loopStepName>.loop.element }}または ${{ .steps.<loopStepName>.loop.index }

詳細については、以下をご覧ください。

  • steps[*].for (必須)

    • タイプ: 定数
    • 説明: ループの開始を知らせる信号
  • steps[*].in (必須)

    • タイプ: 文字列 (式)

    • 説明: 要素のコレクションとして評価する必要がある式。

    • steps[*].steps (オプション)

      • 説明: ループの各反復で実行される手順。上記の手順については定義を参照してください。

:

name: myWorkflow
steps:
- name: loopStep
type: loop
for:
in: "${{ [range(1; 5)] }}"
steps:
- name: step1
type: action
action: newrelic.ingest.sendLogs
version: 1
inputs:
logs:
- message: "Loop: ${{ .steps.loopStep.loop.element }}"

スイッチ

  • さまざまな条件をチェックし、true と評価される最初の分岐を実行するステップ。

  • スイッチには、リスト内に任意の数のcondition要素を含めることができます。条件を順番にチェックし、最初に true と評価される条件を処理します。いずれも true と評価されない場合は、 steps[*].nextで定義されているnextステップが実行されます。

    • steps[*].switch (必須)

      • タイプ: 配列
      • 説明: 評価する条件の順序付きリストを指定する、スイッチ ケースの配列。
    • steps[*].switch[*].condition (必須)

      • タイプ: 文字列 ()
      • 説明: スイッチケースの状態。true と評価された場合、ケースnextステップが実行されます。
      • 詳細については、「式文字列」セクションを参照してください。
    • steps[*].switch[*].next (必須)

      • タイプ: 文字列 (式安全なパターンに準拠)
      • 説明: ケースの条件が true と評価された場合に実行するステップの名前。特別なキーワードendを使用すると、このステップが最後に実行されることを示すことができます。
    - name: hasCompleted
    type: switch
    switch:
    - condition: ${{ .steps.waitForCompletion.outputs.automationExecutionStatus == "Failed" }}
    next: displayError
    - condition: ${{ .steps.waitForCompletion.outputs.automationExecutionStatus == "Success" }}
    next: displaySuccess
    next: displayUnexpected

待って

ワークフローの実行を指定された秒数だけ一時停止してから続行するステップ。

待機ステップでは、1 つ以上のシグナルをリッスンすることもできます。各信号には、対応する次のステップがリスト内に定義されている必要があります。待機期間中に信号が受信された場合、最初に受信した信号が処理され、ワークフローは定義された次のステップを実行します。信号が受信されない場合、待機期間の終了後にワークフローは通常どおり続行されます。

信号から受信した値は待機ステップの出力に保存され、後続のステップでロジックまたは処理に使用できます。

:

name: waitSignalExample
workflowInputs:
steps:
- name: waitStep
type: wait
seconds: 300
signals: [{name: 'mySignalName', next: 'firstStep'}]
- name: endStep
type: action
action: newrelic.instrumentation.log
version: 1
inputs:
message: "didn't get signal"
next: end
- name: firstStep
type: action
action: newrelic.instrumentation.log
version: 1
inputs:
message: ${{ .steps.waitStep.outputs.signalInputs.myString }}
  • steps[*].seconds (必須)

    • タイプ: 数値
    • 説明: ワークフローの実行を続行する前に待機する秒数。
  • steps[*].signals

    • タイプ: 配列
    • 説明: 受信されるとプログラムフローを転換する信号。
  • steps[*].signals[*].name

    • タイプ: 文字列
    • 説明: リッスンする信号の名前。
  • steps[*].signals[*].next

    • タイプ: 文字列
    • 説明: 指定されたシグナルを受信した場合に実行するステップ。

割り当てる

ワークフロー全体で使用する変数を定義するステップ。このステップでは、後続のステップで参照できる変数に値を割り当てます。このステップ タイプでは、すべての変数を 1 か所で定義することで、ワークフローがより読みやすく最適化されます。

サンプルワークフロー:

name: sampleWorkflowWithAssign
description: WorkflowAssignDemo
workflowInputs:
initialValue:
type: String
anotherValue:
type: Int
steps:
- name: runAction
type: action
action: internal.http.post
version: 1
inputs:
url: 'http://localhost:8505/tasks/gc' # temporal-activity-worker-java service port
selectors:
- name: statusCode
expression: '.statusCode'
- name: responseBody
expression: '.responseBody'
- name: variableInitialization
type: assign
inputs:
stringVar: "${{ .workflowInputs.initialValue }}"
intVar: "${{ .workflowInputs.anotherValue }}"
concatenationVar: "${{ .workflowInputs.initialValue }} - concatenated"
booleanVar: true
mapVar:
key1: "value1"
key2: "${{ .workflowInputs.initialValue }}"
listVar:
- "listItem1"
- "${{ .workflowInputs.initialValue }}"
- "${{ .workflowInputs.anotherValue }}"
statusCode: ${{ .steps.runAction.outputs.statusCode }}
- name: wait
type: wait
seconds: 2
- name: logVariables
type: action
action: newrelic.ingest.sendLogs
version: 1
inputs:
logs:
- message: "stringVar: ${{ .steps.variableInitialization.outputs.stringVar }}"
- message: "intVar: ${{ .steps.variableInitialization.outputs.intVar }}"
- message: "concatenationVar: ${{ .steps.variableInitialization.outputs.concatenationVar }}"
- message: "booleanVar: ${{ .steps.variableInitialization.outputs.booleanVar }}"
- message: "mapVar: ${{ .steps.variableInitialization.outputs.mapVar | tojson }}"
- message: "listVar: ${{ .steps.variableInitialization.outputs.listVar | tojson }}"
- message: "statusCode: ${{ .steps.variableInitialization.outputs.statusCode }}"
  • steps[*].inputs (必須)

    • タイプ: 値のマップ(を含む)
    • 説明
      • 入力は変数名とそれに割り当てられた値のマップです。秘密参照が変数に割り当てられると、秘密参照のままとなり、実際の値に変換されません。ただし、他の式 (ワークフロー入力など) は評価され、実際の値に変換されます。
    • 許可される入力タイプ: IntegerDoubleBooleanStringArrayMap

検証の種類

検証タイプ

プロパティ

必須またはオプション

タイプ

説明

regex

validations[*].pattern

必須

指定された正規表現パターンに対してワークフロー入力値を検証します。

maxIntValue

validations[*].maxValue

必須

整数

ワークフローの入力値が指定された maxValue より小さいことを検証します。

minIntValue

validations[*].minValue

必須

整数

ワークフローの入力値が指定された minValue よりも大きいことを検証します。

maxLength

validations[*].length

必須

整数

ワークフロー入力文字列とコレクションの最大長を検証します (

Array, Set, Map, etc.

)。

共有型

式文字列

いくつかのプロパティは、ワークフロー実行中に評価される埋め込み式を含む文字列値を受け入れ、ワークフロー定義で動的な値を有効にします。

式文字列には、それぞれ二重中括弧で囲まれた 1 つ以上の式を含めることができます。中括弧内の内容はjqを使用して評価され、値にアクセスして操作するための強力な機能が提供されます。

:

ワークフロー入力文字列の長さを取得します。

${{ .workflowInputs.myString | length }}

式を検証およびテストするには、 JQ Playgroundを使用します。

式のプロパティ

式を使用して、多数のプロパティにアクセスできます。これらのプロパティはscopeオブジェクト内に存在するため、スコープ オブジェクトのこれらのプロパティにアクセスするには、式をピリオド(.)で始める必要があります。

利用可能なプロパティは次のとおりです。

  • workflowInputs - 開始時にワークフローに渡される入力を含むオブジェクト。

:

${{ .workflowInputs.myInput }}

  • steps - ワークフローの各ステップのプロパティを含むオブジェクト
  • steps.<stepName> - 特定のステップのプロパティを含むオブジェクト
  • steps.<stepName>.outputs - ステップまたはアクションに固有の結果プロパティを含むオブジェクト。

: ${{ .steps.myStep.outputs.myResult }}

表現評価結果

単一の jq 式は任意の JSON 型に評価できます。ただし、式文字列の最終結果は、文字列に式のみが含まれているか、追加のコンテンツが含まれているかによって異なります。

単一の式(JSON 型を保持) :

式文字列が周囲のコンテンツのない 1 つの式のみで構成されている場合は、元の JSON 型を維持しながら jq 式の結果に評価されます。たとえば、 ${{ .workflowInputs.myArray }}配列として評価されます。これは、ワークフロー内で複雑なデータ構造を渡すのに役立ちます。

複数の式または混合コンテンツ(文字列に変換されます) :

式文字列に単一の式以外のコンテンツが含まれている場合、文字列の結果に評価されます。これは、式の前後にコンテンツがある場合、または文字列内に複数の式がある場合に発生します。文字列内の各式は評価され、文字列表現に変換されます。

重要

jq 式が null と評価されると、null ノードが返されます。たとえば、式${{ .workflowInputs.missingInput }}は、ワークフロー入力としてmissingInputが指定されていない場合は null を返します。

:

myArrayの値が[1, 2, 3]であると仮定します。

式文字列

結果データ

結果タイプ

${{ .workflowInputs.myArray }}

[1, 2, 3]

数字の配列

${{ .workflowInputs.myArray | length }}

3

${{ .workflowInputs.myArray | length > 0 }}

トゥルー

ブール値

Input is not empty: ${{ .workflowInputs.myArray | length > 0 }}

"Input is not empty: true"

${{ .workflowInputs.myArray }} has length ${{ .workflowInputs.myArray | length }}

"has length 3"

表現安全なパターン

式で使用できるプロパティは、次の条件に準拠する必要があります。 ^[A-Za-z_][A-Za-z0-9_]*$

秘密の参照

シークレット値は、シークレット サービスで検索するシークレットの名前を指定する参照文字列を介してアクションで使用できます。ワークフロー定義でシークレットを参照するには、次の構文を使用します。

  • ${{ :secrets:<SECRET_NAME> }} 秘密は namespace
  • ${{ :secrets:<NAMESPACE>:<SECRET_NAME> }} 秘密のために namespace
  • ${{ :secrets:<SCOPE>:<NAMESPACE>:<SECRET_NAME> }} スコープとネームスペースのシークレットについては。 現時点では、スコープはACCOUNTまたはORGANIZATIONのみを受け入れます。

式文字列には、シークレット参照と JQ 式の組み合わせand/or複数のシークレット参照) を含めることができます。

:

steps:
- name: mySecretStep
type: action
action: newrelic.instrumentation.log
inputs:
message: My message
licenseKey: ${{ :secrets:<SECRET_NAME> }}
steps:
- name: bearer_auth
type: action
action: utils.http.post
inputs:
headers:
Authorization: Bearer ${{ :secrets:<SECRET_NAME> }}

カレンダーのデモ

ワークフロー入力、HTTP アクション、セレクター、待機ステップ、NRQL クエリ、スイッチ ステートメント、Slack 通知などの複数のワークフロー機能を示す完全なワークフロー例。

name: calendar_demo
workflowInputs:
timezone:
type: String
defaultValue: 'America/Los_Angeles'
accountId:
type: Int
steps:
- name: getCurrentTime
type: action
action: http.get
version: 1
inputs:
url: 'https://worldtimeapi.org/api/timezone/${{ .workflowInputs.timezone }}'
selectors:
- name: timezone
expression: '.responseBody | fromjson.abbreviation'
- name: datetime
expression: '.responseBody | fromjson.datetime'
- name: logTime
type: action
action: newrelic.instrumentation.log
version: 1
inputs:
message: 'DEMO: In the ${{ .steps.getCurrentTime.outputs.timezone }} timezone, the current time is ${{ .steps.getCurrentTime.outputs.datetime }}'
licenseKey: ${{ :secrets:STAGING_NEW_RELIC_LICENSE_KEY }}
- name: wait
type: wait
seconds: 1
- name: queryForLog
type: action
action: newrelic.nrql.query
version: 1
inputs:
accountIds: ['${{ .workflowInputs.accountId }}']
query: FROM Log SELECT * WHERE message LIKE 'DEMO:%${{ .steps.getCurrentTime.outputs.datetime }}'
- name: checkQuery
type: switch
switch:
- condition: ${{ .steps.queryForLog.outputs.results | length > 0 }}
next: postResultsMessage
- name: postWaitingMessage
type: action
action: slack.chat.postMessage
version: 1
inputs:
channel: test-channel-workflow
text: Waiting for log message...
token: ${{ :secrets:dn_staging_slack_token }}
next: wait
- name: postResultsMessage
type: action
action: slack.chat.postMessage
version: 1
inputs:
channel: test-channel-workflow
text: 'Found log message! ${{ .steps.queryForLog.outputs.results[0].message }}'
token: ${{ :secrets:dn_staging_slack_token }}
Copyright © 2025 New Relic株式会社。

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.