Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
När du skapar ett logikapparbetsflöde i Azure Logic Apps har arbetsflödet en underliggande JSON-definition (JavaScript Object Notation) som beskriver den faktiska logiken som kör arbetsflödet. Arbetsflödesdefinitionen följer en struktur som verifieras mot schemat arbetsflödesdefinitionsspråk. Den här referensen ger en översikt över den här strukturen och hur schemat definierar attribut i arbetsflödesdefinitionen.
Arbetsflödesdefinitionsstruktur
En arbetsflödesdefinition innehåller alltid en utlösare som instansierar arbetsflödet, plus en eller flera åtgärder som körs när utlösaren utlöses.
Här är den övergripande strukturen för en arbetsflödesdefinition:
"definition": {
  "$schema": "<workflow-definition-language-schema-version>",
  "actions": { "<workflow-action-definitions>" },
  "contentVersion": "<workflow-definition-version-number>",
  "outputs": { "<workflow-output-definitions>" },
  "parameters": { "<workflow-parameter-definitions>" },
  "staticResults": { "<static-results-definitions>" },
  "triggers": { "<workflow-trigger-definitions>" }
}
| Attribute | Required | Description | 
|---|---|---|
| definition | Yes | Startelementet för arbetsflödesdefinitionen | 
| $schema | Endast när du refererar till en arbetsflödesdefinition externt | Platsen för JSON-schemafilen som beskriver versionen av arbetsflödesdefinitionsspråket, som du hittar här: https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json | 
| actions | No | Definitionerna för en eller flera åtgärder som ska köras vid arbetsflödeskörning. Mer information finns i Utlösare och åtgärder. Maximalt antal åtgärder: 250 | 
| contentVersion | No | Versionsnumret för arbetsflödesdefinitionen, som är "1.0.0.0" som standard. Ange ett värde som ska användas för att identifiera och bekräfta rätt definition när du distribuerar ett arbetsflöde. | 
| outputs | No | Definitionerna för utdata som ska returneras från en arbetsflödeskörning. Mer information finns i Utdata. Maximalt antal utdata: 10 | 
| parameters | No | Definitionerna för en eller flera parametrar som skickar de värden som ska användas vid logikappens körning. Mer information finns i Parametrar. Maximala parametrar: 50 | 
| staticResults | No | Definitionerna för ett eller flera statiska resultat som returneras av åtgärder som testutdata när statiska resultat är aktiverade för dessa åtgärder. I varje åtgärdsdefinition runtimeConfiguration.staticResult.namerefererar attributet till motsvarande definition istaticResults. Mer information finns i Statiska resultat. | 
| triggers | No | Definitionerna för en eller flera utlösare som instansierar arbetsflödet. Du kan definiera mer än en utlösare, men bara med arbetsflödesdefinitionsspråket, inte visuellt via arbetsflödesdesignern. Mer information finns i Utlösare och åtgärder. Maximalt antal utlösare: 10 | 
Utlösare och åtgärder
I en arbetsflödesdefinition definierar avsnitten triggers och actions de anrop som inträffar under arbetsflödets körning. Syntax och mer information om dessa avsnitt finns i Arbetsflödesutlösare och åtgärder.
Parameters
Distributionens livscykel har vanligtvis olika miljöer för utveckling, testning, mellanlagring och produktion. När du distribuerar logikappar till olika miljöer vill du förmodligen använda olika värden, till exempel anslutningssträng, baserat på dina distributionsbehov. Eller så kan du ha värden som du vill återanvända i hela arbetsflödet utan hårdkodning eller som ändras ofta. I avsnittet för arbetsflödesdefinitionen parameters kan du definiera eller redigera parametrar för de värden som arbetsflödet använder vid körning. Du måste definiera dessa parametrar först innan du kan referera till dessa parametrar någon annanstans i arbetsflödesdefinitionen.
Här är den allmänna strukturen för en parameterdefinition:
"parameters": {
   "<parameter-name>": {
      "type": "<parameter-type>",
      "defaultValue": <default-parameter-value>,
      "allowedValues": [ <array-with-permitted-parameter-values> ],
      "metadata": {
         "description": "<parameter-description>"
      }
   }
},
| Attribute | Required | Type | Description | 
|---|---|---|---|
| < parameter-name> | Yes | String | Namnet på parametern som du vill definiera | 
| < parametertyp> | Yes | int, float, string, bool, array, object, securestring, secureobject Obs! För alla lösenord, nycklar och hemligheter använder du typerna securestringellersecureobjecteftersom åtgärdenGETinte returnerar dessa typer. Mer information om hur du skyddar parametrar finns i Säkerhetsrekommendationer för åtgärds- och indataparametrar. | Typ för parametern | 
| < default-parameter-value> | Yes | Samma som type | Standardparametervärdet som ska användas om inget värde anges när arbetsflödet instansierar. Attributet defaultValuekrävs så att arbetsflödesdesignern kan visa parametern korrekt, men du kan ange ett tomt värde. | 
| < array-with-permitted-parameter-values> | No | Array | En matris med värden som parametern kan acceptera | 
| < parameterbeskrivning> | No | JSON-objekt | Annan parameterinformation, till exempel en beskrivning av parametern | 
Skapa sedan en Azure Resource Manager-mall för arbetsflödesdefinitionen, definiera mallparametrar som accepterar de värden du vill använda vid distributionen, ersätt hårdkodade värden med referenser till mall- eller arbetsflödesdefinitionsparametrar efter behov och lagra de värden som ska användas vid distributionen i en separat parameterfil. På så sätt kan du enkelt ändra dessa värden via parameterfilen utan att behöva uppdatera och distribuera om logikappen. För information som är känslig eller måste skyddas, till exempel användarnamn, lösenord och hemligheter, kan du lagra dessa värden i Azure Key Vault och låta parameterfilen hämta dessa värden från nyckelvalvet. Mer information och exempel om hur du definierar parametrar på mall- och arbetsflödesdefinitionsnivåer finns i Översikt: Automatisera distribution för logikappar med Azure Resource Manager-mallar.
Statiska resultat
              staticResults I attributet definierar du en åtgärds mock outputs och status att åtgärden returnerar när åtgärdens statiska resultatinställning är aktiverad. I åtgärdens definition runtimeConfiguration.staticResult.name refererar attributet till namnet på den statiska resultatdefinitionen i staticResults. Lär dig hur du kan testa logikapparbetsflöden med falska data genom att konfigurera statiska resultat.
"definition": {
   "$schema": "<...>",
   "actions": { "<...>" },
   "contentVersion": "<...>",
   "outputs": { "<...>" },
   "parameters": { "<...>" },
   "staticResults": {
      "<static-result-definition-name>": {
         "outputs": {
            <output-attributes-and-values-returned>,
            "headers": { <header-values> },
            "statusCode": "<status-code-returned>"
         },
         "status": "<action-status>"
      }
   },
   "triggers": { "<...>" }
}
| Attribute | Required | Type | Description | 
|---|---|---|---|
| < static-result-definition-name> | Yes | String | Namnet på en statisk resultatdefinition som en åtgärdsdefinition kan referera till via ett runtimeConfiguration.staticResultobjekt. För mer information, se Körningskonfigurationsinställningar.Du kan använda valfritt unikt namn. Som standard läggs det här unika namnet till med ett tal som ökas efter behov. | 
| < output-attributes-and-values-returned> | Yes | Varies | Kraven för dessa attribut varierar beroende på olika villkor. När statusärSucceeded, innehåller attributetoutputstill exempel attribut och värden som returneras som mock-resultat av åtgärden. OmstatusärFailed, innehålleroutputserrors-attributet, som är en matris med ett eller fleramessage-felobjekt som har felinformation. | 
| < header-values> | No | JSON | Alla rubrikvärden som returneras av åtgärden | 
| < status-code-returned> | Yes | String | Statuskoden som returneras av åtgärden | 
| < åtgärdsstatus> | Yes | String | Åtgärdens status, till exempel, SucceededellerFailed | 
I den här HTTP-åtgärdsdefinitionen refererar attributet runtimeConfiguration.staticResult.name till HTTP0 inuti attributet staticResults, där mock-utdata för åtgärden definieras. Attributet runtimeConfiguration.staticResult.staticResultOptions anger att inställningen för statiskt resultat finns Enabled på HTTP-åtgärden.
"actions": {
   "HTTP": {
      "inputs": {
         "method": "GET",
         "uri": "https://www.microsoft.com"
      },
      "runAfter": {},
      "runtimeConfiguration": {
         "staticResult": {
            "name": "HTTP0",
            "staticResultOptions": "Enabled"
         }
      },
      "type": "Http"
   }
},
HTTP-åtgärden returnerar utdata i HTTP0 definitionen i staticResults. I det här exemplet för statuskoden är OK exempelutdata. För rubrikvärden är mock-utdata "Content-Type": "application/JSON". För statusen för åtgärden är mockoutputen Succeeded.
"definition": {
   "$schema": "<...>",
   "actions": { "<...>" },
   "contentVersion": "<...>",
   "outputs": { "<...>" },
   "parameters": { "<...>" },
   "staticResults": {
      "HTTP0": {
         "outputs": {
            "headers": {
               "Content-Type": "application/JSON"
            },
            "statusCode": "OK"
         },
         "status": "Succeeded"
      }
   },
   "triggers": { "<...>" }
},
Expressions
Med JSON kan du ha literalvärden som finns vid designtillfället, till exempel:
"customerName": "Sophia Owen",
"rainbowColors": ["red", "orange", "yellow", "green", "blue", "indigo", "violet"],
"rainbowColorsCount": 7
Det kan också finnas värden som inte existerar förrän körningstid. För att representera dessa värden kan du använda uttryck som utvärderas vid körning. Ett uttryck är en sekvens som kan innehålla en eller flera funktioner, operatorer, variabler, explicita värden eller konstanter. I arbetsflödesdefinitionen kan du använda ett uttryck var som helst i ett JSON-strängvärde genom att prefixa uttrycket med at-sign (@). När du utvärderar ett uttryck som representerar ett JSON-värde extraheras uttryckstexten genom att @-tecknet tas bort och resulterar alltid i ett annat JSON-värde.
För den tidigare definierade customerName egenskapen kan du till exempel hämta egenskapsvärdet med hjälp av funktionen parameters() i ett uttryck och tilldela värdet till accountName egenskapen:
"customerName": "Sophia Owen",
"accountName": "@parameters('customerName')"
Med stränginterpolation kan du också använda flera uttryck inuti strängar som omsluts av @-tecknet och klammerparenteser ({}). Här är syntaxen:
@{ "<expression1>", "<expression2>" }
Resultatet är alltid en sträng, vilket gör den här funktionen liknande concat(), till exempel:
"customerName": "First name: @{parameters('firstName')} Last name: @{parameters('lastName')}"
Om du har en literalsträng som börjar med @-tecknet prefixar du @-tecknet med ett annat @-tecken som ett escape-tecken: @@
De här exemplen visar hur uttryck utvärderas:
| JSON-värde | Result | 
|---|---|
| "Sophia Owen" | Återge dessa tecken: 'Sophia Owen' | 
| "array[1]" | Returnera följande tecken: 'array[1]' | 
| "@@" | Returnera dessa tecken som en sträng med ett tecken: '@' | 
| " @" | Returnera dessa tecken som en sträng med två tecken: ' @' | 
I de här exemplen antar vi att du definierar "myBirthMonth" lika med "Januari" och "myAge" som är lika med talet 42:
"myBirthMonth": "January",
"myAge": 42
De här exemplen visar hur följande uttryck utvärderas:
| JSON-uttryck | Result | 
|---|---|
| "@parameters('myBirthMonth')" | Returnera den här strängen: "Januari" | 
| "@{parameters('myBirthMonth')}" | Returnera den här strängen: "Januari" | 
| "@parameters('myAge')" | Returnera det här numret: 42 | 
| "@{parameters('myAge')}" | Returnera det här talet som en sträng: "42" | 
| "Min ålder är @{parameters('myAge')}" | Returnera den här strängen: "Min ålder är 42" | 
| "@concat('Min ålder är ', string(parameters('myAge')))" | Returnera den här strängen: "Min ålder är 42" | 
| "Min ålder är @@{parameters('myAge')}" | Returnera den här strängen, som innehåller uttrycket : "Min ålder är @{parameters('myAge')}' | 
När du arbetar visuellt i arbetsflödesdesignern kan du skapa uttryck med hjälp av uttrycksredigeraren, till exempel:
               
              
            
När du är klar visas uttrycket för motsvarande egenskap i arbetsflödesdefinitionen searchQuery , till exempel egenskapen här:
"Search_tweets": {
  "inputs": {
    "host": {
      "connection": {
        "name": "@parameters('$connections')['x']['connectionId']"
      }
    }
  },
  "method": "get",
  "path": "/searchtweets",
  "queries": {
    "maxResults": 20,
    "searchQuery": "Azure @{concat('firstName','', 'LastName')}"
  }
},
Outputs
I avsnittet outputs definierar du de data som ditt arbetsflöde kan returnera när det har slutförts. Om du till exempel vill spåra en specifik status eller ett visst värde från varje körning anger du att arbetsflödets utdata returnerar dessa data.
Note
När du svarar på inkommande begäranden från en tjänsts REST-API ska du inte använda outputs. Använd i stället åtgärdstypen Response .
Mer information finns i Arbetsflödesutlösare och åtgärder.
Här är den allmänna strukturen för en utdatadefinition:
"outputs": {
  "<key-name>": {
    "type": "<key-type>",
    "value": "<key-value>"
  }
}
| Attribute | Required | Type | Description | 
|---|---|---|---|
| < nyckelnamn> | Yes | String | Nyckelnamnet för returvärdet för utdata | 
| < nyckeltyp> | Yes | int, float, string, securestring, bool, array, JSON object | Typ för returvärdet för utdata | 
| < nyckelvärde> | Yes | Samma som <nyckeltyp> | Utdatareturvärdet | 
Om du vill hämta utdata från en arbetsflödeskörning granskar du logikappens körningshistorik och information i Azure Portal eller använder REST-API:et för arbetsflöde. Du kan också skicka utdata till externa system, till exempel Power BI så att du kan skapa instrumentpaneler.
Operators
I uttryck och funktioner utför operatorerna specifika uppgifter, till exempel referens till en egenskap eller ett värde i en matris.
| Operator | Task | 
|---|---|
| ' | För att använda en strängliteral som indata eller i uttryck och funktioner, omslut strängen endast med enkla citattecken, till exempel '<myString>'. Använd inte dubbla citattecken (""), som står i konflikt med JSON-formateringen runt ett helt uttryck. Till exempel:Ja: length('Hello') No: length("Hello") När du skickar matriser eller siffror behöver du inte omsluta skiljetecken. Till exempel: Ja: längd([1, 2, 3]) Nej: längd("[1, 2, 3]") | 
| [] | Om du vill referera till ett värde vid en specifik position (index) i en matris eller inuti ett JSON-objekt använder du hakparenteser, till exempel: – Så här hämtar du det andra objektet i en matris: myArray[1]– Så här kommer du åt egenskaperna i ett JSON-objekt: Exempel 1: setProperty(<object>, '<parent-property>', addProperty(<object>['<parent-property>'], '<child-property>', <value>)Exempel 2: lastIndexOf(triggerBody()?['subject'],'some string') | 
| . | Om du vill referera till en egenskap i ett objekt använder du punktoperatorn. Om du till exempel vill hämta nameegenskapen för ettcustomerJSON-objekt:"parameters('customer').name" | 
| ? | Om du vill referera till ett objekts egenskap utan att riskera ett körningsfel eller om arbetsflödet misslyckas använder du frågeteckenoperatorn ( ?), även kallad null ignore-operatorn, före egenskapen. Med den här operatorn kan du på ett säkert sätt komma åt en egenskap eller ett matriselement när det överordnade objektet eller den refererade egenskapen kan innehållanulleller saknas.– Om det överordnade objektet som visas innan operatorn ?ärnulleller saknar den refererade egenskapen returnerarnullhela uttrycket , i stället för att arbetsflödet misslyckas.– Om objektet eller egenskapen finns returnerar uttrycket egenskapens värde. Anta till exempel att du har följande uttryck: triggerBody()?['ContentData']– Om triggerBody()returnerar ett objekt frånContentDataegenskapen får du objektets värde.– Om triggerBody()ärnulleller saknarContentDataegenskapen returnerarnullfunktionen i stället för att misslyckas med felet "Det går inte att bearbeta mallspråkuttryck".Med ?operatorn kan du också länka åtkomstegenskaper på ett säkert sätt och är användbar i följande scenarier:– Hantera uttryck som fungerar med valfria JSON-fält. – Hantera anslutningsutdata som kan utelämna vissa egenskaper. – Undvik sköra uttryck i villkorsstyrd logik. Om du till exempel vill länka egenskapsåtkomst och hantera null-utdata från en utlösare kan du använda följande uttryck: coalesce(trigger().outputs?.body?['<property-name>'], '<property-default-value>') | 
Functions
Vissa uttryck får sina värden från körningsåtgärder som kanske inte finns ännu när arbetsflödesdefinitionen börjar köras. Om du vill referera till eller arbeta med dessa värden i uttryck kan du använda funktioner som arbetsflödesdefinitionsspråket tillhandahåller.