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)
Když vytváříte řešení podnikové integrace s automatizovanými pracovními postupy v Azure Logic Apps, základní definice pracovních postupů používají jednoduchý a deklarativní javascriptový zápis JSON (Object Notation) spolu se schématem WDL (Workflow Definition Language) pro jejich popis a ověření. Díky těmto formátům jsou definice pracovních postupů čitelnější a srozumitelnější, aniž byste museli znát mnoho informací o kódu. Pokud chcete automatizovat vytváření a nasazování prostředků aplikace logiky, můžete definice pracovních postupů zahrnout jako prostředky Azure v šablonách Azure Resource Manager. 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 v Azure Portal nebo v sadě Visual Studio nebo zkopírujte definici do libovolného požadovaného editoru. Pokud s Azure Logic Apps začínáte, přečtěte si téma Vytvoření příkladu pracovního postupu aplikace logiky Consumption.
Poznámka
Některé funkce Azure Logic Apps, jako je 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. Pro tyto úlohy tedy musíte pracovat v zobrazení kódu nebo v jiném editoru.
Upravit JSON – Azure Portal
Přihlaste se k webu Azure Portal.
V nabídce vlevo zvolte Všechny služby. Ve vyhledávacím poli najděte "logic apps" a pak ve výsledcích vyberte aplikaci logiky.
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 ve formátu JSON.
Úprava FORMÁTU JSON – Visual Studio
Než budete moct pracovat na definici pracovního postupu v sadě Visual Studio, ujistěte se, že jste nainstalovali požadované nástroje. Pokud chcete vytvořit aplikaci logiky pomocí sady Visual Studio, projděte si rychlý start: Automatizace úloh a procesů pomocí Azure Logic Apps – Visual Studio.
V sadě Visual Studio můžete otevírat aplikace logiky, které byly vytvořeny a nasazeny buď přímo z Azure Portal, nebo jako projekty Azure Resource Manager 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í zobrazuje v šabloně Resource Manager 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, zkontrolujte, jestli 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, v dolní části editoru zobrazení kódu zvolte 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 bez pevného kódování, nebo které se liší v závislosti na vašich potřebách nasazení, můžete vytvořit šablonu Azure Resource Manager pro definici pracovního postupu, abyste mohli také automatizovat nasazení aplikace logiky.
Pomocí těchto obecných kroků místo toho tyto hodnoty parametrizujete nebo definujte a používejte pro tyto hodnoty. Hodnoty pak můžete zadat v samostatném souboru parametrů, který tyto hodnoty předá do šablony. Díky tomu můžete tyto hodnoty snadněji změnit, aniž byste museli aktualizovat a znovu nasadit aplikaci logiky. Úplné podrobnosti najdete v tématu Přehled: Automatizace nasazení aplikací logiky pomocí šablon Azure Resource Manager.
V šabloně definujte parametry šablony a parametry definice pracovního postupu pro příjem 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.
Pevně zakódované hodnoty nahraďte výrazy, které na tyto parametry odkazují. 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ů definice pracovního postupu, které se vyhodnocují za běhu. Používejte pouze výrazy šablony 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 zahrňte tento soubor do nasazení.
Zpracování řetězců s funkcemi
Azure Logic Apps nabízí 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ě zacházet s kódováním znaků. Pro tento řetězec 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ů. Navíc potřebujete jenom podřetěžce 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": {}
}
Tyto kroky popisují, jak tento příklad zpracovává tento řetězec, který funguje zevnitř ven:
"uri": "https://www.example.com/?id=@{replace(replace(base64(substring(parameters('order').companyName,5,sub(length(parameters('order').companyName), 5) )),'+','-') ,'/' ,'_' )}"
Získejte název
length()
společnosti, abyste získali celkový počet znaků.Pokud chcete získat kratší řetězec, odčítáte
5
.Teď získejte
substring()
. Začněte indexem5
a přejděte na zbytek řetězce.Převeďte tento podřetězc na
base64()
řetězec.Teď
replace()
všechny znaky se+
-
znaky.Nakonec všechny
replace()
znaky se/
_
znaky.
Mapovat položky seznamu na hodnoty vlastností a pak používat mapy jako parametry
Pokud chcete získat různé výsledky založené na hodnotě vlastnosti, můžete vytvořit mapu, která porovná každou hodnotu vlastnosti s výsledkem, a pak toto mapování 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 najde adresu URL odpovídající kategorii pro každý článek.
Funkce
intersection()
zkontroluje, jestli kategorie odpovídá známé definované kategorii.Po získání odpovídající kategorie tento příklad vytáhne 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 daty. Tento výraz například zjistí, jak dlouho trvají kroky tohoto pracovního postupu, které pracují zevnitř a ven:
"expression": "@less(actions('order').startTime,addseconds(utcNow(),-1))",
order
Z akce extrahujtestartTime
.Získejte aktuální čas pomocí
utcNow()
.Odečtěte jednu sekundu:
Můžete použít jiné časové jednotky, například
minutes
nebohours
.Teď můžete tyto dvě hodnoty porovnat.
Pokud je první hodnota menší než druhá hodnota, pak od prvního zadání objednávky uplynula více než jedna sekunda.
K formátování kalendářních dat můžete použít formátovací moduly řetězců. Pokud například chcete 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": {}
}
Další kroky
- 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ě stavu seskupené akce (rozsahy)
- Další informace o schématu jazyka definice pracovního postupu pro Azure Logic Apps
- Další informace o akcích a triggerech pracovního postupu pro Azure Logic Apps