Azure Logic Apps의 워크플로 정의 언어에 대한 스키마 참조 가이드

Azure Logic Apps에서 논리 앱을 만들 때 논리 앱에는 논리 앱에서 실행되는 실제 논리를 설명하는 기본 워크플로 정의가 있습니다. 해당 워크플로 정의는 JSON을 사용하며 워크플로 정의 언어 스키마에 의해 유효성이 검증된 구조를 따릅니다. 이 참조는 이 구조와 스키마가 워크플로 정의에서 특성을 정의하는 방법에 대한 개요를 제공합니다.

워크플로 정의 구조

워크플로 정의에는 항상 논리 앱을 인스턴스화하기 위한 트리거와 트리거가 발생한 후 실행되는 하나 이상의 작업이 포함됩니다.

워크플로 정의에 대한 개략적인 구조는 다음과 같습니다.

"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 설명
definition 워크플로 정의의 시작 요소
$schema 외부에서 워크플로 정의를 참조하는 경우에만 여기에서 찾을 수 있는 워크플로 정의 언어 버전을 설명하는 JSON 스키마 파일의 위치입니다.

https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json
actions 아니요 워크플로 런타임에 실행할 하나 이상의 작업에 대한 정의입니다. 자세한 내용은 트리거 및 작업을 참조하세요.



최대 작업 수: 250
contentVersion 아니요 워크플로 정의의 버전 번호로, 기본적으로 "1.0.0.0"입니다. 워크플로를 배포할 때 올바른 정의를 식별하고 확인하려면 사용할 값을 지정합니다.
outputs 아니요 워크플로 실행에서 반환할 출력에 대한 정의입니다. 자세한 내용은 출력을 참조하세요.



최대 출력: 10
parameters 아니요 논리 앱의 런타임에 사용할 값을 전달하는 하나 이상의 매개 변수에 대한 정의입니다. 자세한 내용은 매개 변수를 참조하세요.



최대 매개 변수: 50
staticResults 아니요 해당 작업에서 정적 결과를 사용하도록 설정한 경우 작업에서 모의 출력으로 반환된 하나 이상의 정적 결과에 대한 정의입니다. 각 작업 정의에서 runtimeConfiguration.staticResult.name 속성은 staticResults에서 해당 정의를 참조합니다. 자세한 내용은 정적 결과를 참조하세요.
triggers 아니요 워크플로를 인스턴스화하는 하나 이상의 트리거에 대한 정의입니다. 둘 이상의 트리거를 정의할 수 있지만 워크플로 정의 언어로만 정의할 수 있으며 워크플로 디자이너를 통해 시각적으로 정의할 수는 없습니다. 자세한 내용은 트리거 및 작업을 참조하세요.



최대 트리거: 10

트리거 및 작업

워크플로 정의에서 triggersactions 섹션은 워크플로 실행 중에 발생하는 호출을 정의합니다. 구문 및 이러한 섹션에 대한 자세한 내용은 워크플로 트리거 및 작업을 참조합니다.

매개 변수

배포 수명 주기에는 일반적으로 개발, 테스트, 스테이징 및 프로덕션을 위한 다양한 환경이 있습니다. 다양한 환경에 논리 앱을 배포할 때 배포 요구 사항에 따라 연결 문자열 같은 다양한 값을 사용하려고 할 수 있습니다. 또는 논리 앱 전체에서 하드 코딩하거나 자주 바꾸지 않고 재사용하려는 값이 있을 수 있습니다. 워크플로 정의 parameters 섹션에서 런타임에 논리 앱이 사용하는 값에 대한 매개 변수를 정의하거나 편집할 수 있습니다. 워크플로 정의의 다른 곳에서 해당 매개 변수를 참조하려면 먼저 해당 매개 변수를 정의해야 합니다.

매개 변수 정의에 대한 일반적인 구조는 다음과 같습니다.

"parameters": {
   "<parameter-name>": {
      "type": "<parameter-type>",
      "defaultValue": <default-parameter-value>,
      "allowedValues": [ <array-with-permitted-parameter-values> ],
      "metadata": {
         "description": "<parameter-description>"
      }
   }
},
Attribute 필수 종류 설명
<parameter-name> 문자열 정의하려는 매개 변수의 이름입니다.
<parameter-type> int, float, string, bool, array, object, securestring, secureobject



참고: 모든 암호, 키 및 비밀의 경우 작업이 이러한 형식을 securestring 반환하지 않으므로 해당 형식 secureobjectGET 사용합니다. 매개 변수 보안에 대한 자세한 내용은 작업 및 입력 매개 변수에 대한 보안 권장 사항을 참조 하세요.
매개 변수의 형식입니다.
<default-parameter-value> type과 같음 워크플로가 인스턴스화할 때 값이 지정되지 않은 경우 사용할 기본 매개 변수 값입니다. defaultValue 논리 앱 디자이너에서 매개 변수를 올바르게 표시할 수 있지만 빈 값을 지정할 수 있도록 특성이 필요합니다.
<array-with-permitted-parameter-values> 아니요 배열 매개 변수가 허용할 수 있는 값이 있는 배열
<parameter-description> 아니요 JSON 개체 매개 변수에 대한 설명과 같은 다른 매개 변수 세부 정보

다음으로 워크플로 정의에 대한 Azure Resource Manager 템플릿을 만들고, 배포 시 원하는 값을 허용하는 템플릿 매개 변수를 정의하고, 하드 코딩된 값을 템플릿 또는 워크플로 정의 매개 변수에 대한 참조로 적절하게 바꾸고, 배포 시 사용할 값을 별도의 매개 변수 파일에 저장합니다. 이렇게 하면 논리 앱을 업데이트하고 다시 배포하지 않고도 매개 변수 파일을 통해 해당 값을 더 쉽게 변경할 수 있습니다. 사용자 이름, 암호 및 비밀과 같이 중요하거나 보안이 유지되어야 하는 정보는 Azure Key Vault에 해당 값을 저장하고 매개 변수 파일이 키 자격 증명 모음에서 해당 값을 검색하게 할 수 있습니다. 템플릿 및 워크플로 정의 수준에서 매개 변수를 정의하는 방법에 대한 자세한 내용과 예제는 개요: Azure Resource Manager 템플릿을 사용하여 논리 앱에 대한 배포 자동화를 참조 하세요.

정적 결과

특성에서 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 필수 종류 설명
<static-result-definition-name> 문자열 작업 정의가 개체를 통해 참조할 수 있는 정적 결과 정의의 이름입니다 runtimeConfiguration.staticResult . 자세한 내용은 런타임 구성 설정을 참조 하세요.

원하는 고유한 이름을 사용할 수 있습니다. 기본적으로 이 고유 이름은 필요에 따라 증가하는 숫자와 함께 추가됩니다.
<output-attributes-and-values-returned> 상황에 따라 다름 이러한 특성에 대한 요구 사항은 다양한 조건에 따라 달라집니다. 예를 들어 statusSucceededoutputs 이 경우 특성에는 작업에 의해 모의 출력으로 반환된 특성과 값이 포함됩니다. statusFailed인 경우 outputs 특성에는 오류 정보가 있는 하나 이상의 오류 message 개체가 있는 배열인 errors 특성이 포함됩니다.
<header-values> 아니요 JSON 작업에서 반환된 모든 헤더 값
<status-code-returned> 문자열 작업에서 반환된 상태 코드
<action-상태> 문자열 예를 들어 Succeeded 또는 Failed와 같은 작업의 상태

예를 들어 이 HTTP 작업 정의에서 runtimeConfiguration.staticResult.name 특성은 작업에 대한 모의 출력이 정의된 staticResults 특성 내의 HTTP0를 참조합니다. 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 작업은 내부 staticResults정의의 출력을 HTTP0 반환합니다. 이 예제에서는 상태 코드의 경우 모의 출력입니다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": { "<...>" }
},

Json을 사용하면 예를 들어 디자인 타임 시 존재하는 리터럴 값이 있을 수 있습니다.

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

실행 시간까지 존재하지 않는 값이 있을 수 있습니다. 이러한 값을 나타내기 위해 런타임에 계산되는 식을 사용할 수 있습니다. 식은 하나 이상의 함수, 연산, 변수, 명시적 값 또는 상수가 포함될 수 있는 시퀀스입니다. 워크플로 정의에서 식 앞에 at 기호(@)를 붙여 JSON 문자열 값의 어디에서나 식을 사용할 수 있습니다. JSON 값을 나타내는 식을 계산할 때 식 본문은 @ 문자를 제거하여 추출되고 항상 다른 JSON 값이 생성됩니다.

예를 들어 이전에 정의된 customerName 속성의 경우 식에서 parameters() 함수를 사용하여 속성 값을 가져와서 해당 값을 속성에 accountName 할당할 수 있습니다.

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

또한 문자열 보간 을 사용하면 @ 문자 및 중괄호({})로 래핑되는 문자열 내에서 여러 식을 사용할 수 있습니다. 구문은 다음과 같습니다.

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

결과는 항상 문자열이므로 이 기능은 함수와 concat() 유사합니다. 예를 들면 다음과 같습니다.

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

@ 문자로 시작하는 리터럴 문자열이 있는 경우 @ 문자 앞에 다른 @ 문자를 이스케이프 문자로 접두사로 추가합니다. @@

다음 예제에서는 식이 계산되는 방법을 보여 줍니다.

JSON 값 결과
"소피아 오웬" 이러한 문자 'Sophia Owen'을 반환
"배열[1]" 'array[1]' 문자를 반환합니다.
"@@" 이러한 문자를 한 문자 문자열로 반환합니다. '@'
" @" 이러한 문자를 '@' 두 문자 문자열로 반환합니다.

이러한 예제에서는 "myBirthMonth"를 "January" 및 "myAge"가 숫자 42와 같게 정의한다고 가정합니다.

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

다음 예제에서는 다음 식을 평가하는 방법을 보여 줍니다.

JSON 식 결과
"@parameters('myBirthMonth')" "January" 문자열을 반환합니다.
"@{parameters('myBirthMonth')}" "January" 문자열을 반환합니다.
"@parameters('myAge')" 이 번호 반환: 42
"@{parameters('myAge')}" 이 숫자를 문자열로 반환합니다. "42"
"내 나이는 @{parameters('myAge')}입니다." "내 나이는 42세"라는 문자열을 반환합니다.
"@concat('내 나이는 ', string(parameters('myAge'))살)" "내 나이는 42세"라는 문자열을 반환합니다.
"내 나이는 @{parameters('myAge')}살" 식이 포함된 이 문자열 "내 나이는 @{parameters('myAge')}살'을 반환

워크플로 디자이너에서 시각적으로 작업하는 경우 식 편집기를 사용하여 식을 만들 수 있습니다. 예를 들면 다음과 같습니다.

Screenshot shows workflow designer and expression editor.

완료되면 워크플로 정의의 해당 속성에 대한 식이 나타납니다(예 searchQuery : 여기 속성).

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

출력

outputs 섹션에서 실행이 완료되면 워크플로에서 반환할 수 있는 데이터를 정의합니다. 예를 들어, 각 실행에서 특정 상태 또는 값을 추적하려면 워크플로 출력이 해당 데이터를 반환하도록 지정합니다.

참고 항목

서비스의 REST API에서 들어오는 요청에 응답할 때는 사용하지 outputs마세요. 대신 작업 유형을 사용합니다 Response . 자세한 내용은 워크플로 트리거 및 작업을 참조 하세요.

출력 정의의 일반적인 구조는 다음과 같습니다.

"outputs": {
  "<key-name>": {
    "type": "<key-type>",
    "value": "<key-value>"
  }
}
Attribute 필수 종류 설명
<key-name> 문자열 출력 반환 값의 키 이름입니다.
<key-type> int, float, string, securestring, bool, array, JSON 개체 출력 반환 값의 형식입니다.
<키-값> <key-type>과 동일 출력 반환 값

워크플로 실행에서 출력을 얻으려면 Azure Portal에서 논리 앱의 실행 기록 및 세부 정보를 검토하거나 워크플로 REST API사용합니다. 대시보드를 만들 수 있도록 출력을 외부 시스템(예: Power BI)에 전달할 수도 있습니다.

연산자

식 및함수에서 연산자는 배열의 속성 또는 값 참조와 같은 특정 작업을 수행합니다.

연산자 작업
' 문자열 리터럴을 입력으로 사용하거나 식과 함수에서 사용하려면 문자열을 작은따옴표(예 '<myString>': 작은따옴표)로만 래핑합니다. 전체 식에서 JSON 서식과 충돌하는 큰따옴표("")를 사용하지 마세요. 예:

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

배열 또는 숫자를 전달할 때 문장 부호를 래핑할 필요가 없습니다. 예:

: length([1, 2, 3])
아니요: length("[1, 2, 3]")
[] 배열 또는 JSON 개체 내의 특정 위치(인덱스)에서 값을 참조하려면 대괄호를 사용합니다. 예를 들면 다음과 같습니다.

- 배열에서 두 번째 항목을 얻으려면 다음을 수행합니다.

myArray[1]

- JSON 개체 내의 속성에 액세스하려면:

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

예제 2:
lastIndexOf(triggerBody()?['subject'],'some string')
. 개체의 속성을 참조하려면 점 연산자를 사용합니다. 예를 들어 JSON 개체의 name 속성을 얻으려면 다음을 customer 수행합니다.

"@parameters('customer').name"
? 런타임 오류 없이 개체에서 null 속성을 참조하려면 물음표 연산자를 사용합니다. 예를 들어 트리거에서 null 출력을 처리하려면 다음 식을 사용할 수 있습니다.

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

함수

일부 식은 워크플로 정의가 실행될 때 아직 존재하지 않을 수 있는 런타임 작업에서 해당 값을 가져옵니다. 식에서 이러한 값을 참조하거나 사용하려면 워크플로 정의 언어에서 제공하는 함수를 사용할 수 있습니다.

다음 단계