JSON maken, bewerken of uitbreiden voor werkstroomdefinities voor logische apps in Azure Logic Apps
Van toepassing op: Azure Logic Apps (verbruik)
Wanneer u oplossingen voor bedrijfsintegratie maakt met geautomatiseerde werkstromen in Azure Logic Apps, gebruiken de onderliggende werkstroomdefinities eenvoudige en declaratieve JavaScript Object Notation (JSON) samen met het WDL-schema (Workflow Definition Language) voor hun beschrijving en validatie. Deze indelingen maken werkstroomdefinities gemakkelijker te lezen en te begrijpen zonder veel te weten over code. Wanneer u het maken en implementeren van logische app-resources wilt automatiseren, kunt u werkstroomdefinities opnemen als Azure-resources in Azure Resource Manager-sjablonen. Als u logische apps wilt maken, beheren en implementeren, kunt u vervolgens Azure PowerShell, Azure CLI of de REST API's van Azure Logic Apps gebruiken.
Als u wilt werken met werkstroomdefinities in JSON, opent u de codeweergave-editor wanneer u in Azure Portal of in Visual Studio werkt, of kopieert u de definitie naar een gewenste editor. Als u geen toegang hebt tot Azure Logic Apps, raadpleegt u Een voorbeeldwerkstroom voor logische apps voor verbruik maken.
Notitie
Sommige mogelijkheden van Azure Logic Apps, zoals het definiëren van parameters en meerdere triggers in werkstroomdefinities, zijn alleen beschikbaar in JSON, niet in de werkstroomontwerper. Voor deze taken moet u dus werken in codeweergave of een andere editor.
JSON bewerken - Azure Portal
Meld u aan bij het Azure-portaal.
Kies Alle services in het linkermenu. Zoek in het zoekvak 'logische apps' en selecteer vervolgens uw logische app in de resultaten.
Selecteer in het menu van uw logische app onder Ontwikkelhulpprogramma's de weergave Code van logische app.
De codeweergave-editor wordt geopend en toont uw werkstroomdefinitie in JSON-indeling.
JSON bewerken - Visual Studio
Voordat u aan uw werkstroomdefinitie in Visual Studio kunt werken, moet u ervoor zorgen dat u de vereiste hulpprogramma's hebt geïnstalleerd. Als u een logische app wilt maken met Visual Studio, raadpleegt u de quickstart: Taken en processen automatiseren met Azure Logic Apps - Visual Studio.
In Visual Studio kunt u logische apps openen die rechtstreeks vanuit Azure Portal of als Azure Resource Manager-projecten vanuit Visual Studio zijn gemaakt en geïmplementeerd.
Open de Visual Studio-oplossing of het Azure Resource Group-project dat uw logische app bevat.
Zoek en open uw werkstroomdefinitie, die standaard wordt weergegeven in een Resource Manager-sjabloon met de naam LogicApp.json. U kunt deze sjabloon gebruiken en aanpassen voor implementatie in verschillende omgevingen.
Open het snelmenu voor uw werkstroomdefinitie en -sjabloon. Selecteer Openen met Logic App-ontwerpfunctie.
Tip
Als u deze opdracht niet hebt in Visual Studio 2019, controleert u of u de nieuwste updates voor Visual Studio hebt.
Kies onder aan de werkstroomontwerper de optie Codeweergave.
De codeweergave-editor wordt geopend en toont uw werkstroomdefinitie in JSON-indeling.
Als u wilt terugkeren naar de ontwerpweergave, kiest u onder aan de codeweergave-editor ontwerp.
Parameters
De levenscyclus van de implementatie heeft meestal verschillende omgevingen voor ontwikkeling, test, fasering en productie. Wanneer u waarden hebt die u wilt hergebruiken in uw logische app zonder hardcoding of die variëren op basis van uw implementatiebehoeften, kunt u een Azure Resource Manager-sjabloon maken voor uw werkstroomdefinitie, zodat u ook de implementatie van logische apps kunt automatiseren.
Volg deze algemene stappen voor het parameteriseren of definiëren en gebruiken van parameters voor deze waarden. Vervolgens kunt u de waarden opgeven in een afzonderlijk parameterbestand dat deze waarden doorgeeft aan uw sjabloon. Op die manier kunt u deze waarden eenvoudiger wijzigen zonder dat u uw logische app hoeft bij te werken en opnieuw te implementeren. Zie Overzicht: Implementatie automatiseren voor logische apps met Azure Resource Manager-sjablonen voor meer informatie.
Definieer in uw sjabloon sjabloonparameters en werkstroomdefinitieparameters om respectievelijk de waarden te accepteren die tijdens de implementatie en runtime moeten worden gebruikt.
Sjabloonparameters worden gedefinieerd in een sectie met parameters die zich buiten uw werkstroomdefinitie bevinden, terwijl parameters voor werkstroomdefinities worden gedefinieerd in een sectie met parameters in uw werkstroomdefinitie.
Vervang de vastgelegde waarden door expressies die naar deze parameters verwijzen. Sjabloonexpressies gebruiken syntaxis die verschilt van expressies voor werkstroomdefinities.
Vermijd het compliceren van uw code door geen sjabloonexpressies te gebruiken, die tijdens de implementatie worden geëvalueerd, binnen werkstroomdefinitieexpressies, die tijdens runtime worden geëvalueerd. Gebruik alleen sjabloonexpressies buiten uw werkstroomdefinitie. Gebruik alleen expressies voor werkstroomdefinities in uw werkstroomdefinitie.
Wanneer u de waarden voor uw werkstroomdefinitieparameters opgeeft, kunt u verwijzen naar sjabloonparameters met behulp van de sectie parameters buiten uw werkstroomdefinitie, maar nog steeds binnen de resourcedefinitie voor uw logische app. Op die manier kunt u sjabloonparameterwaarden doorgeven aan de parameters van uw werkstroomdefinitie.
Sla de waarden voor uw parameters op in een afzonderlijk parameterbestand en neem dat bestand op bij uw implementatie.
Tekenreeksen verwerken met functies
Azure Logic Apps heeft verschillende functies voor het werken met tekenreeksen. Stel dat u een bedrijfsnaam van een order wilt doorgeven aan een ander systeem. U weet echter niet zeker wat de juiste verwerking is voor tekencodering. U kunt base64-codering uitvoeren op deze tekenreeks, maar om escapes in de URL te voorkomen, kunt u in plaats daarvan meerdere tekens vervangen. U hebt ook alleen een subtekenreeks nodig voor de bedrijfsnaam, omdat de eerste vijf tekens niet worden gebruikt.
{
"$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": {}
}
In deze stappen wordt beschreven hoe in dit voorbeeld deze tekenreeks wordt verwerkt, die van binnen naar buiten werkt:
"uri": "https://www.example.com/?id=@{replace(replace(base64(substring(parameters('order').companyName,5,sub(length(parameters('order').companyName), 5) )),'+','-') ,'/' ,'_' )}"
Haal de
length()
naam van het bedrijf op, dus u krijgt het totale aantal tekens.Als u een kortere tekenreeks wilt ophalen, trekt u
5
af.Haal nu een
substring()
. Begin bij de index5
en ga naar de rest van de tekenreeks.Converteer deze subtekenreeks naar een
base64()
tekenreeks.Nu
replace()
alle+
tekens met-
tekens.Ten slotte
replace()
alle/
tekens met_
tekens.
Lijstitems toewijzen aan eigenschapswaarden en vervolgens kaarten gebruiken als parameters
Als u verschillende resultaten wilt ophalen op basis van de waarde van een eigenschap, kunt u een kaart maken die overeenkomt met elke eigenschapswaarde in een resultaat en die kaart vervolgens als parameter gebruiken.
Deze werkstroom definieert bijvoorbeeld bepaalde categorieën als parameters en een kaart die overeenkomt met die categorieën met een specifieke URL. Eerst haalt de werkstroom een lijst met artikelen op. Vervolgens gebruikt de werkstroom de kaart om de URL te vinden die overeenkomt met de categorie voor elk artikel.
De
intersection()
functie controleert of de categorie overeenkomt met een bekende gedefinieerde categorie.Nadat een overeenkomende categorie is opgehaald, haalt het voorbeeld het item uit de kaart met vierkante haken:
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"
]
}
}
}
}
Gegevens ophalen met datumfuncties
Als u gegevens wilt ophalen uit een gegevensbron die geen systeemeigen ondersteuning biedt voor triggers, kunt u datumfuncties gebruiken voor het werken met tijden en datums. Met deze expressie wordt bijvoorbeeld bepaald hoelang de stappen van deze werkstroom worden uitgevoerd, waarbij van binnen naar buiten wordt gewerkt:
"expression": "@less(actions('order').startTime,addseconds(utcNow(),-1))",
Pak uit de
order
actie destartTime
.De huidige tijd ophalen met
utcNow()
.Eén seconde aftrekken:
U kunt andere tijdseenheden gebruiken, zoals
minutes
ofhours
.Nu kunt u deze twee waarden vergelijken.
Als de eerste waarde kleiner is dan de tweede waarde, is er meer dan één seconde verstreken sinds de bestelling voor het eerst is geplaatst.
Als u datums wilt opmaken, kunt u tekenreeksopmaakers gebruiken. Als u bijvoorbeeld de RFC1123 wilt ophalen, gebruikt u utcnow('r')
.
Meer informatie over datumopmaak.
{
"$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": {}
}
Volgende stappen
- Stappen uitvoeren op basis van een voorwaarde (voorwaardelijke instructies)
- Stappen uitvoeren op basis van verschillende waarden (switch-instructies)
- Stappen uitvoeren en herhalen (lussen)
- Parallelle stappen uitvoeren of samenvoegen (vertakkingen)
- Stappen uitvoeren op basis van de gegroepeerde actiestatus (bereiken)
- Meer informatie over het schema workflowdefinitietaal voor Azure Logic Apps
- Meer informatie over werkstroomacties en triggers voor Azure Logic Apps