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 Succeeded Failed |
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 OK
de mock-uitvoer voor de statuscode. Voor headerwaarden is "Content-Type": "application/JSON"
de mock-uitvoer . Voor de status van de actie is Succeeded
de 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:
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')['x']['connectionId']"
}
}
},
"method": "get",
"path": "/searchtweets",
"queries": {
"maxResults": 20,
"searchQuery": "Azure @{concat('firstName','', 'LastName')}"
}
},
Uitvoerwaarden
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 outputs
gebruik 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.
Operators
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 null-ignore (?). Als u bijvoorbeeld null-uitvoer van een trigger wilt verwerken, kunt u de volgende expressie gebruiken: coalesce(trigger().outputs?.body?['<someProperty>'], '<property-default-value>') |
Functions
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
- Meer informatie over acties en triggers voor werkstroomdefinitietaal
- Meer informatie over het programmatisch maken en beheren van logische apps met de WORKFLOW REST API