Beskriva ett Azure Logic Apps-arbetsflöde med hjälp av arbetsflödesdefinitionsspråket
Du definierar ett Azure Logic App-arbetsflödes struktur och arbetsflöde med hjälp av ett JSON-dokument. Det här dokumentet innehåller en JSON-beskrivning av de element som utgör logikappens arbetsflöde och schemat Arbetsflödesdefinitionsspråk validerar det. Det enklaste sättet att förklara schemat är att undersöka ett befintligt arbetsflöde som skapats med hjälp av arbetsflödesdesignern i Azure Portal och sedan visa logikappens JSON-beskrivning.
I exempelscenariot vill du förse dina konsulter med vanliga arbetsflöden som de kan anpassa till de specifika behoven hos de universitet som de arbetar med. Du vill göra det så enkelt som möjligt att anpassa och distribuera varje arbetsflöde, så du väljer att titta på koden bakom arbetsflödet, närmare bestämd JSON för arbetsflödesdefinition.
Arbetsflödesdesigner
Med arbetsflödesdesignern kan du skapa och felsöka arbetsflödet för ett logikappsarbetsflöde grafiskt. Designern låter också utvecklare titta under huven på ett arbetsflöde för att se hur det implementeras. Följande bild visar ett exempel på ett enkelt arbetsflöde som utlöses genom att skicka en HTTP GET-begäran till en angiven URL. Resultatet returneras i HTTP-svaret. I det här exemplet skickar arbetsflödet tillbaka ett enkelt Hello Logic Apps-mall! -meddelande.
Nu ska vi titta på arbetsflödesdefinitionsspråket som används av JSON-mallen.
Kodvy
Fönstret Kodvy visar JSON-dokumentet som beskriver arbetsflödet. I exempelappen ser JSON ut så här:
{
"definition": {
"$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
"actions": {
"Response": {
"inputs": {
"body": "Hello Azure Logic Apps Template!",
"statusCode": 200
},
"kind": "Http",
"runAfter": {},
"type": "Response"
}
},
"contentVersion": "1.0.0.0",
"outputs": {},
"parameters": {},
"triggers": {
"manual": {
"inputs": {
"method": "GET",
"schema": {}
},
"kind": "Http",
"type": "Request"
}
}
}
}
Observera avsnitten i omfånget definition
som relaterar till de åtgärder och utlösare som visas i designern. Du kan redigera JSON-koden i det här dokumentet för att återspegla eventuella ändringar som krävs i logikappens arbetsflödesfunktioner. Du kan också lägga till ytterligare åtgärder och ange hur logiken i arbetsflödet körs från en åtgärd till en annan.
Avsnittet Utlösare
Avsnittet triggers
innehåller beskrivningen av typen av utlösare och hur den kan anropas. I det här exemplet är utlösaren en enkel HTTP-utlösare som körs som svar på en HTTP GET-begäran.
"triggers": {
"manual": {
"inputs": {
"method": "GET",
"schema": {}
},
"kind": "Http",
"type": "Request"
}
}
En utlösare måste innehålla följande element:
Ett unikt namn i arbetsflödet. I föregående exempel är
manual
utlösarens standardnamn , men du kan ersätta standardnamnet med en mer meningsfull identifierare.Utlösartypen. Typen anger den händelse som gör att utlösaren körs. En
Request
utlösare körs som svar på en HTTP-begäran. Andra utlösartyper som är tillgängliga:Recurrence
för att skapa en utlösare som körs enligt ett återkommande schema.HttpWebhook
för att lyssna på händelser på en slutpunkt.ApiConnection
för att svara på händelser som utlöses av andra Azure-tjänster, till exempel ett meddelande som kommer till en meddelandekö, ett e-postmeddelande och så vidare. Utlösartypen ApiConnection är generaliserad och du anger ytterligare information som anger vilken typ av tjänst och eventuell anslutningsinformation som krävs.
Avsnittet
inputs
. Det här avsnittet anger de data som definierar utlösarens beteende. För en begärandeutlösaremethod
anger den typ av HTTP-begäran som gör att utlösaren körs. För enApiConnection
utlösareinputs
innehåller avsnittet information om hur du ansluter till resursen som utlöser händelsen (till exempel en meddelandekö anslutningssträng). Om utlösaren är enRequest
utlösare anger indatadefinitionensschema
avsnitt det schema som nyttolasten för begärandetexten ska överensstämma med. HTTP GET-begäranden har ingen begärandetext, så ärschema
tom i föregående exempel.
I följande exempel visas definitionen av en annan Request
utlösare som startar ett arbetsflöde och tar emot HTTP POST-begäranden. En POST-begäran innehåller vanligtvis en begärandetext som innehåller de data som ska publiceras. Begärandetexten i det här exemplet innehåller namn och adress för en kund, vilket utgör gata och ort.
"mypostrequest": {
"type": "Request",
"kind": "Http",
"inputs": {
"method": "POST",
"schema": {
"type": "object",
"properties": {
"customerName": {
"type": "String"
},
"customerAddress": {
"type": "Object",
"properties": {
"streetAddress": {
"type": "string"
},
"city": {
"type": "string"
}
}
}
}
}
}
}
En utlösare kan även ange villkor. Utlösaren utlöses endast om dessa villkor uppfylls. Du definierar villkor i det valfria avsnittet conditions (villkor). Du kanske till exempel vill köra mypostrequest
utlösaren (visas i föregående exempel), endast om begärandetexten anger en stad New York
i :
"mypostrequest": {
"type": "Request",
"kind": "Http",
"inputs": {
...
}
"conditions": [
{
"expression": "@equals(triggerOutputs()['body']['customerAddress']['city'], 'New York')"
}
]
}
Avsnittet Åtgärder
I avsnittet för en logikapp definieras arbetsflödets actions
logik och struktur. Avsnittet innehåller en serie åtgärder. En åtgärd är ett grundläggande byggblock för att skapa arbetsflöden. Åtgärder tar indata och skapar utdata som skickas till nästa åtgärd i arbetsflödet. I följande tabell visas olika tillgängliga åtgärdstyper:
Åtgärd | beskrivning |
---|---|
ApiConnection |
Skickar en HTTP-begäran till en specifik tjänst. Med den här åtgärdstypen kan du integrera ett logikapparbetsflöde med Azure-funktioner som Azure Service Bus, Azure Event Grid och andra. Åtgärden kräver indata som innehåller en anslutningssträng för åtkomst till tjänsten samt eventuell ytterligare information och parametrar som krävs för att anropa tjänsten. |
Compose |
Kombinerar flera indata och uttryck i ett enda stycke utdata. |
Function |
Låter dig anropa en Azure-funktion. |
HTTP |
Skickar en HTTP-begäran till en HTTP-slutpunkt i stället för en Azure-tjänst. |
Join |
Tar en matris med dataobjekt som indata och genererar sträng som innehåller dessa objekt avgränsade med en angiven avgränsare. |
Parse |
Parsar ett JSON-dokument i en uppsättning token med hjälp av ett angivet schema. |
Query |
Filtrerar objekten i en indatamatris med ett angivet villkor. |
Response |
Skapar ett svar för en HTTP-begäran. |
Table |
Genererar en HTML-tabell från en matris med JSON-objekt. |
Terminate |
Avbryter ett arbetsflöde omedelbart. |
Wait |
Pausar arbetsflödet under ett angivet intervall eller tills en tidsgräns uppnås. |
Workflow |
Kör ett annat arbetsflöde för logikappen. |
Condition |
En uppsättning åtgärdstyper (Foreach , If , Switch och Until ) som gör att du kan implementera programmatiskt flöde av kontroll i ett arbetsflöde. Du kan iterera igenom objekten i en samling, fatta beslut baserat på värdena av indataparametrar och loopa tills ett visst villkor uppfylls. |
InitializeVariable ,IncrementVariable ,DecrementVariable ,SetVariable |
Definierar, initierar, tilldelar och ändrar variabler som du kan skicka mellan åtgärdsobjekt i ett arbetsflöde. |
Liksom en utlösare måste varje åtgärd ha ett unikt namn i arbetsflödet. I följande exempel är Response
standardåtgärdsnamnet , men du kan använda en giltig och mer meningsfull identifierare. En åtgärd måste ha ett inputs
avsnitt som anger de data som åtgärden fungerar på. I åtgärden Svar kan du ange data för ett uttryck som ska returneras i svarsmeddelandet, tillsammans med en HTTP-statuskod.
I vår grundläggande arbetsflödesdefinition genererar åtgärden ett HTTP-svar där brödtexten är ett kort meddelande.
"actions": {
"Response": {
"inputs": {
"body": "Hello Azure Logic Apps Template!",
"statusCode": 200
},
"kind": "Http",
"runAfter": {},
"type": "Response"
}
}
Avsnittet runAfter
anger var åtgärden körs i arbetsflödessekvensen. I föregående exempel finns det bara en enda åtgärd, så den körs alltid när utlösaren utlöses. Om arbetsflödet hade flera åtgärder kan du ange namnet på en åtgärd och status för åtgärden i det här avsnittet. Åtgärden körs om åtgärden runAfter
slutförs med angiven status. Följande kod visar ett exempel. mySecondAction
Åtgärden körs efter myFirstAction
, men endast om myFirstAction
avslutas med statusen Succeeded
:
"actions": {
"mySecondAction": {
"inputs": {
...
},
"runAfter": {
"myFirstAction": [
"Succeeded"
]
},
"type": ...
},
"myFirstAction": {
"inputs": {
...
},
"runAfter": {},
"type": ...
}
}
Avsnittet Utdata
Använd avsnittet outputs
för att definiera de data som arbetsflödet kan returnera när det har slutförts. Du kan spåra en viss status eller data för varje körning av arbetsflödet. Du kan undersöka utdata från varje körning av ett arbetsflöde med hjälp av Azure Logic Apps-körningshistoriken, som är tillgänglig i Azure Portal eller arbetsflödets REST API.
Formatet för avsnittet outputs
ser ut så här:
"outputs": {
"<key-name>": {
"type": "<key-type>",
"value": "<key-value>"
}
}
Arbetsflödesuttryck
Du kan använda ett arbetsflödesuttryck i stället för ett fast värde, en variabel eller en konstant. Du kan också placera ett uttryck var som helst i ett JSON-strängvärde genom att prefixera uttrycket med at-tecknet (@). Du kan till exempel använda funktionen @parameters
i ett uttryck för att hämta värdet för en namngiven parameter (parametrar beskrivs i nästa avsnitt).
"customerFullName": "Bill Frost",
"accountName": "@parameters('customerName')"
Azure Logic Apps innehåller inbyggda funktioner som du kan använda för att skapa komplexa uttryck:
- Strängfunktioner: För att sammanfoga eller dela upp strängar, konvertera tecken mellan versaler och gemener och söka efter delsträngar.
- Samlingsfunktioner: För att identifiera om en samling innehåller objekt som matchar ett visst mönster, hämtar objekt från en samling och kombinerar samlingar.
- Logiska jämförelsefunktioner: För att identifiera om operander är samma, olika, numeriskt större eller numeriskt mindre än varandra.
- Konverteringsfunktioner: För att ändra typ eller format för data.
- Matematiska funktioner: till exempel
add
,sub
,div
ochmul
, plus flera andra. - Datum- och tidsfunktioner: För parsning och bearbetning av datum och tider.
- Arbetsflödesfunktioner: För att hämta information om data som skickas till en arbetsflödesåtgärd. Funktionen (som tidigare visades) hämtar till exempel
parameter
värdet för en namngivenbody
parameter och funktionen (visas tidigare) returnerar de data som genereras av en åtgärd. - JSON- och XML-manipulationsfunktioner: För parsning och bearbetning av JSON- och XML-dokument.
Du kan definiera variabler i avsnittet i inputs
en InitializeVariable
åtgärd och du kan ändra dessa variabler med hjälp av uttryck. Läs värdet för en variabel med hjälp variables
av funktionen . I följande exempel används en InitializeVariable
åtgärd för att skapa en heltalsvariabel med namnet myIntegerVariable
och initiera den till 99
. Det här exemplet visar också en Condition
åtgärd med If
typen . Villkoret använder ett uttryck för att testa myIntegerVariable
variabelvärdet, och om det matchar värdet 100
använder villkoret en HTTP-åtgärd för att utföra en GET-begäran.
"actions": {
"Condition": {
"actions": {
"HTTP": {
"inputs": {
"method": "GET",
"uri": "http://dummyurl.com"
},
"runAfter": {},
"type": "Http"
}
},
"expression": {
"equals": [
"@variables('myIntegerVariable')",
100
]
} ,
"runAfter": {
"Initialize": [
"Succeeded"
]
},
"type": "If"
},
"Initialize": {
"inputs": {
"variables": [
{
"name": "myIntegerVariable",
"type": "Integer",
"value": 99
}
]
},
"runAfter": {},
"type": "InitializeVariable"
}
}
Avsnittet Parametrar
I parameters
avsnittet kan du parametrisera ett arbetsflöde. Vid körning kan du ange värden för var och en av dessa parametrar. Du kan referera till parametrarna var som helst i arbetsflödet där du kan använda en konstant eller ett uttryck.
Du kan lägga till en definition för parametrar med ett standardvärde. Standardvärdet används om du inte anger ett värde för parametern vid körning. I följande exempel visas hur du definierar en parameter med namnet cityParam
. Parametern används i villkoret för åtgärden mypostrequest
. Den utför bara åtgärden om förfrågningsdokumentet innehåller en stad som matchar parametervärdet. Standardparametervärdet är New York
:
"definition": {
"$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
"actions": {
...
},
"contentVersion": "1.0.0.0",
"outputs": {},
"parameters": {
"cityParam": {
"defaultValue": "New York",
"type": "String"
}
},
"triggers": {
"mypostrequest": {
"conditions": [
{
"expression": "@equals(triggerOutputs()['body']['customerAddress']['city'], parameters('cityParam'))"
}
],
"inputs": {
...
},
"kind": "Http",
"type": "Request"
}
}
}
}