Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
При создании рабочего процесса приложения логики в Azure Logic Apps рабочий процесс содержит базовое определение нотации объектов JavaScript (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 | Description |
|---|---|---|
definition |
Yes | Начальный элемент определения рабочего процесса. |
$schema |
Только в случае использования внешней ссылки на определение рабочего процесса | Расположение файла схемы JSON, описывающего версию языка определения рабочего процесса, которую можно найти здесь: https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json |
actions |
No | Определения для одного или нескольких действий, которые будут запущены во время выполнения рабочего процесса. Дополнительные сведения см. в статье Триггеры и действия. Максимальное количество действий: 250. |
contentVersion |
No | Номер версии для вашего определения рабочего процесса (по умолчанию — 1.0.0.0). Чтобы помочь определить и подтвердить правильное определение при развертывании рабочего процесса, укажите значение для использования. |
outputs |
No | Определения выходных данных, возвращаемых из рабочего процесса. Дополнительные сведения см. в разделе "Выходные данные". Максимальное количество типов выходных данных: 10. |
parameters |
No | Определения для одного или нескольких параметров, которые передают значения для использования в процессе выполнения логического приложения. Дополнительные сведения см. в разделе Параметры. Максимальное количество параметров: 50. |
staticResults |
No | Определения для одного или нескольких статических результатов, возвращаемых действиями в качестве макетных выходных данных, когда для этих действий включены статические результаты. В определении каждого действия атрибут runtimeConfiguration.staticResult.name ссылается на соответствующее определение внутри staticResults. Дополнительные сведения см. в разделе "Статические результаты". |
triggers |
No | Определения для одного или нескольких триггеров, которые создают рабочий процесс Можно определить несколько триггеров, но только с помощью языка определения рабочего процесса, а не визуально с помощью конструктора рабочих процессов. Дополнительные сведения см. в статье Триггеры и действия. Максимальное количество триггеров: 10. |
Триггеры и действия
В определении рабочего процесса разделы triggers и actions определяют вызовы, которые происходят во время выполнения рабочего процесса. Синтаксис и дополнительные сведения об этих разделах см. в статье Triggers and actions for workflow definitions in Azure Logic Apps (Триггеры и действия для определений рабочих процессов в Azure Logic Apps).
Parameters
Жизненный цикл развертывания обычно имеет различные среды для разработки, тестирования, промежуточного хранения и производства. При развертывании приложений логики в различных средах, скорее всего, потребуется использовать разные значения, например строки подключения, в зависимости от потребностей развертывания. Или у вас могут быть значения, которые нужно повторно использовать во всем рабочем процессе без жесткой кодировки или часто изменяющихся. В разделе определения parameters рабочего процесса можно определить или изменить параметры для значений, которые использует рабочий процесс во время выполнения. Прежде чем можно будет ссылаться на эти параметры в любом расположении в определении рабочего процесса, необходимо сначала определить эти параметры.
Ниже приведена общая структура определения параметров:
"parameters": {
"<parameter-name>": {
"type": "<parameter-type>",
"defaultValue": <default-parameter-value>,
"allowedValues": [ <array-with-permitted-parameter-values> ],
"metadata": {
"description": "<parameter-description>"
}
}
},
| Attribute | Required | Type | Description |
|---|---|---|---|
| < имя параметра> | Yes | String | Имя параметра, который требуется определить |
| < тип параметра> | Yes | int, float, string, bool, array, object, securestring, secureobject Примечание. Для всех паролей, ключей и секретов используйте securestring или secureobject типы, так как GET операция не возвращает эти типы. Дополнительные сведения о защите параметров см. в разделе Рекомендации по безопасности для действий и входных параметров. |
Тип параметра. |
| < default-parameter-value> | Yes | То же, что и type |
Значение параметра по умолчанию, если значение не задано при создании экземпляра рабочего процесса. Атрибут defaultValue необходим, чтобы конструктор рабочих процессов правильно отображал параметр, но можно указать пустое значение. |
| < массив с разрешенными значениями параметров> | No | Array | Массив со значениями, которые может принимать параметр. |
| < описание параметра> | No | Объект 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 | Required | Type | Description |
|---|---|---|---|
| < статическая результирующий определение-имя> | Yes | String | Имя для статического определения результата, на которое может ссылаться определение действия через объект runtimeConfiguration.staticResult. Дополнительные сведения см. в разделе Настройки конфигурации среды выполнения. Можно использовать любое уникальное имя. По умолчанию к этому уникальному имени добавляется номер, который увеличивается при необходимости. |
| < возвращаемые выходные атрибуты и значения> | Yes | Varies | Требования к этим атрибутам зависят от различных условий. Например, если status имеет значение Succeeded, атрибут outputs содержит атрибуты и значения, возвращаемые действием в качестве фиктивных выходных данных. Если status имеет значение Failed, атрибут outputs содержит атрибут errors, который является массивом с одним или несколькими объектами message, содержащими сведения об ошибках. |
| < значения заголовка> | No | JSON | Все значения заголовка, возвращаемые действием |
| < status-code-returned> | Yes | String | Код состояния, возвращаемый действием |
| < состояние действия> | Yes | String | Статус действия, например Succeeded или Failed |
Например, в этом определении HTTP-действия атрибут runtimeConfiguration.staticResult.name ссылается на атрибут HTTP0 в атрибуте staticResults, где определены макеты выходных данных для действия.
runtimeConfiguration.staticResult.staticResultOptionsАтрибут указывает, что параметр статического результата имеет значение Enabled в действии HTTP.
"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
Вы также можете использовать значения, которые не существуют до начала времени выполнения. Для представления этих значений можно использовать выражения, которые вычисляются во время выполнения. Выражение — это последовательность, которая может содержать одну или несколько функций, операторов, переменных, явных значений или констант. В определении рабочего процесса вы можете использовать выражение в любом месте в строчном значении JSON, указав его вместе с префиксом "\@\". При вычислении выражения, представляющего значение JSON, тело выражения извлекается без символа @ и всегда приводит к другому значению JSON.
Например, для ранее определенного customerName свойства можно получить значение свойства с помощью функции parameters() в выражении и назначить это значение свойствуaccountName:
"customerName": "Sophia Owen",
"accountName": "@parameters('customerName')"
Интерполяция строк также позволяет использовать несколько выражений внутри строк, которые упаковываются символом @ и фигурными скобками ({}). Ниже приведен синтаксис.
@{ "<expression1>", "<expression2>" }
Результат всегда является строкой, что делает эту функцию аналогичной функции concat(), например:
"customerName": "First name: @{parameters('firstName')} Last name: @{parameters('lastName')}"
Если у вас есть строковый литерал, начинающийся с символа @, добавьте перед символом @ другой символ @ в качестве escape-символа: @@.
В примерах ниже показано, как вычисляются выражения.
| Значение JSON | Result |
|---|---|
| "София Оуэн" | Возвращаются символы: "Sophia Owen". |
| "array[1]" | Верните эти символы: «array[1]». |
| "@@" | Верните этот символ в виде строки с одним символом: '@'. |
| " @" | Эти символы возвращаются в виде строки с двумя символами: \" \@\". |
Для этих примеров предположим, что вы определяете "myBirthMonth" равным "January", а "myAge" равным числу 42:
"myBirthMonth": "January",
"myAge": 42
В примерах ниже показано, как вычисляются выражения.
| Выражение JSON | Result |
|---|---|
| "@parameters('myBirthMonth')" | Возвращается строка: "Январь". |
| "@{parameters('myBirthMonth')}" | Возвращается строка: "Январь". |
| "@parameters('myAge')" | Верните это число: 42. |
| "@{parameters('myAge')}" | Верните это число как строку: "42". |
| "Мой возраст @{parameters('myAge')}" | Возвращается строка: "Мне 42 года". |
| "@concat('Мой возраст - ', string(parameters('myAge')))" | Возвращается строка: "Мне 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 определите данные, которые ваш рабочий процесс может вернуть при завершении работы. Например, чтобы отслеживать определенное состояние или значение из каждого выполнения, укажите, что выходные данные workflow должны содержать соответствующие данные.
Note
При реагировании на входящие запросы из REST API службы не используйте outputs. Вместо этого используйте тип действия Response.
Дополнительные сведения см. в статье Triggers and actions for workflow definitions in Azure Logic Apps (Триггеры и действия для определений рабочих процессов в Azure Logic Apps).
Ниже приведена общая структура для определения выходных данных:
"outputs": {
"<key-name>": {
"type": "<key-type>",
"value": "<key-value>"
}
}
| Attribute | Required | Type | Description |
|---|---|---|---|
| < key-name> | Yes | String | Имя ключа для возвращаемого выходного значения. |
| < тип ключа> | Yes | int, float, string, securestring, bool, массив, объект JSON | Тип возвращаемого значения в выходных данных. |
| < key-value> | Yes | То же, что и <тип ключа> | Возвращаемое значение в выходных данных. |
Чтобы получить результат выполнения рабочего процесса, просмотрите журнал выполнения и подробности приложения логики на портале Azure или используйте REST API рабочих процессов. Также можно передать выходные данные во внешние системы, например Power BI, для создания панели мониторинга.
Operators
В выражениях и функциях операторы выполняют определенные задачи, такие как ссылка на свойство или значение в массиве.
| Operator | Task |
|---|---|
' |
Чтобы использовать строковый литерал в качестве входных данных или в выражениях и функциях, оберните строку в одинарные кавычки, например, '<myString>'. Не используйте двойные кавычки (""), которые конфликтуют с форматированием JSON вокруг всего выражения. Например: Да: length('Hello') No: length("Hello") Когда вы передаете массивы или числа, их не нужно заключать в какие-либо оборачивающие знаки препинания. Например: Да: длина([1, 2, 3]) Нет: длина("[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') |
. |
Для указания ссылки на свойство в объекте используйте оператор "точка". Например, чтобы получить name свойство для customer объекта JSON: "parameters('customer').name" |
? |
Чтобы ссылаться на свойство объекта без риска ошибки среды выполнения или сбоя рабочего процесса, используйте оператор вопросительного знака (?), также известный как оператор null ignore, предшествующий свойству. Этот оператор позволяет безопасно получить доступ к элементу свойства или массива, если родительский объект или указанное свойство может содержать null или отсутствует. — Если родительский объект, который отображается перед ? оператором null или отсутствует указанное свойство, все выражение возвращается null, а не рабочий процесс сбоем. — Если объект или свойство существует, выражение возвращает значение свойства. Например, предположим, что у вас есть следующее выражение: triggerBody()?['ContentData'] — Если triggerBody() объект возвращается из ContentData свойства, возвращается значение объекта. — Если triggerBody()null свойство отсутствует или отсутствуетContentData, функция возвращается, а не завершается null ошибкой "Не удается обработать выражения языка шаблона". Оператор ? также позволяет безопасно использовать свойства доступа к цепочке и полезен в следующих сценариях: — Управление выражениями, которые работают с необязательными полями JSON. — обработка выходных данных соединителя, которые могут опустить определенные свойства. — Избегайте хрупких выражений в условной логике. Например, для цепочки доступа к свойствам и обработки выходных данных NULL из триггера можно использовать следующее выражение: coalesce(trigger().outputs?.body?['<property-name>'], '<property-default-value>') |
Functions
Некоторые выражения получают значения из действий среды выполнения, которые могут не существовать при запуске определения рабочего процесса. Чтобы ссылаться на эти значения или работать с этими значениями в выражениях, можно использовать функции , которые предоставляет язык определения рабочего процесса.