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 | 필수 | 설명 |
---|---|---|
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 |
트리거 및 작업
워크플로 정의에서 triggers
및 actions
섹션은 워크플로 실행 중에 발생하는 호출을 정의합니다. 구문 및 이러한 섹션에 대한 자세한 내용은 워크플로 트리거 및 작업을 참조합니다.
매개 변수
배포 수명 주기는 일반적으로 개발, 테스트, 스테이징 및 프로덕션 환경이 서로 다릅니다. 다양한 환경에 논리 앱을 배포할 때 배포 요구 사항에 따라 연결 문자열 같은 다양한 값을 사용하려고 할 수 있습니다. 또는 논리 앱 전체에서 하드 코딩하거나 자주 바꾸지 않고 재사용하려는 값이 있을 수 있습니다. 워크플로 정의 parameters
섹션에서 런타임에 논리 앱이 사용하는 값에 대한 매개 변수를 정의하거나 편집할 수 있습니다. 워크플로 정의의 다른 곳에서 해당 매개 변수를 참조하려면 먼저 해당 매개 변수를 정의해야 합니다.
매개 변수 정의에 대한 일반적인 구조는 다음과 같습니다.
"parameters": {
"<parameter-name>": {
"type": "<parameter-type>",
"defaultValue": <default-parameter-value>,
"allowedValues": [ <array-with-permitted-parameter-values> ],
"metadata": {
"description": "<parameter-description>"
}
}
},
attribute | 필수 | Type | 설명 |
---|---|---|---|
<parameter-name> | 예 | 문자열 | 정의하려는 매개 변수의 이름입니다. |
<parameter-type> | 예 | int, float, string, bool, array, object, securestring, secureobject 참고: 모든 암호, 키 및 비밀의 경우 작업이 이러한 형식을 securestring 반환하지 않으므로 해당 형식 secureobject 을 GET 사용합니다. 매개 변수 보안에 대한 자세한 내용은 작업 및 입력 매개 변수에 대한 보안 권장 사항을 참조 하세요. |
매개 변수의 형식입니다. |
<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 | 필수 | Type | 설명 |
---|---|---|---|
<static-result-definition-name> | 예 | 문자열 | 작업 정의가 개체를 통해 참조할 수 있는 정적 결과 정의의 이름입니다 runtimeConfiguration.staticResult . 자세한 내용은 런타임 구성 설정을 참조 하세요. 원하는 고유한 이름을 사용할 수 있습니다. 기본적으로 이 고유 이름은 필요에 따라 증가하는 숫자와 함께 추가됩니다. |
<output-attributes-and-values-returned> | 예 | 상황에 따라 다름 | 이러한 특성에 대한 요구 사항은 다양한 조건에 따라 달라집니다. 예를 들어 status Succeeded outputs 이 경우 특성에는 작업에 의해 모의 출력으로 반환된 특성과 값이 포함됩니다. status 이 Failed 인 경우 outputs 특성에는 오류 정보가 있는 하나 이상의 오류 message 개체가 있는 배열인 errors 특성이 포함됩니다. |
<header-values> | 아니요 | JSON | 작업에서 반환된 모든 헤더 값 |
<status-code-returned> | 예 | 문자열 | 작업에서 반환된 상태 코드 |
<action-status> | 예 | 문자열 | 예를 들어 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')}살'을 반환 |
워크플로 디자이너에서 시각적으로 작업하는 경우 식 편집기를 사용하여 식을 만들 수 있습니다. 예를 들면 다음과 같습니다.
완료되면 워크플로 정의의 해당 속성에 대한 식이 나타납니다(예 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
섹션에서 실행이 완료되면 워크플로에서 반환할 수 있는 데이터를 정의합니다. 예를 들어, 각 실행에서 특정 상태 또는 값을 추적하려면 워크플로 출력이 해당 데이터를 반환하도록 지정합니다.
참고 항목
서비스의 REST API에서 들어오는 요청에 응답할 때는 사용하지 outputs
마세요. 대신 작업 유형을 사용합니다 Response
.
자세한 내용은 워크플로 트리거 및 작업을 참조 하세요.
출력 정의의 일반적인 구조는 다음과 같습니다.
"outputs": {
"<key-name>": {
"type": "<key-type>",
"value": "<key-value>"
}
}
attribute | 필수 | Type | 설명 |
---|---|---|---|
<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-ignore(?) 연산자를 사용합니다. 예를 들어 트리거에서 null 출력을 처리하려면 다음 식을 사용할 수 있습니다. coalesce(trigger().outputs?.body?['<someProperty>'], '<property-default-value>') |
함수
일부 식은 워크플로 정의가 실행될 때 아직 존재하지 않을 수 있는 런타임 작업에서 해당 값을 가져옵니다. 식에서 이러한 값을 참조하거나 사용하려면 워크플로 정의 언어에서 제공하는 함수를 사용할 수 있습니다.
다음 단계
- 워크플로 정의 언어 작업 및 트리거에 대해 알아보기
- 워크플로 REST API를 사용하여 논리 앱을 프로그래밍 방식으로 만들고 관리하는 방법을 알아봅니다.