Создание, редактирование и расширение JSON для определений рабочего процесса приложений логики в Azure Logic Apps
Область применения: Azure Logic Apps (потребление)
При создании корпоративных решений по интеграции с автоматизированными рабочими процессами на основе Azure Logic Apps для описания и проверки определений рабочих процессов используется простой декларативный язык JSON (нотация объектов JavaScript) и схема WDL (язык определения рабочего процесса). Эти форматы позволяют легко читать и понимать определения рабочих процессов даже без глубоких знаний о программировании. Если вы хотите автоматизировать создание и развертывание ресурсов приложений логики, включите определения рабочих процессов в шаблоны Azure Resource Manager в качестве ресурсов Azure. Тогда вы сможете создавать приложения логики, управлять ими и развертывать их с помощью Azure PowerShell, Azure CLI или интерфейсов API REST для Azure Logic Apps.
Чтобы работать с определениями рабочих процессов в ФОРМАТЕ JSON, откройте редактор представления кода при работе в портал Azure или Visual Studio Code. Вы также можете скопировать и вставить определение в любой нужный редактор.
Примечание.
Некоторые возможности Azure Logic Apps, например определение параметров и множественные триггеры, можно включить в определения рабочих процессов только напрямую через JSON, но нельзя использовать в конструкторе рабочего процесса. Таким образом, для этих задач необходимо работать в представлении кода или другом редакторе.
Редактирование JSON на портале Azure
В поле поиска портал Azure введите и выберите приложения логики. На странице приложений логики выберите нужный ресурс приложения логики потребления.
В меню приложения логики в разделе "Средства разработки" выберите представление кода приложения логики.
Откроется редактор представления кода и отображается определение рабочего процесса приложения логики в формате JSON.
Изменение JSON — Visual Studio Code
См. статью "Изменение развернутого приложения логики" в Visual Studio Code
Редактирование JSON в Visual Studio
Внимание
Расширение Azure Logic Apps для Visual Studio устарело и больше не получает обновления. Сведения о создании рабочих процессов приложений логики и управлении ими с помощью локальной среды разработки см. в следующей документации:
Прежде чем работать с определением рабочего процесса потребления в Visual Studio, убедитесь, что установлены необходимые средства. Visual Studio позволяет открыть приложения логики, которые были созданы и развернуты напрямую через портал Azure или из Visual Studio в виде проектов Azure Resource Manager.
Откройте решение Visual Studio или проект группы ресурсов Azure, который содержит нужное приложение логики.
Найдите и откройте определение рабочего процесса, которое по умолчанию отображается в шаблоне Resource Manager с именем LogicApp.json.
Вы можете применять и корректировать этот шаблон для развертывания в разных средах.
Откройте контекстное меню для определения и шаблона рабочего процесса. Выберите действие Открыть в конструкторе приложений логики.
Совет
Если у вас нет этой команды в Visual Studio 2019, убедитесь, что у вас есть последние обновления для Visual Studio.
В нижней части конструктора рабочего процесса выберите Представление кода.
Откроется редактор представления кода и отображается определение рабочего процесса в формате JSON.
Чтобы вернуться к представлению конструктора, в нижней части редактора представления кода выберите конструктор.
Параметры
Жизненный цикл развертывания обычно имеет различные среды для разработки, тестирования, промежуточного хранения и производства. При наличии значений, которые вы хотите повторно использовать в приложении логики без жесткого программирования или которые меняются в зависимости от потребностей развертывания, можно создать шаблон Azure Resource Manager для определения рабочего процесса, чтобы можно было автоматизировать развертывание приложений логики.
Выполните эти действия для параметризации или определения и использования параметров для этих значений. Затем можно указать значения в отдельном файле параметров, который передает эти значения в шаблон. Таким образом, вы сможете легко изменить эти значения без необходимости обновлять и повторно развертывать приложение логики. Дополнительные сведения см. в обзоре автоматизации развертывания приложений логики с помощью шаблонов Azure Resource Manager.
В шаблоне определите параметры шаблона и определения рабочего процесса, чтобы принимать значения, которые должны использоваться в развертывании и среде выполнения соответственно.
Параметры шаблона определяются в разделе параметров, который находится за пределами определения рабочего процесса. Параметры определения рабочего процесса определяются в разделе параметров, который находится внутри определения рабочего процесса.
Замените жестко закодированные значения выражениями, которые ссылаются на эти параметры. Выражения шаблона используют синтаксис, отличный от выражений определения рабочего процесса.
Не усложняйте код, не используя выражения шаблона, которые оцениваются при развертывании, в выражениях определения рабочего процесса, которые оцениваются во время выполнения. Используйте только выражения шаблона за пределами определения рабочего процесса. Внутри определения рабочего процесса используйте только его выражения.
При указании значений для параметров определения рабочего процесса можно ссылаться на параметры шаблона, используя раздел параметров, который находится за пределами определения рабочего процесса, но при этом находится в определении ресурса для приложения логики. Таким образом, можно передать значения параметров шаблона в параметры определения рабочего процесса.
Сохраните значения параметров в отдельном файле параметров и включите его в развертывание.
Обработка строк с помощью функций
Azure Logic Apps имеет различные функции для работы со строками. Например, предположим, что вам требуется передать имя компании из заказа в другую систему. Однако вы не уверены, как правильно обработать кодировку символов. К этой строке можно применить кодировку base64, однако чтобы избежать символов экранирования в URL-адресе, можно заменить несколько символов. Кроме того, вам нужна только функция substring для названия компании, так как первые пять символов не используются.
{
"$schema": "https://schema.management.azure.com/schemas/2016-06-01/Microsoft.Logic.json",
"contentVersion": "1.0.0.0",
"parameters": {
"order": {
"defaultValue": {
"quantity": 10,
"id": "myorder1",
"companyName": "NAME=Contoso"
},
"type": "Object"
}
},
"triggers": {
"request": {
"type": "Request",
"kind": "Http"
}
},
"actions": {
"order": {
"type": "Http",
"inputs": {
"method": "GET",
"uri": "https://www.example.com/?id=@{replace(replace(base64(substring(parameters('order').companyName,5,sub(length(parameters('order').companyName), 5) )),'+','-') ,'/' ,'_' )}"
}
}
},
"outputs": {}
}
Ниже показано, как этот пример обрабатывает строку, работая "наизнанку":
"uri": "https://www.example.com/?id=@{replace(replace(base64(substring(parameters('order').companyName,5,sub(length(parameters('order').companyName), 5) )),'+','-') ,'/' ,'_' )}"
length()
Получите имя компании, чтобы получить общее количество символов.Чтобы получить более короткую строку, вычитайте 5.
Вы получите
substring()
. Начнем с индекса5
и перейдем к оставшейся части строки.Преобразуйте эту подстроку в строку
base64()
.Теперь замените (
replace()
) все знаки+
на-
.Наконец замените (
replace()
) все знаки/
на_
.
Сопоставление элементов списка со значениями свойств с последующим использованием сопоставления в качестве параметра
Чтобы получить различные результаты на основе значения свойства, можно создать карту, которая соответствует каждому значению свойства результату, а затем использовать эту карту в качестве параметра.
Например, этот рабочий процесс определяет некоторые категории как параметры и схему, которая сопоставляет категории с определенным URL-адресом. Сначала рабочий процесс получает список статей. Затем он использует схему для поиска соответствия URL-адреса и категории для каждой статьи.
Функция
intersection()
проверяет, соответствует ли категория известной определенной категории.После получения соответствующей категории пример извлекает элемент из карты с помощью квадратных квадратных скобок:
parameters[...]
{
"$schema": "https://schema.management.azure.com/schemas/2016-06-01/Microsoft.Logic.json",
"contentVersion": "1.0.0.0",
"parameters": {
"specialCategories": {
"defaultValue": [
"science",
"google",
"microsoft",
"robots",
"NSA"
],
"type": "Array"
},
"destinationMap": {
"defaultValue": {
"science": "https://www.nasa.gov",
"microsoft": "https://www.microsoft.com/en-us/default.aspx",
"google": "https://www.google.com",
"robots": "https://en.wikipedia.org/wiki/Robot",
"NSA": "https://www.nsa.gov/"
},
"type": "Object"
}
},
"triggers": {
"Request": {
"type": "Request",
"kind": "http"
}
},
"actions": {
"getArticles": {
"type": "Http",
"inputs": {
"method": "GET",
"uri": "https://ajax.googleapis.com/ajax/services/feed/load?v=1.0&q=https://feeds.wired.com/wired/index"
}
},
"forEachArticle": {
"type": "foreach",
"foreach": "@body('getArticles').responseData.feed.entries",
"actions": {
"ifGreater": {
"type": "if",
"expression": "@greater(length(intersection(item().categories, parameters('specialCategories'))), 0)",
"actions": {
"getSpecialPage": {
"type": "Http",
"inputs": {
"method": "GET",
"uri": "@parameters('destinationMap')[first(intersection(item().categories, parameters('specialCategories')))]"
}
}
}
}
},
"runAfter": {
"getArticles": [
"Succeeded"
]
}
}
}
}
Получение данных с помощью функций данных
Чтобы получить данные из источника данных, который не поддерживает триггеры, для работы со временем и датами можно использовать функции данных. Например, это выражение определяет, как долго выполняются шаги этого рабочего процесса, работая "наизнанку":
"expression": "@less(actions('order').startTime,addseconds(utcNow(),-1))",
Из действия
order
извлекитеstartTime
.Получите текущее время с
utcNow()
помощью функции.Вычитать одну секунду:
addSeconds(..., -1)
Вы можете использовать другие единицы времени, например
minutes
илиhours
.Теперь вы можете сравнить эти два значения.
Если первое значение меньше второго, то это значит, что с момента первоначального размещения заказа прошло больше секунды.
Для форматирования дат можно использовать модули форматирования строк. Например, чтобы получить RFC1123, используйте utcnow('r')
. См. дополнительные сведения о форматировании даты.
{
"$schema": "https://schema.management.azure.com/schemas/2016-06-01/Microsoft.Logic.json",
"contentVersion": "1.0.0.0",
"parameters": {
"order": {
"defaultValue": {
"quantity": 10,
"id": "myorder-id"
},
"type": "Object"
}
},
"triggers": {
"Request": {
"type": "request",
"kind": "http"
}
},
"actions": {
"order": {
"type": "Http",
"inputs": {
"method": "GET",
"uri": "https://www.example.com/?id=@{parameters('order').id}"
}
},
"ifTimingWarning": {
"type": "If",
"expression": "@less(actions('order').startTime,addseconds(utcNow(),-1))",
"actions": {
"timingWarning": {
"type": "Http",
"inputs": {
"method": "GET",
"uri": "https://www.example.com/?recordLongOrderTime=@{parameters('order').id}¤tTime=@{utcNow('r')}"
}
}
},
"runAfter": {
"order": [
"Succeeded"
]
}
}
},
"outputs": {}
}
Связанный контент
- Conditional statements: Run steps based on a condition in logic apps (Условные операторы. Выполнение шагов на основе условия в приложениях логики)
- Операторы switch. Выполнение различных шагов на основе различных значений в приложениях логики
- Loops: Process arrays or repeat actions until a condition is met (Циклы. Обработка массивов или повторение действий до выполнения условия)
- Create or join parallel branches in your logic app (Создание или присоединение параллельных ветвей в приложении логики)
- Области. Выполнение шагов на основе состояния группы в приложениях логики
- Схема языка определения рабочих процессов в Azure Logic Apps
- Действия рабочего процесса и триггеры для Azure Logic Apps