次の方法で共有


Azure Logic Apps でのワークフロー定義言語のスキーマ リファレンス ガイド

Azure Logic Apps でロジック アプリを作成するとき、ロジック アプリには基になるワークフロー定義があり、ロジック アプリで実行される実際のロジックが記述されています。 That workflow definition uses JSON and follows a structure that's validated by the Workflow Definition Language schema. このリファレンスでは、この構造に関する概要と、ワークフロー定義で属性がスキーマによってどのように定義されるかを説明します。

ワークフロー定義の構造

ワークフロー定義には、常に、ロジック アプリをインスタンス化するためのトリガーと、トリガーの発動後に実行される 1 つ以上のアクションが含まれます。

ワークフロー定義の高レベルな構造を次に示します。

"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>" }
}
Attribute Required Description
definition Yes ワークフロー定義の開始要素
$schema ワークフロー定義を外部参照する場合のみ ワークフロー定義言語のバージョンが記述されている JSON スキーマ ファイルの場所。次の場所にあります。

https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json
actions No ワークフローの実行時に実行される 1 つまたは複数のアクションの定義。 詳細については、「トリガーとアクション」を参照してください。



アクションの最大個数: 250
contentVersion No ワークフロー定義のバージョン番号。既定値は "1.0.0.0" です。 ワークフローを展開するときに正しい定義であることを識別して確認できるように、使用する値を指定します。
outputs No ワークフローの実行から返される出力の定義。 For more information, see Outputs.



出力の最大個数: 10
parameters No ロジック アプリの実行時に使用する値を渡す 1 つ以上のパラメーターの定義。 For more information, see Parameters.



パラメーターの最大個数: 50
staticResults No 静的な結果がこれらのアクションで有効になっている場合に、アクションによってモック出力として返される 1 つまたは複数の静的な結果の定義。 各アクションの定義で、runtimeConfiguration.staticResult.name 属性は staticResults 内部の対応する定義を参照します。 For more information, see Static results.
triggers No ワークフローをインスタンス化する 1 つまたは複数のトリガーの定義。 複数のトリガーを定義できますが、ワークフロー定義言語しか使用できず、ワークフロー デザイナーを使用して視覚的に作成することはできません。 詳細については、「トリガーとアクション」を参照してください。



トリガーの最大個数: 10

トリガーとアクション

ワークフロー定義の triggers および actions セクションでは、ワークフローの実行中に発生する呼び出しを定義します。 これらのセクションの構文と詳細については、「ワークフローのトリガーとアクション」をご覧ください。

Parameters

通常、デプロイのライフサイクルには、開発、テスト、ステージング、運用の異なる環境があります。 異なる環境にロジック アプリをデプロイする場合、デプロイのニーズに基づいて、接続文字列などの異なる値を使用することがあります。 また、値をハードコーディングせずにロジック アプリ全体で再利用する場合や、値を頻繁に変更する場合もあります。 ワークフロー定義の parameters セクションでは、ロジック アプリが実行時に使用する値のパラメーターを定義または編集できます。 これらのパラメーターをワークフロー定義の別の場所で参照するには、事前に定義しておく必要があります。

パラメーターの定義の一般的な構造を次に示します。

"parameters": {
   "<parameter-name>": {
      "type": "<parameter-type>",
      "defaultValue": <default-parameter-value>,
      "allowedValues": [ <array-with-permitted-parameter-values> ],
      "metadata": {
         "description": "<parameter-description>"
      }
   }
},
Attribute Required タイプ Description
< parameter-name> Yes String 定義するパラメーターの名前
< parameter-type> Yes int、float、string、bool、array、object、securestring、secureobject



Note: For all passwords, keys, and secrets, use the securestring or secureobject types because the GET operation doesn't return these types. パラメーターのセキュリティ保護の詳細については、「パラメーターの入力へのアクセス」を参照してください。
パラメーターの型
< default-parameter-value> Yes type と同じ ワークフローのインスタンス化時に値が指定されていない場合に使用する、既定のパラメーター値。 defaultValue 属性は、ロジック アプリ デザイナーがパラメーターを正しく表示できるようにする場合は必須ですが、空の値を指定することもできます。
< array-with-permitted-parameter-values> No Array パラメーターが受け取ることのできる値の配列
< parameter-description> No JSON object パラメーターの説明など、その他のパラメーターの詳細

次に、ワークフロー定義に Azure Resource Manager テンプレートを作成し、デプロイ時に必要な値を受け入れるテンプレート パラメーターを定義し、必要に応じてテンプレートまたはワークフロー定義のパラメーターを参照してハードコーディングされた値を置き換え、デプロイ時に使用する値を別のパラメーター ファイルに格納します。 そうすることで、ロジック アプリを更新して再デプロイしなくても、パラメーター ファイルを使用してこれらの値をより簡単に変更できます。 ユーザー名、パスワード、シークレットなどの、機密情報やセキュリティ保護が必要な情報の場合、Azure Key Vault に値を格納し、パラメーター ファイルでキー コンテナーから値を取得することができます。 テンプレートとワークフロー定義レベルでのパラメーターの定義の詳細と例については、「概要: Azure Resource Manager テンプレートを使用したロジック アプリのデプロイの自動化」を参照してください。

Static results

staticResults 属性では、アクションの静的な結果の設定が有効になっている場合に、アクションが返すアクションのモック outputs および status を定義します。 アクションの定義で、runtimeConfiguration.staticResult.name 属性は staticResults 内部の静的な結果の定義の名前を参照します。 静的な結果を設定し、モック データを使用してロジック アプリ ワークフローをテストする方法をご確認ください。

"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": { "<...>" }
}
Attribute Required タイプ Description
< static-result-definition-name> Yes String アクションの定義が runtimeConfiguration.staticResult オブジェクトを介して参照できる、静的な結果の定義の名前。 詳細については、「ランタイム構成の設定」を参照してください。

任意の一意の名前を使用できます。 既定では、この一意の名前に数値が追加されます。この数値は必要に応じてインクリメントされます。
< output-attributes-and-values-returned> Yes Varies これらの属性の要件は、さまざまな条件によって異なります。 たとえば、statusSucceeded の場合、outputs 属性には、アクションによってモック出力として返される属性と値が含まれます。 statusFailed の場合は、outputs 属性には errors 属性が含まれます。これは、エラー情報が格納された、1 つ以上のエラー message オブジェクトの配列です。
< header-values> No JSON アクションによって返されるヘッダー値
< status-code-returned> Yes String アクションによって返される状態コード
< action-status> Yes String アクションの状態 (例: Succeeded または Failed)

たとえば、この HTTP アクション定義では、runtimeConfiguration.staticResult.name 属性は、アクションのモック出力が定義されている HTTP0 属性内部の staticResults を参照します。 runtimeConfiguration.staticResult.staticResultOptions 属性は、静的な結果の設定が HTTP アクションで Enabled であることを指定します。

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

HTTP アクションは HTTP0 内部の staticResults 定義の出力を返します。 この例の状態コードのモック出力は OK です。 ヘッダー値のモック出力は "Content-Type": "application/JSON" です。 アクションの状態のモック出力は Succeeded です。

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

Expressions

JSON では、デザイン時に存在するリテラル値を使用できます。次はその例です。

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

実行時まで存在しない値を使うこともできます。 To represent these values, you can use expressions, which are evaluated at run time. An expression is a sequence that can contain one or more functions, operators, variables, explicit values, or constants. ワークフローの定義では、式の前にアットマーク (\@\) を付けることによって、JSON 文字列値の任意の場所で式を使うことができます。 JSON 値を表す式を評価するときは、\@\ 文字を削除することによって式の本体が抽出され、常に別の JSON 値になります。

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 ({}). 構文は次のとおりです。

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

結果は常に文字列であり、この機能は concat() 関数と似ています。次に例を示します。

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

\@\ 文字で始まるリテラル文字列がある場合は、エスケープ文字として別の \@\ 文字を \@\ の前に付けます (\@@\)。

式の評価方法の例を次に示します。

JSON value Result
"Sophia Owen" 文字 'Sophia Owen' を返します
"array[1]" 文字 'array[1]' を返します
"@@" 1 文字の \'\@\' を返します
" @" 2 文字の \' \@\' を返します

次の例では、"myBirthMonth" を "January" に、"myAge" を数値 42 に定義してあるものとします。

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

式の評価方法の例を次に示します。

JSON expression Result
"@parameters('myBirthMonth')" 文字列 "January" が返されます
"@{parameters('myBirthMonth')}" 文字列 "January" が返されます
"@parameters('myAge')" 数値 42 が返されます
"@{parameters('myAge')}" 文字列 "42" が返されます
私の年齢は @{parameters('myAge')} 文字列 "My age is 42" が返されます
"@concat('My age is ', string(parameters('myAge')))" 文字列 "My age is 42" が返されます
私の年齢は@@{parameters('myAge')}です 式を含む文字列 "My age is @{parameters('myAge')}" が返されます

ワークフロー デザイナー内で視覚的に作業している場合は、式エディターを使用して式を作成できます。次に例を示します。

ワークフロー デザイナーと式エディターを示すスクリーンショット。

完了すると、ワークフロー定義内の対応するプロパティに式が表示されます。次の例では searchQuery プロパティです。

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

Outputs

outputs セクションでは、実行完了時にワークフローが返すことのできるデータを定義します。 たとえば、各実行から特定の状態または値を追跡するには、ワークフローの出力がそのデータを返すように指定します。

Note

サービスの REST API からの受信要求に応答する場合は、outputs を使用しないでください。 代わりに、Response アクションの種類を使います。 詳しくは、「ワークフローのトリガーとアクション」をご覧ください。

出力の定義の一般的な構造を次に示します。

"outputs": {
  "<key-name>": {
    "type": "<key-type>",
    "value": "<key-value>"
  }
}
Attribute Required タイプ Description
< key-name> Yes String 出力戻り値のキーの名前
< key-type> Yes int、float、string、securestring、bool、array、JSON オブジェクト 出力戻り値の型
< key-value> Yes Same as <key-type> 出力の戻り値

ワークフローの実行からの出力を取得するには、Azure portal でロジック アプリの実行履歴と詳細を確認するか、または Workflow REST API を使います。 Power BI などの外部システムに出力を渡してダッシュボードを作成することもできます。

Operators

In expressions and functions, operators perform specific tasks, such as reference a property or a value in an array.

Operator Task
' 入力として、または式や関数の中で文字列リテラルを使うには、単一引用符で文字列のみをラップします (例: '<myString>')。 二重引用符を ("") を使用しないでください。式全体を囲む JSON の書式設定と競合します。 For example:

Yes: length('Hello')
No: length("Hello")

配列または数値を渡すとき、句読点をラップする必要はありません。 For example:

Yes: length([1, 2, 3])
No: length("[1, 2, 3]")
[] 配列内または JSON オブジェクト内の特定の位置 (インデックス) の値を参照するには、角かっこを使用します。次に例を示します。

- 配列内の 2 番目の項目を取得するには:

myArray[1]

- JSON オブジェクト内のプロパティにアクセスするには:

Example 1:
setProperty(<object>, '<parent-property>', addProperty(<object>['<parent-property>'], '<child-property>', <value>)

Example 2:
lastIndexOf(triggerBody()?['subject'],'some string')
. オブジェクト内のプロパティを参照するには、ドット演算子を使用します。 たとえば、name JSON オブジェクトの customer プロパティを取得するには、次のようにします。

"parameters('customer').name"
? To reference null properties in an object without a runtime error, use the null-ignore (?) operator. たとえば、トリガーからの null 出力を処理するには、次の式を使用できます。

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

Functions

一部の式では、ワークフロー定義の実行開始時にはまだ存在していない可能性のある値が、実行時のアクションから取得されます。 To reference or work with these values in expressions, you can use functions that the Workflow Definition Language provides.