Azure Logic Apps のワークフロー定義言語のスキーマ参照Schema reference for Workflow Definition Language in Azure Logic Apps

Azure Logic Apps でロジック アプリを作成するとき、ロジック アプリには基になるワークフロー定義があり、ロジック アプリで実行される実際のロジックが記述されています。When you create a logic app in Azure Logic Apps, your logic app has an underlying workflow definition that describes the actual logic that runs in your logic app. そのワークフロー定義は、JSON を使って作成し、ワークフロー定義言語スキーマによって検証される構造に従います。That workflow definition uses JSON and follows a structure that's validated by the Workflow Definition Language schema. このリファレンスでは、この構造に関する概要と、ワークフロー定義で属性がスキーマによってどのように定義されるかを説明します。This reference provides an overview about this structure and how the schema defines attributes in your workflow definition.

ワークフロー定義の構造Workflow definition structure

ワークフロー定義には、常に、ロジック アプリをインスタンス化するためのトリガーと、トリガーの発動後に実行される 1 つ以上のアクションが含まれます。A workflow definition always includes a trigger for instantiating your logic app, plus one or more actions that run after the trigger fires.

ワークフロー定義の高レベルな構造を次に示します。Here is the high-level structure for a workflow definition:

"definition": {
  "$schema": "<workflow-definition-language-schema-version>",
  "actions": { "<workflow-action-definitions>" },
  "contentVersion": "<workflow-definition-version-number>",
  "outputs": { "<workflow-output-definitions>" },
  "parameters": { "<workflow-parameter-definitions>" },
  "staticResults": { "<static-results-definitions>" },
  "triggers": { "<workflow-trigger-definitions>" }
}
AttributeAttribute 必須Required 説明Description
definition はいYes ワークフロー定義の開始要素The starting element for your workflow definition
$schema ワークフロー定義を外部参照する場合のみOnly when externally referencing a workflow definition ワークフロー定義言語のバージョンが記述されている JSON スキーマ ファイルの場所。次の場所にあります。The location for the JSON schema file that describes the Workflow Definition Language version, which you can find here:

https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json

actions いいえNo ワークフローの実行時に実行される 1 つまたは複数のアクションの定義。The definitions for one or more actions to execute at workflow runtime. 詳細については、「トリガーとアクション」を参照してください。For more information, see Triggers and actions.

アクションの最大個数:250Maximum actions: 250

contentVersion いいえNo ワークフロー定義のバージョン番号。既定値は "1.0.0.0" です。The version number for your workflow definition, which is "1.0.0.0" by default. ワークフローを展開するときに正しい定義であることを識別して確認できるように、使用する値を指定します。To help identify and confirm the correct definition when deploying a workflow, specify a value to use.
outputs いいえNo ワークフローの実行から返される出力の定義。The definitions for the outputs that return from a workflow run. 詳細については、「出力」を参照してください。For more information, see Outputs.

出力の最大個数:10Maximum outputs: 10

parameters いいえNo ワークフローにデータを渡す 1 つ以上のパラメーターの定義。The definitions for one or more parameters that pass data into your workflow. 詳細については、「パラメーター」を参照してください。For more information, see Parameters.

パラメーターの最大個数:50Maximum parameters: 50

staticResults いいえNo 静的な結果がこれらのアクションで有効になっている場合に、アクションによってモック出力として返される 1 つまたは複数の静的な結果の定義。The definitions for one or more static results returned by actions as mock outputs when static results are enabled on those actions. 各アクションの定義で、runtimeConfiguration.staticResult.name 属性は staticResults 内部の対応する定義を参照します。In each action definition, the runtimeConfiguration.staticResult.name attribute references the corresponding definition inside staticResults. 詳細については、「静的な結果」を参照してください。For more information, see Static results.
triggers いいえNo ワークフローをインスタンス化する 1 つまたは複数のトリガーの定義。The definitions for one or more triggers that instantiate your workflow. 複数のトリガーを定義できます。ワークフロー定義言語しか利用できず、Logic Apps デザイナーを使って視覚的に作成することはできません。You can define more than one trigger, but only with the Workflow Definition Language, not visually through the Logic Apps Designer. 詳細については、「トリガーとアクション」を参照してください。For more information, see Triggers and actions.

トリガーの最大個数:10Maximum triggers: 10

トリガーとアクションTriggers and actions

ワークフロー定義の triggers および actions セクションでは、ワークフローの実行中に発生する呼び出しを定義します。In a workflow definition, the triggers and actions sections define the calls that happen during your workflow's execution. これらのセクションの構文と詳細については、「ワークフローのトリガーとアクション」をご覧ください。For syntax and more information about these sections, see Workflow triggers and actions.

出力Outputs

outputs セクションでは、実行完了時にワークフローが返すことのできるデータを定義します。In the outputs section, define the data that your workflow can return when finished running. たとえば、各実行から特定の状態または値を追跡するには、ワークフローの出力がそのデータを返すように指定します。For example, to track a specific status or value from each run, specify that the workflow output returns that data.

注意

サービスの REST API からの受信要求に応答するときは、outputs を使わないでください。When responding to incoming requests from a service's REST API, do not use outputs. 代わりに、Response アクションの種類を使います。Instead, use the Response action type. 詳しくは、「ワークフローのトリガーとアクション」をご覧ください。For more information, see Workflow triggers and actions.

出力の定義の一般的な構造を次に示します。Here is the general structure for an output definition:

"outputs": {
  "<key-name>": {
    "type": "<key-type>",
    "value": "<key-value>"
  }
}
AttributeAttribute 必須Required TypeType 説明Description
<key-name><key-name> はいYes stringString 出力戻り値のキーの名前The key name for the output return value
<key-type><key-type> はいYes int、float、string、securestring、bool、array、JSON オブジェクトint, float, string, securestring, bool, array, JSON object 出力戻り値の型The type for the output return value
<key-value><key-value> はいYes <key-type> と同じSame as <key-type> 出力の戻り値The output return value

ワークフローの実行からの出力を取得するには、Azure portal でロジック アプリの実行履歴と詳細を確認するか、または Workflow REST API を使います。To get the output from a workflow run, review your logic app's run history and details in the Azure portal or use the Workflow REST API. Power BI などの外部システムに出力を渡してダッシュボードを作成することもできます。You can also pass output to external systems, for example, Power BI so that you can create dashboards.

parametersParameters

parameters セクションでは、ワークフロー定義が展開時に入力を受け取るために使用するすべてのワークフロー パラメーターを定義します。In the parameters section, define all the workflow parameters that your workflow definition uses at deployment for accepting inputs. パラメーターの宣言とパラメーターの値の両方が、展開時に必要です。Both parameter declarations and parameter values are required at deployment. 他のワークフロー セクションでこれらのパラメーターを使用する前に、これらのセクションですべてのパラメーターを宣言したことを確認してください。Before you can use these parameters in other workflow sections, make sure that you declare all the parameters in these sections.

パラメーターの定義の一般的な構造を次に示します。Here is the general structure for a parameter definition:

"parameters": {
  "<parameter-name>": {
    "type": "<parameter-type>",
    "defaultValue": "<default-parameter-value>",
    "allowedValues": [ <array-with-permitted-parameter-values> ],
    "metadata": {
      "key": {
        "name": "<key-value>"
      }
    }
  }
},
AttributeAttribute 必須Required TypeType 説明Description
<parameter-type><parameter-type> はいYes int、float、string、securestring、bool、array、JSON オブジェクト、secureobjectint, float, string, securestring, bool, array, JSON object, secureobject

メモ:すべてのパスワード、キー、およびシークレットで、securestring 型と secureobject 型を使用します。GET 操作では、これらの型は返されません。Note: For all passwords, keys, and secrets, use the securestring and secureobject types because the GET operation doesn't return these types. パラメーターのセキュリティ保護の詳細については、ロジック アプリのセキュリティ保護に関するページを参照してくださいFor more information about securing parameters, see Secure your logic app

パラメーターの型The type for the parameter
<default-parameter-values><default-parameter-values> はいYes type と同じSame as type ワークフローのインスタンス化時に値が指定されていない場合の、既定のパラメーター値The default parameter value when no value is specified when the workflow instantiates
<array-with-permitted-parameter-values><array-with-permitted-parameter-values> いいえNo ArrayArray パラメーターが受け取ることのできる値の配列An array with values that the parameter can accept
metadata いいえNo JSON オブジェクトJSON object 他のパラメーターの詳細。たとえば、ロジック アプリやフローの名前や読み取り可能な説明、または Visual Studio や他のツールによって使われる設計時のデータAny other parameter details, for example, the name or a readable description for your logic app or flow, or the design-time data used by Visual Studio or other tools

静的な結果Static results

staticResults 属性では、アクションの静的な結果の設定が有効になっている場合に、アクションが返すアクションのモック outputs および status を定義します。In the staticResults attribute, define an action's mock outputs and status that the action returns when the action's static result setting is turned on. アクションの定義で、runtimeConfiguration.staticResult.name 属性は staticResults 内部の静的な結果の定義の名前を参照します。In the action's definition, the runtimeConfiguration.staticResult.name attribute references the name for the static result definition inside staticResults. 静的な結果を設定してモック データでロジック アプリをテストする方法をご確認ください。Learn how you can test logic apps with mock data by setting up static results.

"definition": {
   "$schema": "<...>",
   "actions": { "<...>" },
   "contentVersion": "<...>",
   "outputs": { "<...>" },
   "parameters": { "<...>" },
   "staticResults": {
      "<static-result-definition-name>": {
         "outputs": {
            <output-attributes-and-values-returned>,
            "headers": { <header-values> },
            "statusCode": "<status-code-returned>"
         },
         "status": "<action-status>"
      }
   },
   "triggers": { "<...>" }
}
AttributeAttribute 必須Required TypeType 説明Description
<static-result-definition-name><static-result-definition-name> はいYes stringString アクションの定義が runtimeConfiguration.staticResult オブジェクトを介して参照できる、静的な結果の定義の名前。The name for a static result definition that an action definition can reference through a runtimeConfiguration.staticResult object. 詳細については、「ランタイム構成の設定」を参照してください。For more information, see Runtime configuration settings.

任意の一意の名前を使用できます。You can use any unique name that you want. 既定では、この一意の名前に数値が追加されます。この数値は必要に応じてインクリメントされます。By default, this unique name is appended with a number, which is incremented as necessary.

<output-attributes-and-values-returned><output-attributes-and-values-returned> はいYes 多様Varies これらの属性の要件は、さまざまな条件によって異なります。The requirements for these attributes vary based on different conditions. たとえば、statusSucceeded の場合、outputs 属性には、アクションによってモック出力として返される属性と値が含まれます。For example, when the status is Succeeded, the outputs attribute includes attributes and values returned as mock outputs by the action. statusFailed の場合は、outputs 属性には errors 属性が含まれます。これは、エラー情報が格納された、1 つ以上のエラー message オブジェクトの配列です。If the status is Failed, the outputs attribute includes the errors attribute, which is an array with one or more error message objects that have error information.
<header-values><header-values> いいえNo JSONJSON アクションによって返されるヘッダー値Any header values returned by the action
<status-code-returned><status-code-returned> はいYes stringString アクションによって返される状態コードThe status code returned by the action
<action-status><action-status> はいYes stringString アクションの状態 (例: Succeeded または Failed)The action's status, for example, Succeeded or Failed

たとえば、この HTTP アクション定義では、runtimeConfiguration.staticResult.name 属性は、アクションのモック出力が定義されている staticResults 属性内部の HTTP0 を参照します。For example, in this HTTP action definition, the runtimeConfiguration.staticResult.name attribute references HTTP0 inside the staticResults attribute where the mock outputs for the action are defined. runtimeConfiguration.staticResult.staticResultOptions 属性は、静的な結果の設定が HTTP アクションで Enabled であることを指定します。The runtimeConfiguration.staticResult.staticResultOptions attribute specifies that the static result setting is Enabled on the HTTP action.

"actions": {
   "HTTP": {
      "inputs": {
         "method": "GET",
         "uri": "https://www.microsoft.com"
      },
      "runAfter": {},
      "runtimeConfiguration": {
         "staticResult": {
            "name": "HTTP0",
            "staticResultOptions": "Enabled"
         }
      },
      "type": "Http"
   }
},

HTTP アクションは staticResults 内部の HTTP0 定義の出力を返します。The HTTP action returns the outputs in the HTTP0 definition inside staticResults. この例の状態コードのモック出力は OK です。In this example, for the status code, the mock output is OK. ヘッダー値のモック出力は "Content-Type": "application/JSON" です。For header values, the mock output is "Content-Type": "application/JSON". アクションの状態のモック出力は Succeeded です。For the action's status, the mock output is Succeeded.

"definition": {
   "$schema": "<...>",
   "actions": { "<...>" },
   "contentVersion": "<...>",
   "outputs": { "<...>" },
   "parameters": { "<...>" },
   "staticResults": {
      "HTTP0": {
         "outputs": {
            "headers": {
               "Content-Type": "application/JSON"
            },
            "statusCode": "OK"
         },
         "status": "Succeeded"
      }
   },
   "triggers": { "<...>" }
},

Expressions

JSON では、デザイン時に存在するリテラル値を使用できます。次はその例です。With JSON, you can have literal values that exist at design time, for example:

"customerName": "Sophia Owen",
"rainbowColors": ["red", "orange", "yellow", "green", "blue", "indigo", "violet"],
"rainbowColorsCount": 7

実行時まで存在しない値を使うこともできます。You can also have values that don't exist until run time. これらの値を表すには、実行時に評価される "" を使うことができます。To represent these values, you can use expressions, which are evaluated at run time. 式は、1 つ以上の関数演算子、変数、明示的な値、または定数を含むことができるシーケンスです。An expression is a sequence that can contain one or more functions, operators, variables, explicit values, or constants. ワークフローの定義では、式の前にアットマーク (@) を付けることによって、JSON 文字列値の任意の場所で式を使うことができます。In your workflow definition, you can use an expression anywhere in a JSON string value by prefixing the expression with the at-sign (@). JSON 値を表す式を評価するときは、@ 文字を削除することによって式の本体が抽出され、常に別の JSON 値になります。When evaluating an expression that represents a JSON value, the expression body is extracted by removing the @ character, and always results in another JSON value.

たとえば、前に定義した customerName プロパティでは、式の中で parameters() 関数を使ってプロパティの値を取得し、その値を accountName プロパティに割り当てることができます。For example, for the previously defined customerName property, you can get the property value by using the parameters() function in an expression and assign that value to the accountName property:

"customerName": "Sophia Owen",
"accountName": "@parameters('customerName')"

"文字列の補間" により、@ 文字と中かっこ ({}) によってラップされている文字列内で複数の式を使用することもできます。String interpolation also lets you use multiple expressions inside strings that are wrapped by the @ character and curly braces ({}). 構文は次のとおりです。Here is the syntax:

@{ "<expression1>", "<expression2>" }

結果は常に文字列であり、この機能は concat() 関数と似ています。次に例を示します。The result is always a string, making this capability similar to the concat() function, for example:

"customerName": "First name: @{parameters('firstName')} Last name: @{parameters('lastName')}"

@ 文字で始まるリテラル文字列がある場合は、エスケープ文字として別の @ 文字を @ の前に付けます (@@)。If you have a literal string that starts with the @ character, prefix the @ character with another @ character as an escape character: @@

式の評価方法の例を次に示します。These examples show how expressions are evaluated:

JSON 値JSON value 結果Result
"Sophia Owen""Sophia Owen" 次の文字が返されます:'Sophia Owen'Return these characters: 'Sophia Owen'
"array[1]""array[1]" 文字 'array[1]' を返しますReturn these characters: 'array[1]'
"@@""@@" 1 文字の '@' を返しますReturn these characters as a one-character string: '@'
" @"" @" 2 文字の ' @' を返しますReturn these characters as a two-character string: ' @'

次の例では、"myBirthMonth" を "January" に、"myAge" を数値 42 に定義してあるものとします。For these examples, suppose you define "myBirthMonth" equal to "January" and "myAge" equal to the number 42:

"myBirthMonth": "January",
"myAge": 42

式の評価方法の例を次に示します。These examples show how the following expressions are evaluated:

JSON 式JSON expression 結果Result
"@parameters('myBirthMonth')""@parameters('myBirthMonth')" 次の文字列が返されます:"January"Return this string: "January"
"@{parameters('myBirthMonth')}""@{parameters('myBirthMonth')}" 次の文字列が返されます:"January"Return this string: "January"
"@parameters('myAge')""@parameters('myAge')" 次の数値が返されます:42Return this number: 42
"@{parameters('myAge')}""@{parameters('myAge')}" 次の数値が文字列として返されます:"42"Return this number as a string: "42"
"My age is @{parameters('myAge')}""My age is @{parameters('myAge')}" 次の文字列が返されます:"My age is 42"Return this string: "My age is 42"
"@concat('My age is ', string(parameters('myAge')))""@concat('My age is ', string(parameters('myAge')))" 次の文字列が返されます:"My age is 42"Return this string: "My age is 42"
"My age is @@{parameters('myAge')}""My age is @@{parameters('myAge')}" 式を含む次の文字列が返されます:"My age is @{parameters('myAge')}`Return this string, which includes the expression: "My age is @{parameters('myAge')}`

Logic Apps デザイナーで視覚的に作業しているときは、式ビルダーなどで式を作成できます。When you're working visually in the Logic Apps Designer, you can create expressions through the Expression builder, for example:

Logic Apps デザイナー > 式ビルダー

完了すると、ワークフロー定義内の対応するプロパティに式が表示されます。次の例では searchQuery プロパティです。When you're done, the expression appears for the corresponding property in your workflow definition, for example, the searchQuery property here:

"Search_tweets": {
  "inputs": {
    "host": {
      "connection": {
        "name": "@parameters('$connections')['twitter']['connectionId']"
      }
    }
  },
  "method": "get",
  "path": "/searchtweets",
  "queries": {
    "maxResults": 20,
    "searchQuery": "Azure @{concat('firstName','', 'LastName')}"
  }
},

演算子Operators

関数では、演算子はプロパティや配列内の値の参照などの特定のタスクを実行します。In expressions and functions, operators perform specific tasks, such as reference a property or a value in an array.

OperatorOperator タスクTask
'' 入力として、または式や関数の中で文字列リテラルを使うには、単一引用符で文字列のみをラップします (例: '<myString>')。To use a string literal as input or in expressions and functions, wrap the string only with single quotation marks, for example, '<myString>'. 二重引用符を ("") を使用しないでください。式全体を囲む JSON の書式設定と競合します。Do not use double quotation marks (""), which conflict with the JSON formatting around an entire expression. 例:For example:

正しい: length('Hello')Yes: length('Hello')
正しくない: length("Hello")No: length("Hello")

配列または数値を渡すとき、句読点をラップする必要はありません。When you pass arrays or numbers, you don't need wrapping punctuation. 例:For example:

正しい: length([1, 2, 3])Yes: length([1, 2, 3])
正しくない: length("[1, 2, 3]")No: length("[1, 2, 3]")

[][] 配列内の特定の位置 (インデックス) にある値を参照するには、角かっこを使います。To reference a value at a specific position (index) in an array, use square brackets. たとえば、配列内の 2 番目の項目を取得するには次のようにします。For example, to get the second item in an array:

myArray[1]

. オブジェクト内のプロパティを参照するには、ドット演算子を使用します。To reference a property in an object, use the dot operator. たとえば、customer JSON オブジェクトの name プロパティを取得するには、次のようにします。For example, to get the name property for a customer JSON object:

"@parameters('customer').name"

?? 実行時エラーを発生させずにオブジェクト内の null プロパティを参照するには、疑問符演算子を使います。To reference null properties in an object without a runtime error, use the question mark operator. たとえば、次の式を使うと、トリガーからの null 出力を処理できます。For example, to handle null outputs from a trigger, you can use this expression:

@coalesce(trigger().outputs?.body?.<someProperty>, '<property-default-value>')

FunctionsFunctions

一部の式では、ワークフロー定義の実行開始時にはまだ存在していない可能性のある値が、実行時のアクションから取得されます。Some expressions get their values from runtime actions that might not yet exist when your workflow definition starts to run. このような値を式で参照または使用するには、ワークフロー定義言語が提供する "関数" を使用できます。To reference or work with these values in expressions, you can use functions that the Workflow Definition Language provides.

次の手順Next steps