Naslaghandleiding voor schema's voor de taal voor werkstroomdefinities in Azure Logic Apps

Wanneer u een logische app maakt in Azure Logic Apps, heeft uw logische app een onderliggende werkstroomdefinitie die de werkelijke logica beschrijft die wordt uitgevoerd in uw logische app. Deze werkstroomdefinitie maakt gebruik van JSON en volgt een structuur die wordt gevalideerd door het schema workflowdefinitietaal. Deze verwijzing biedt een overzicht van deze structuur en hoe het schema kenmerken in uw werkstroomdefinitie definieert.

Structuur van werkstroomdefinitie

Een werkstroomdefinitie bevat altijd een trigger voor het instantiëren van uw logische app, plus een of meer acties die worden uitgevoerd nadat de trigger is geactiveerd.

Hier volgt de structuur op hoog niveau voor een werkstroomdefinitie:

"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>" }
}
Kenmerk Vereist Omschrijving
definition Ja Het beginelement voor uw werkstroomdefinitie
$schema Alleen wanneer extern wordt verwezen naar een werkstroomdefinitie De locatie voor het JSON-schemabestand waarin de taalversie van de werkstroomdefinitie wordt beschreven, die u hier kunt vinden:

https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json
actions Nee De definities voor een of meer acties die moeten worden uitgevoerd tijdens werkstroomruntime. Zie Triggers en acties voor meer informatie.



Maximum aantal acties: 250
contentVersion Nee Het versienummer voor uw werkstroomdefinitie, dat standaard 1.0.0.0 is. Geef een waarde op die moet worden gebruikt om de juiste definitie te identificeren en te bevestigen bij het implementeren van een werkstroom.
outputs Nee De definities voor de uitvoer die moeten worden geretourneerd vanuit een werkstroomuitvoering. Zie Uitvoer voor meer informatie.



Maximale uitvoer: 10
parameters Nee De definities voor een of meer parameters die de waarden doorgeven die tijdens de runtime van uw logische app moeten worden gebruikt. Zie Parameters voor meer informatie.



Maximumparameters: 50
staticResults Nee De definities voor een of meer statische resultaten die worden geretourneerd door acties als mock-uitvoer wanneer statische resultaten zijn ingeschakeld voor deze acties. In elke actiedefinitie verwijst het runtimeConfiguration.staticResult.name kenmerk naar de bijbehorende definitie binnen staticResults. Zie Statische resultaten voor meer informatie.
triggers Nee De definities voor een of meer triggers die uw werkstroom instantiëren. U kunt meer dan één trigger definiëren, maar alleen met de taal voor werkstroomdefinities, niet visueel via de werkstroomontwerper. Zie Triggers en acties voor meer informatie.



Maximum aantal triggers: 10

Triggers en acties

In een werkstroomdefinitie definiëren de triggers en actions secties de aanroepen die plaatsvinden tijdens de uitvoering van uw werkstroom. Zie Werkstroomtriggers en -acties voor meer informatie over deze secties.

Parameters

De levenscyclus van de implementatie heeft meestal verschillende omgevingen voor ontwikkeling, test, fasering en productie. Bij het implementeren van logische apps in verschillende omgevingen wilt u waarschijnlijk verschillende waarden gebruiken, zoals verbindingsreeks s, op basis van uw implementatiebehoeften. Of misschien hebt u waarden die u in uw logische app opnieuw wilt gebruiken zonder dat u deze code hoeft te coderen of die vaak wilt wijzigen. In de sectie van parameters uw werkstroomdefinitie kunt u parameters definiëren of bewerken voor de waarden die uw logische app tijdens runtime gebruikt. U moet deze parameters eerst definiëren voordat u naar deze parameters elders in uw werkstroomdefinitie kunt verwijzen.

Dit is de algemene structuur voor een parameterdefinitie:

"parameters": {
   "<parameter-name>": {
      "type": "<parameter-type>",
      "defaultValue": <default-parameter-value>,
      "allowedValues": [ <array-with-permitted-parameter-values> ],
      "metadata": {
         "description": "<parameter-description>"
      }
   }
},
Kenmerk Vereist Type Description
<parameternaam> Ja String De naam voor de parameter die u wilt definiëren
<parametertype> Ja int, float, string, bool, array, object, securestring, secureobject



Opmerking: Gebruik voor alle wachtwoorden, sleutels en geheimen de securestring of secureobject typen omdat de GET bewerking deze typen niet retourneert. Zie Beveiligingsaanaanveling voor actie- en invoerparameters voor meer informatie over het beveiligen van parameters.
Het type voor de parameter
<standaardparameterwaarde> Ja Hetzelfde als type De standaardparameterwaarde die moet worden gebruikt als er geen waarde wordt opgegeven wanneer de werkstroom wordt geïnstitueerd. Het defaultValue kenmerk is vereist, zodat de ontwerper van logische apps de parameter correct kan weergeven, maar u kunt een lege waarde opgeven.
<array-with-permitted-parameter-values> Nee Matrix Een matrix met waarden die door de parameter kunnen worden geaccepteerd
<parameterbeschrijving> Nee JSON-object Andere parameterdetails, zoals een beschrijving voor de parameter

Maak vervolgens een Azure Resource Manager-sjabloon voor uw werkstroomdefinitie, definieer sjabloonparameters die de gewenste waarden tijdens de implementatie accepteren, vervang vastgelegde waarden door verwijzingen naar sjabloon- of werkstroomdefinitieparameters, en sla de waarden op die tijdens de implementatie moeten worden gebruikt in een afzonderlijk parameterbestand. Op die manier kunt u deze waarden eenvoudiger wijzigen via het parameterbestand zonder dat u uw logische app hoeft bij te werken en opnieuw te implementeren. Voor informatie die gevoelig is of moet worden beveiligd, zoals gebruikersnamen, wachtwoorden en geheimen, kunt u deze waarden opslaan in Azure Key Vault en uw parameterbestand deze waarden laten ophalen uit uw sleutelkluis. Zie Overzicht: Implementatie automatiseren voor logische apps met Azure Resource Manager-sjablonen voor meer informatie en voorbeelden over het definiëren van parameters op sjabloon- en werkstroomdefinitieniveaus.

Statische resultaten

Definieer in het staticResults kenmerk de mock outputs van een actie en status dat de actie wordt geretourneerd wanneer de statische resultaatinstelling van de actie is ingeschakeld. In de definitie van de actie verwijst het runtimeConfiguration.staticResult.name kenmerk naar de naam van de statische resultaatdefinitie binnen staticResults. Leer hoe u werkstromen van logische apps kunt testen met gesimuleerde gegevens door statische resultaten in te stellen.

"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": { "<...>" }
}
Kenmerk Vereist Type Description
<static-result-definition-name> Ja String De naam voor een statische resultaatdefinitie waarnaar een actiedefinitie kan verwijzen via een runtimeConfiguration.staticResult object. Zie Runtime-configuratie-instellingen voor meer informatie.

U kunt elke gewenste unieke naam gebruiken. Deze unieke naam wordt standaard toegevoegd aan een getal, dat indien nodig wordt verhoogd.
<output-attributes-and-values-returned> Ja Varieert De vereisten voor deze kenmerken variëren op basis van verschillende voorwaarden. Wanneer dit status het is Succeeded, bevat het outputs kenmerk bijvoorbeeld kenmerken en waarden die worden geretourneerd als mock-uitvoer door de actie. Als dit status het is Failed, bevat het outputs kenmerk het errors kenmerk, een matrix met een of meer foutobjecten message met foutinformatie.
<header-values> Nee JSON Eventuele headerwaarden die door de actie worden geretourneerd
<statuscode geretourneerd> Ja String De statuscode die wordt geretourneerd door de actie
<actie-status> Ja String De status van de actie, bijvoorbeeld of SucceededFailed

In deze HTTP-actiedefinitie worden bijvoorbeeld de runtimeConfiguration.staticResult.name kenmerkverwijzingen HTTP0 in het staticResults kenmerk waarnaar de mock-uitvoer voor de actie is gedefinieerd. Het runtimeConfiguration.staticResult.staticResultOptions kenmerk geeft aan dat de statische resultaatinstelling zich Enabled in de HTTP-actie bevindt.

"actions": {
   "HTTP": {
      "inputs": {
         "method": "GET",
         "uri": "https://www.microsoft.com"
      },
      "runAfter": {},
      "runtimeConfiguration": {
         "staticResult": {
            "name": "HTTP0",
            "staticResultOptions": "Enabled"
         }
      },
      "type": "Http"
   }
},

De HTTP-actie retourneert de uitvoer in de HTTP0 definitie in staticResults. In dit voorbeeld is OKde mock-uitvoer voor de statuscode. Voor headerwaarden is "Content-Type": "application/JSON"de mock-uitvoer . Voor de status van de actie is Succeededde mock-uitvoer.

"definition": {
   "$schema": "<...>",
   "actions": { "<...>" },
   "contentVersion": "<...>",
   "outputs": { "<...>" },
   "parameters": { "<...>" },
   "staticResults": {
      "HTTP0": {
         "outputs": {
            "headers": {
               "Content-Type": "application/JSON"
            },
            "statusCode": "OK"
         },
         "status": "Succeeded"
      }
   },
   "triggers": { "<...>" }
},

Expressies

Met JSON kunt u letterlijke waarden hebben die bestaan tijdens het ontwerp, bijvoorbeeld:

"customerName": "Sophia Owen",
"rainbowColors": ["red", "orange", "yellow", "green", "blue", "indigo", "violet"],
"rainbowColorsCount": 7

U kunt ook waarden hebben die niet bestaan tot de uitvoeringstijd. Als u deze waarden wilt weergeven, kunt u expressies gebruiken die tijdens runtime worden geëvalueerd. Een expressie is een reeks die een of meer functies, operators, variabelen, expliciete waarden of constanten kan bevatten. In uw werkstroomdefinitie kunt u een expressie overal in een JSON-tekenreekswaarde gebruiken door de expressie vooraf te laten gaan met het at-sign (@). Bij het evalueren van een expressie die een JSON-waarde vertegenwoordigt, wordt de hoofdtekst van de expressie geëxtraheerd door het @-teken te verwijderen en resulteert altijd in een andere JSON-waarde.

Voor de eerder gedefinieerde customerName eigenschap kunt u bijvoorbeeld de eigenschapswaarde ophalen met behulp van de functie parameters() in een expressie en die waarde toewijzen aan de accountName eigenschap:

"customerName": "Sophia Owen",
"accountName": "@parameters('customerName')"

Met tekenreeksinterpolatie kunt u ook meerdere expressies in tekenreeksen gebruiken die zijn verpakt door het @-teken en accolades ({}). Dit is de syntaxis:

@{ "<expression1>", "<expression2>" }

Het resultaat is altijd een tekenreeks, waardoor deze mogelijkheid vergelijkbaar is met de concat() functie, bijvoorbeeld:

"customerName": "First name: @{parameters('firstName')} Last name: @{parameters('lastName')}"

Als u een letterlijke tekenreeks hebt die begint met het @-teken, moet u het @-teken vooraf laten gaan door een ander @-teken als escapeteken: @@

Deze voorbeelden laten zien hoe expressies worden geëvalueerd:

JSON-waarde Resultaat
"Sophia Owen" Deze tekens retourneren: 'Sophia Owen'
"matrix[1]" Retourneert deze tekens: 'matrix[1]'
"@@" Deze tekens retourneren als een tekenreeks met één teken: '@'
" @" Deze tekens retourneren als een tekenreeks met twee tekens: @

Voor deze voorbeelden definieert u 'myBirthMonth' gelijk aan 'januari' en 'myAge' gelijk aan het getal 42:

"myBirthMonth": "January",
"myAge": 42

Deze voorbeelden laten zien hoe de volgende expressies worden geëvalueerd:

JSON-expressie Resultaat
"@parameters('myBirthMonth')" Retourneert deze tekenreeks: 'Januari'
"@{parameters('myBirthMonth')}" Retourneert deze tekenreeks: 'Januari'
"@parameters('myAge')" Retourneer dit getal: 42
"@{parameters('myAge')}" Retourneert dit getal als een tekenreeks: '42'
"Mijn leeftijd is @{parameters('myAge')}" Retourneer deze tekenreeks: 'Mijn leeftijd is 42'
"@concat('Mijn leeftijd is ', string(parameters('myAge'))) Retourneer deze tekenreeks: 'Mijn leeftijd is 42'
"Mijn leeftijd is @@{parameters('myAge')}" Retourneer deze tekenreeks, die de expressie bevat: 'Mijn leeftijd is @{parameters('myAge')}'

Wanneer u visueel werkt in de werkstroomontwerper, kunt u expressies maken met behulp van de expressie-editor, bijvoorbeeld:

Screenshot shows workflow designer and expression editor.

Wanneer u klaar bent, wordt de expressie weergegeven voor de bijbehorende eigenschap in uw werkstroomdefinitie, bijvoorbeeld de searchQuery eigenschap hier:

"Search_tweets": {
  "inputs": {
    "host": {
      "connection": {
        "name": "@parameters('$connections')['twitter']['connectionId']"
      }
    }
  },
  "method": "get",
  "path": "/searchtweets",
  "queries": {
    "maxResults": 20,
    "searchQuery": "Azure @{concat('firstName','', 'LastName')}"
  }
},

Uitvoer

Definieer in de outputs sectie de gegevens die uw werkstroom kan retourneren wanneer de uitvoering is voltooid. Als u bijvoorbeeld een specifieke status of waarde van elke uitvoering wilt bijhouden, geeft u op dat de uitvoer van de werkstroom die gegevens retourneert.

Notitie

Gebruik geen outputsgebruik wanneer u reageert op binnenkomende aanvragen van de REST API van een service. Gebruik in plaats daarvan het Response actietype. Zie Werkstroomtriggers en -acties voor meer informatie.

Dit is de algemene structuur voor een uitvoerdefinitie:

"outputs": {
  "<key-name>": {
    "type": "<key-type>",
    "value": "<key-value>"
  }
}
Kenmerk Vereist Type Description
<sleutelnaam> Ja String De sleutelnaam voor de uitvoer retourwaarde
<sleuteltype> Ja int, float, string, securestring, bool, array, JSON-object Het type voor de retourwaarde van de uitvoer
<sleutelwaarde> Ja Hetzelfde als <sleuteltype> De retourwaarde van de uitvoer

Als u de uitvoer van een werkstroomuitvoering wilt ophalen, bekijkt u de uitvoeringsgeschiedenis en details van uw logische app in Azure Portal of gebruikt u de REST API van de werkstroom. U kunt ook uitvoer doorgeven aan externe systemen, bijvoorbeeld Power BI, zodat u dashboards kunt maken.

Operatoren

In expressies en functies voeren operators specifieke taken uit, zoals een verwijzing naar een eigenschap of een waarde in een matrix.

Operator Opdracht
' Als u een letterlijke tekenreeks wilt gebruiken als invoer of in expressies en functies, verpakt u de tekenreeks alleen met enkele aanhalingstekens, bijvoorbeeld '<myString>'. Gebruik geen dubbele aanhalingstekens (""), die conflicteren met de JSON-opmaak rond een volledige expressie. Bijvoorbeeld:

Ja: lengte('Hallo')
Nee: lengte("Hallo")

Wanneer u matrices of getallen doorgeeft, hebt u geen interpunctie nodig. Bijvoorbeeld:

Ja: lengte([1, 2, 3])
Nee: lengte("[1, 2, 3]")
[] Als u wilt verwijzen naar een waarde op een specifieke positie (index) in een matrix of binnen een JSON-object, gebruikt u vierkante haken, bijvoorbeeld:

- Het tweede item in een matrix ophalen:

myArray[1]

- Toegang krijgen tot de eigenschappen in een JSON-object:

Voorbeeld 1:
setProperty(<object>, '<parent-property>', addProperty(<object>['<parent-property>'], '<child-property>', <value>)

Voorbeeld 2:
lastIndexOf(triggerBody()?['subject'],'some string')
. Als u naar een eigenschap in een object wilt verwijzen, gebruikt u de puntoperator. Als u bijvoorbeeld de name eigenschap voor een customer JSON-object wilt ophalen:

"@parameters('customer').name"
? Als u wilt verwijzen naar null-eigenschappen in een object zonder runtimefout, gebruikt u de operator vraagtekens. Als u bijvoorbeeld null-uitvoer van een trigger wilt verwerken, kunt u deze expressie gebruiken:

@coalesce(trigger().outputs?.body?.<someProperty>, '<property-default-value>')

Functies

Sommige expressies halen hun waarden op uit runtime-acties die mogelijk nog niet bestaan wanneer de werkstroomdefinitie wordt uitgevoerd. Als u in expressies naar deze waarden wilt verwijzen of ermee wilt werken, kunt u functies gebruiken die de taal voor werkstroomdefinities biedt.

Volgende stappen