Vytváření, úpravy nebo rozšiřování souborů JSON pro definice pracovních postupů aplikací logiky v Azure Logic Apps
Platí pro: Azure Logic Apps (Consumption)
Při vytváření podnikových řešení integrace s automatizovanými pracovními postupy v Azure Logic Apps používají základní definice pracovních postupů jednoduchý a deklarativní zápis objektů JavaScriptu (JSON) spolu se schématem WDL (Workflow Definition Language) pro jejich popis a ověření. Tyto formáty usnadňují čtení a pochopení definic pracovních postupů bez znalosti kódu. Pokud chcete automatizovat vytváření a nasazování prostředků aplikace logiky, můžete do šablon Azure Resource Manageru zahrnout definice pracovních postupů jako prostředky Azure. K vytváření, správě a nasazování aplikací logiky pak můžete použít Azure PowerShell, Azure CLI nebo rozhraní REST API služby Azure Logic Apps.
Pokud chcete pracovat s definicemi pracovních postupů ve formátu JSON, otevřete editor zobrazení kódu při práci na webu Azure Portal nebo editoru Visual Studio Code. Definici můžete také zkopírovat a vložit do libovolného požadovaného editoru.
Poznámka:
Některé funkce Azure Logic Apps, například definování parametrů a více triggerů v definicích pracovního postupu, jsou dostupné jenom ve formátu JSON, nikoli v návrháři pracovního postupu. Proto pro tyto úlohy musíte pracovat v zobrazení kódu nebo jiném editoru.
Upravit JSON – Azure Portal
Do vyhledávacího pole webu Azure Portal zadejte a vyberte aplikace logiky. Na stránce Aplikace logiky vyberte požadovaný prostředek aplikace logiky Consumption.
V nabídce aplikace logiky v části Vývojové nástroje vyberte zobrazení kódu aplikace logiky.
Otevře se editor zobrazení kódu a zobrazí definici pracovního postupu aplikace logiky ve formátu JSON.
Upravit JSON – Visual Studio Code
Viz Úprava nasazené aplikace logiky v editoru Visual Studio Code
Upravit JSON – Visual Studio
Důležité
Rozšíření Azure Logic Apps Tools for Visual Studio je zastaralé a už nepřijímá aktualizace. Pokud chcete vytvářet a spravovat pracovní postupy aplikací logiky pomocí místního vývojového prostředí, projděte si následující dokumentaci:
Než budete moct pracovat na definici pracovního postupu Consumption v sadě Visual Studio, ujistěte se, že jste nainstalovali požadované nástroje. V sadě Visual Studio můžete otevírat aplikace logiky vytvořené a nasazené přímo z webu Azure Portal nebo jako projekty Azure Resource Manageru ze sady Visual Studio.
Otevřete řešení sady Visual Studio nebo projekt skupiny prostředků Azure, který obsahuje vaši aplikaci logiky.
Vyhledejte a otevřete definici pracovního postupu, která se ve výchozím nastavení zobrazí v šabloně Resource Manageru s názvem LogicApp.json.
Tuto šablonu můžete použít a přizpůsobit pro nasazení do různých prostředí.
Otevřete místní nabídku pro definici a šablonu pracovního postupu. Vyberte Otevřít pomocí Návrháře aplikace logiky.
Tip
Pokud tento příkaz v sadě Visual Studio 2019 nemáte, ujistěte se, že máte nejnovější aktualizace pro Visual Studio.
V dolní části návrháře pracovního postupu zvolte Zobrazení kódu.
Otevře se editor zobrazení kódu a zobrazí definici pracovního postupu ve formátu JSON.
Pokud se chcete vrátit do zobrazení návrháře, zvolte v dolní části editoru zobrazení kódu návrh.
Parametry
Životní cyklus nasazení má obvykle různá prostředí pro vývoj, testování, přípravu a produkci. Pokud máte hodnoty, které chcete opakovaně používat v celé aplikaci logiky, aniž byste museli pevně zakódovat nebo se liší podle potřeb nasazení, můžete pro definici pracovního postupu vytvořit šablonu Azure Resource Manageru, abyste mohli také automatizovat nasazení aplikace logiky.
Tyto obecné kroky použijte k parametrizaci nebo definování a použití parametrů pro tyto hodnoty. Hodnoty pak můžete zadat v samostatném souboru parametrů, který tyto hodnoty předá šabloně. Díky tomu můžete tyto hodnoty snadněji změnit, aniž byste museli aplikaci logiky aktualizovat a znovu nasadit. Úplné podrobnosti najdete v tématu Přehled: Automatizace nasazení pro aplikace logiky pomocí šablon Azure Resource Manageru.
V šabloně definujte parametry šablony a parametry definice pracovního postupu pro přijetí hodnot, které se mají použít při nasazení a za běhu.
Parametry šablony jsou definovány v oddílu parametrů, který je mimo definici pracovního postupu, zatímco parametry definice pracovního postupu jsou definovány v oddílu parametrů, který je uvnitř definice pracovního postupu.
Nahraďte pevně zakódované hodnoty výrazy, které odkazují na tyto parametry. Výrazy šablony používají syntaxi, která se liší od výrazů definice pracovního postupu.
Vyhněte se komplikaci kódu tím, že nepoužíváte výrazy šablony, které se vyhodnocují při nasazení, uvnitř výrazů definic pracovních postupů, které se vyhodnocují za běhu. Používejte pouze výrazy šablon mimo definici pracovního postupu. V definici pracovního postupu používejte pouze výrazy definice pracovního postupu.
Když zadáte hodnoty parametrů definice pracovního postupu, můžete odkazovat na parametry šablony pomocí oddílu parametrů, který je mimo definici pracovního postupu, ale stále uvnitř definice prostředku pro vaši aplikaci logiky. Tímto způsobem můžete předat hodnoty parametrů šablony do parametrů definice pracovního postupu.
Uložte hodnoty parametrů do samostatného souboru parametrů a tento soubor zahrňte do nasazení.
Zpracování řetězců pomocí funkcí
Azure Logic Apps má různé funkce pro práci s řetězci. Předpokládejme například, že chcete předat název společnosti z objednávky do jiného systému. Nejste si ale jistí, jak správně zpracovávat kódování znaků. U tohoto řetězce můžete provést kódování base64, ale abyste se vyhnuli řídicím znakům v adrese URL, můžete místo toho nahradit několik znaků. Také potřebujete podřetědět pro název společnosti, protože prvních pět znaků se nepoužívá.
{
"$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": {}
}
Tento postup popisuje, jak tento příklad zpracovává tento řetězec, a to z vnitřní strany na vnější:
"uri": "https://www.example.com/?id=@{replace(replace(base64(substring(parameters('order').companyName,5,sub(length(parameters('order').companyName), 5) )),'+','-') ,'/' ,'_' )}"
length()
Získejte název společnosti, abyste získali celkový počet znaků.Pokud chcete získat kratší řetězec, odečtěte 5.
Teď získáte
substring()
. Začněte indexem5
a přejděte do zbytku řetězce.Převeďte tento podřetězc na
base64()
řetězec.Teď
replace()
jsou všechny+
znaky se-
znaky.replace()
Nakonec všechny/
znaky s_
znaky.
Mapování položek seznamu na hodnoty vlastností a následné použití map jako parametrů
Pokud chcete získat různé výsledky založené na hodnotě vlastnosti, můžete vytvořit mapu, která odpovídá každé hodnotě vlastnosti výsledku, a pak tuto mapu použít jako parametr.
Tento pracovní postup například definuje některé kategorie jako parametry a mapu, která odpovídá těmto kategoriím s konkrétní adresou URL. Nejprve pracovní postup získá seznam článků. Pracovní postup pak pomocí mapy vyhledá adresu URL odpovídající kategorii pro každý článek.
Funkce
intersection()
zkontroluje, jestli kategorie odpovídá známé definované kategorii.Jakmile příklad získá odpovídající kategorii, příklad načte položku z mapy pomocí hranatých závorek:
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"
]
}
}
}
}
Získání dat pomocí funkcí Date
Pokud chcete získat data ze zdroje dat, který nativně nepodporuje triggery, můžete místo toho použít funkce Date pro práci s časy a kalendářními daty. Tento výraz například zjistí, jak dlouho se kroky tohoto pracovního postupu provádějí, a to od vnitřních po vnější:
"expression": "@less(actions('order').startTime,addseconds(utcNow(),-1))",
order
Z akce extrahujtestartTime
.Získejte aktuální čas pomocí
utcNow()
funkce.Odečíst jednu sekundu:
addSeconds(..., -1)
Můžete použít jiné jednotky času, například
minutes
hours
.Teď můžete tyto dvě hodnoty porovnat.
Pokud je první hodnota menší než druhá hodnota, uplynulo od prvního umístění objednávky více než jedna sekunda.
K formátování kalendářních dat můžete použít formátovací moduly řetězců. Pokud chcete například získat RFC1123, použijte utcnow('r')
. Přečtěte si další informace o formátování data.
{
"$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": {}
}
Související obsah
- Spuštění kroků na základě podmínky (podmíněné příkazy)
- Spuštění kroků na základě různých hodnot (příkazy switch)
- Spuštění a opakování kroků (smyčky)
- Spuštění nebo sloučení paralelních kroků (větví)
- Spuštění kroků na základě seskupených stavů akcí (oborů)
- Schéma jazyka definice pracovního postupu pro Azure Logic Apps
- Akce a triggery pracovního postupu pro Azure Logic Apps