Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In deze verwijzing worden de algemene typen beschreven die worden gebruikt voor het identificeren van triggers en acties in de onderliggende werkstroomdefinitie van uw logische app, die wordt beschreven en gevalideerd door de taal van de werkstroomdefinitie. To find specific connector triggers and actions that you can use in your logic apps, see the list under the Connectors overview.
Triggers overview
Elke werkstroom bevat een trigger, waarmee de aanroepen worden gedefinieerd die de werkstroom instantiëren en starten. Dit zijn de algemene triggercategorieën:
A polling trigger, which checks a service's endpoint at regular intervals
A push trigger, which creates a subscription to an endpoint and provides a callback URL so the endpoint can notify the trigger when the specified event happens or data is available. De trigger wacht vervolgens op het antwoord van het eindpunt voordat deze wordt geactiveerd.
Triggers hebben deze elementen op het hoogste niveau, hoewel sommige optioneel zijn:
"<trigger-name>": {
"type": "<trigger-type>",
"inputs": { "<trigger-inputs>" },
"recurrence": {
"frequency": "<time-unit>",
"interval": <number-of-time-units>
},
"conditions": [ "<array-with-conditions>" ],
"runtimeConfiguration": { "<runtime-config-options>" },
"splitOn": "<splitOn-expression>",
"operationOptions": "<operation-option>"
},
Required
Value | Type | Description |
---|---|---|
< trigger-name> | String | De naam voor de trigger |
< trigger-type> | String | Het triggertype, zoals Http of ApiConnection |
< trigger-inputs> | JSON Object | De invoer die het gedrag van de trigger definieert |
< time-unit> | String | De tijdseenheid waarin wordt beschreven hoe vaak de trigger wordt geactiveerd: 'Seconde', 'Minuut', 'Uur', 'Dag', 'Week', 'Maand' |
< number-of-time-units> | Integer | Een waarde die aangeeft hoe vaak de trigger wordt geactiveerd op basis van de frequentie. Dit is het aantal tijdseenheden dat moet worden gewacht totdat de trigger opnieuw wordt geactiveerd Dit zijn de minimum- en maximumintervallen: - Maand: 1-16 maanden - Dag: 1-500 dagen - Uur: 1-12.000 uur - Minuut: 1-72.000 minuten - Seconde: 1-999,999 seconden Als het interval bijvoorbeeld 6 is en de frequentie 'Maand' is, is het terugkeerpatroon om de 6 maanden. |
Optional
Value | Type | Description |
---|---|---|
< array-with-conditions> | Array | An array that contains one or more conditions that determine whether to run the workflow. Alleen beschikbaar voor triggers. |
< runtime-config-options> | JSON Object | U kunt het gedrag van de triggerruntime wijzigen door eigenschappen in te stellen runtimeConfiguration . Zie Runtime-configuratie-instellingen voor meer informatie. |
< splitOn-expression> | String | Voor triggers die een matrix retourneren, kunt u een expressie opgeven waarmee matrixitems worden gesplitst of gedebatteerd in meerdere werkstroomexemplaren voor verwerking. |
< operation-option> | String | U kunt het standaardgedrag wijzigen door de operationOptions eigenschap in te stellen. For more information, see Operation options. |
Lijst met triggertypen
Elk triggertype heeft een andere interface en invoer die het gedrag van de trigger definieert.
Built-in triggers
Trigger type | Description |
---|---|
HTTP | Checks or polls any endpoint. Dit eindpunt moet voldoen aan een specifiek triggercontract met behulp van een asynchroon 202 patroon of door een matrix te retourneren. |
HTTPWebhook | Hiermee maakt u een aanroepbaar eindpunt voor uw logische app, maar wordt de opgegeven URL aangeroepen om de registratie of registratie ongedaan te maken. |
Recurrence | Wordt geactiveerd op basis van een gedefinieerd schema. U kunt een toekomstige datum en tijd instellen voor het activeren van deze trigger. Op basis van de frequentie kunt u ook tijden en dagen opgeven voor het uitvoeren van uw werkstroom. |
Request | Hiermee maakt u een aanroepbaar eindpunt voor uw logische app en wordt dit ook wel een 'handmatige' trigger genoemd. Zie bijvoorbeeld Oproep-, trigger- of nestwerkstromen met HTTP-eindpunten. |
Beheerde API-triggers
Trigger type | Description |
---|---|
ApiConnection | Checks or polls an endpoint by using Microsoft-managed APIs or "connectors". |
ApiConnectionWebhook | Hiermee maakt u een aanroepbaar eindpunt voor uw werkstroom voor logische apps door door Microsoft beheerde API's of connectors aan te roepen om u te abonneren en af te melden. |
Triggers - gedetailleerde naslaginformatie
APIConnection trigger
This trigger checks or polls an endpoint by using Microsoft-managed APIs or "connectors" so the parameters for this trigger can differ based on the endpoint. Veel secties in deze triggerdefinitie zijn optioneel. Het gedrag van de trigger is afhankelijk van of secties wel of niet zijn opgenomen.
"<APIConnection_trigger_name>": {
"type": "ApiConnection",
"inputs": {
"host": {
"connection": {
"name": "@parameters('$connections')['<connection-name>']['connectionId']"
}
},
"method": "<method-type>",
"path": "/<api-operation>",
"retryPolicy": { "<retry-behavior>" },
"queries": { "<query-parameters>" }
},
"recurrence": {
"frequency": "<time-unit>",
"interval": <number-of-time-units>
},
"runtimeConfiguration": {
"concurrency": {
"runs": <max-runs>,
"maximumWaitingRuns": <max-runs-queue>
}
},
"splitOn": "<splitOn-expression>",
"operationOptions": "<operation-option>"
}
Required
Property | Value | Type | Description |
---|---|---|---|
None | < APIConnection_trigger_name> | String | De naam voor de trigger |
host.connection.name | < connection-name> | String | De naam voor de verbinding met de beheerde API die door de werkstroom wordt gebruikt |
method | < method-type> | String | The HTTP method for communicating with the managed API: GET, PUT, POST, PATCH, DELETE |
path | < api-operation> | String | De API-bewerking die moet worden aangeroepen |
recurrence.frequency | < time-unit> | String | The unit of time that describes how often the trigger fires: Second, Minute, Hour, Day, Week, Month |
recurrence.interval | < number-of-time-units> | Integer | Een waarde die aangeeft hoe vaak de trigger wordt geactiveerd op basis van de frequentie. Dit is het aantal tijdseenheden dat moet worden gewacht totdat de trigger opnieuw wordt geactiveerd Dit zijn de minimum- en maximumintervallen: - Maand: 1-16 maanden - Dag: 1-500 dagen - Uur: 1-12.000 uur - Minuut: 1-72.000 minuten - Seconde: 1-9.999.999 seconden For example, if the interval is 6, and the frequency is Month, the recurrence is every 6 months. |
Optional
Property | Value | Type | Description |
---|---|---|---|
retryPolicy | < retry-behavior> | JSON Object | Hiermee past u het gedrag voor opnieuw proberen aan voor onregelmatige fouten, met de statuscode 408, 429 en 5XX, en eventuele connectiviteitsuitzonderingen. For more information, see Retry policies. |
queries | < query-parameters> | JSON Object | Queryparameters die moeten worden opgenomen met de API-aanroep. Het object wordt bijvoorbeeld "queries": { "api-version": "2018-01-01" } toegevoegd ?api-version=2018-01-01 aan de aanroep. |
runtimeConfiguration.concurrency.runs | < max-runs> | Integer | By default, workflow instances run at the same time (concurrently or in parallel) up to the default limit. To change this limit by setting a new <count> value, see Change trigger concurrency. |
runtimeConfiguration.maximumWaitingRuns | < max-runs-queue> | Integer | If your workflow is already running the maximum number of instances, any new runs are put in this queue up to the default limit. Zie Wachtuitvoeringslimiet wijzigen als u de standaardlimiet wilt wijzigen. To change the maximum number of instances, specify a value for the runtimeConfiguration.concurrency.runs property. Note: If you set the |
splitOn | < splitOn-expression> | String | Voor triggers die matrices retourneren, verwijst deze expressie naar de matrix die moet worden gebruikt, zodat u een werkstroomexemplaren voor elk matrixitem kunt maken en uitvoeren in plaats van een lus 'voor elke' te gebruiken. Deze expressie vertegenwoordigt bijvoorbeeld een item in de matrix die wordt geretourneerd binnen de hoofdtekstinhoud van de trigger: @triggerbody()?['value'] |
operationOptions | < operation-option> | String | U kunt het standaardgedrag wijzigen door de operationOptions eigenschap in te stellen. For more information, see Operation options. |
Outputs
Element | Type | Description |
---|---|---|
headers | JSON Object | De headers uit het antwoord |
body | JSON Object | De hoofdtekst van het antwoord |
status code | Integer | De statuscode van het antwoord |
Example
Met deze triggerdefinitie wordt elke dag gecontroleerd op e-mail in het Postvak IN voor een werk- of schoolaccount:
"When_a_new_email_arrives": {
"type": "ApiConnection",
"inputs": {
"host": {
"connection": {
"name": "@parameters('$connections')['office365']['connectionId']"
}
},
"method": "get",
"path": "/Mail/OnNewEmail",
"queries": {
"fetchOnlyWithAttachment": false,
"folderPath": "Inbox",
"importance": "Any",
"includeAttachments": false
}
},
"recurrence": {
"frequency": "Day",
"interval": 1
}
}
ApiConnectionWebhook trigger
This trigger sends a subscription request to an endpoint by using a Microsoft-managed API, provides a callback URL to where the endpoint can send a response, and waits for the endpoint to respond. For more information, see Endpoint subscriptions.
"<ApiConnectionWebhook_trigger_name>": {
"type": "ApiConnectionWebhook",
"inputs": {
"body": {
"NotificationUrl": "@{listCallbackUrl()}"
},
"host": {
"connection": {
"name": "@parameters('$connections')['<connection-name>']['connectionId']"
}
},
"retryPolicy": { "<retry-behavior>" },
"queries": "<query-parameters>"
},
"runTimeConfiguration": {
"concurrency": {
"runs": <max-runs>,
"maximumWaitingRuns": <max-run-queue>
}
},
"splitOn": "<splitOn-expression>",
"operationOptions": "<operation-option>"
}
Required
Value | Type | Description |
---|---|---|
< connection-name> | String | De naam voor de verbinding met de beheerde API die door de werkstroom wordt gebruikt |
< body-content> | JSON Object | Berichtinhoud die moet worden verzonden als nettolading naar de beheerde API |
Optional
Value | Type | Description |
---|---|---|
< retry-behavior> | JSON Object | Hiermee past u het gedrag voor opnieuw proberen aan voor onregelmatige fouten, met de statuscode 408, 429 en 5XX, en eventuele connectiviteitsuitzonderingen. For more information, see Retry policies. |
< query-parameters> | JSON Object | Queryparameters die moeten worden opgenomen met de API-aanroep Het object wordt bijvoorbeeld "queries": { "api-version": "2018-01-01" } toegevoegd ?api-version=2018-01-01 aan de aanroep. |
< max-runs> | Integer | By default, workflow instances run at the same time (concurrently or in parallel) up to the default limit. To change this limit by setting a new <count> value, see Change trigger concurrency. |
< max-runs-queue> | Integer | When your workflow is already running the maximum number of instances, which you can change based on the runtimeConfiguration.concurrency.runs property, any new runs are put into this queue up to the default limit. Zie Wachtuitvoeringslimiet wijzigen als u de standaardlimiet wilt wijzigen. |
< splitOn-expression> | String | Voor triggers die matrices retourneren, verwijst deze expressie naar de matrix die moet worden gebruikt, zodat u een werkstroomexemplaren voor elk matrixitem kunt maken en uitvoeren in plaats van een lus 'voor elke' te gebruiken. Deze expressie vertegenwoordigt bijvoorbeeld een item in de matrix die wordt geretourneerd binnen de hoofdtekstinhoud van de trigger: @triggerbody()?['value'] |
< operation-option> | String | U kunt het standaardgedrag wijzigen door de operationOptions eigenschap in te stellen. For more information, see Operation options. |
Example
Deze triggerdefinitie abonneert zich op de Office 365 Outlook-API, biedt een callback-URL naar het API-eindpunt en wacht tot het eindpunt reageert wanneer er een nieuwe e-mail binnenkomt.
"When_a_new_email_arrives_(webhook)": {
"type": "ApiConnectionWebhook",
"inputs": {
"body": {
"NotificationUrl": "@{listCallbackUrl()}"
},
"host": {
"connection": {
"name": "@parameters('$connections')['office365']['connectionId']"
}
},
"path": "/MailSubscription/$subscriptions",
"queries": {
"folderPath": "Inbox",
"hasAttachment": "Any",
"importance": "Any"
}
},
"splitOn": "@triggerBody()?['value']"
}
HTTP trigger
Met deze trigger wordt een aanvraag verzonden naar het opgegeven HTTP- of HTTPS-eindpunt op basis van het opgegeven terugkeerschema. De trigger controleert vervolgens het antwoord om te bepalen of de werkstroom wordt uitgevoerd. Zie Service-eindpunten aanroepen via HTTP of HTTPS vanuit Azure Logic Apps voor meer informatie.
"HTTP": {
"type": "Http",
"inputs": {
"method": "<method-type>",
"uri": "<HTTP-or-HTTPS-endpoint-URL>",
"headers": { "<header-content>" },
"queries": "<query-parameters>",
"body": "<body-content>",
"authentication": { "<authentication-type-and-property-values>" },
"retryPolicy": {
"type": "<retry-behavior>"
}
},
"recurrence": {
"frequency": "<time-unit>",
"interval": <number-of-time-units>
},
"runtimeConfiguration": {
"concurrency": {
"runs": <max-runs>,
"maximumWaitingRuns": <max-runs-queue>
}
},
"operationOptions": "<operation-option>"
}
Required
Property | Value | Type | Description |
---|---|---|---|
method |
< method-type> | String | De methode die moet worden gebruikt voor het verzenden van de uitgaande aanvraag: 'GET', 'PUT', 'POST', 'PATCH' of 'DELETE' |
uri |
< HTTP-or-HTTPS-endpoint-URL> | String | De URL van het HTTP- of HTTPS-eindpunt waarnaar u de uitgaande aanvraag wilt verzenden. Maximale tekenreeksgrootte: 2 kB Voor een Azure-service of -resource bevat deze URI-syntaxis de resource-id en het pad naar de resource waartoe u toegang wilt krijgen. |
frequency |
< time-unit> | String | De tijdseenheid waarin wordt beschreven hoe vaak de trigger wordt geactiveerd: 'Seconde', 'Minuut', 'Uur', 'Dag', 'Week', 'Maand' |
interval |
< number-of-time-units> | Integer | Een waarde die aangeeft hoe vaak de trigger wordt geactiveerd op basis van de frequentie. Dit is het aantal tijdseenheden dat moet worden gewacht totdat de trigger opnieuw wordt geactiveerd Dit zijn de minimum- en maximumintervallen: - Maand: 1-16 maanden - Dag: 1-500 dagen - Uur: 1-12.000 uur - Minuut: 1-72.000 minuten - Seconde: 1-999,999 seconden Als het interval bijvoorbeeld 6 is en de frequentie 'Maand' is, is het terugkeerpatroon om de 6 maanden. |
Optional
Property | Value | Type | Description |
---|---|---|---|
headers |
< header-content> | JSON Object | Eventuele headers die u bij de aanvraag moet opnemen Als u bijvoorbeeld de taal en het type wilt instellen: "headers": { "Accept-Language": "en-us", "Content-Type": "application/json" } |
queries |
< query-parameters> | JSON Object | Queryparameters die u in de aanvraag moet gebruiken Het object wordt bijvoorbeeld "queries": { "api-version": "2018-01-01" } toegevoegd ?api-version=2018-01-01 aan de aanvraag. |
body |
< body-content> | JSON Object | De berichtinhoud die moet worden verzonden als nettolading met de aanvraag |
authentication |
< authentication-type-and-property-values> | JSON Object | Het verificatiemodel dat door de aanvraag wordt gebruikt voor het verifiëren van uitgaande aanvragen. Zie Verificatie toevoegen aan uitgaande oproepen voor meer informatie. Naast Scheduler wordt de authority eigenschap ondersteund. Wanneer deze niet is opgegeven, is https://management.azure.com/ de standaardwaarde, maar u kunt een andere waarde gebruiken. |
retryPolicy > type |
< retry-behavior> | JSON Object | Hiermee past u het gedrag voor opnieuw proberen aan voor onregelmatige fouten, met de statuscode 408, 429 en 5XX, en eventuele connectiviteitsuitzonderingen. For more information, see Retry policies. |
runs |
< max-runs> | Integer | By default, workflow instances run at the same time (concurrently or in parallel) up to the default limit. To change this limit by setting a new <count> value, see Change trigger concurrency. |
maximumWaitingRuns |
< max-runs-queue> | Integer | When your workflow is already running the maximum number of instances, which you can change based on the runtimeConfiguration.concurrency.runs property, any new runs are put into this queue up to the default limit. Zie Wachtuitvoeringslimiet wijzigen als u de standaardlimiet wilt wijzigen. |
operationOptions |
< operation-option> | String | U kunt het standaardgedrag wijzigen door de operationOptions eigenschap in te stellen. For more information, see Operation options. |
Outputs
Element | Type | Description |
---|---|---|
headers |
JSON Object | De headers uit het antwoord |
body |
JSON Object | De hoofdtekst van het antwoord |
status code |
Integer | De statuscode van het antwoord |
Vereisten voor binnenkomende aanvragen
Om goed te kunnen werken met uw logische app, moet het eindpunt voldoen aan een specifiek triggerpatroon of -contract en deze antwoordeigenschappen herkennen:
Property | Required | Description |
---|---|---|
Status code | Yes | De statuscode 200 OK start een uitvoering. Elke andere statuscode start geen uitvoering. |
Retry-after header | No | Het aantal seconden totdat uw logische app het eindpunt opnieuw pollt |
Location header | No | De URL die moet worden aangeroepen bij het volgende polling-interval. Als deze niet is opgegeven, wordt de oorspronkelijke URL gebruikt. |
Voorbeeldgedrag voor verschillende aanvragen
Status code | Retry after | Behavior |
---|---|---|
200 | {none} | Voer de werkstroom uit en controleer opnieuw op meer gegevens na het gedefinieerde terugkeerpatroon. |
200 | 10 seconds | Voer de werkstroom uit en controleer na 10 seconden nogmaals op meer gegevens. |
202 | 60 seconds | Activeer de werkstroom niet. De volgende poging vindt plaats in één minuut, afhankelijk van het gedefinieerde terugkeerpatroon. Als het gedefinieerde terugkeerpatroon minder dan één minuut is, heeft de koptekst opnieuw prioriteit. Anders wordt het gedefinieerde terugkeerpatroon gebruikt. |
400 | {none} | Ongeldige aanvraag, voer de werkstroom niet uit. Als er geen retryPolicy is gedefinieerd, wordt het standaardbeleid gebruikt. Nadat het aantal nieuwe pogingen is bereikt, controleert de trigger opnieuw op gegevens na het gedefinieerde terugkeerpatroon. |
500 | {none} | Serverfout: voer de werkstroom niet uit. Als er geen retryPolicy is gedefinieerd, wordt het standaardbeleid gebruikt. Nadat het aantal nieuwe pogingen is bereikt, controleert de trigger opnieuw op gegevens na het gedefinieerde terugkeerpatroon. |
HTTPWebhook trigger
Met deze trigger kan uw logische app worden aangeroepen door een eindpunt te maken dat een abonnement kan registreren door de opgegeven eindpunt-URL aan te roepen. Wanneer u deze trigger in uw werkstroom maakt, wordt met een uitgaande aanvraag het abonnement geregistreerd. Op die manier kan de trigger beginnen met luisteren naar gebeurtenissen. Wanneer een bewerking deze trigger ongeldig maakt, wordt met een uitgaande aanvraag automatisch de aanroep uitgevoerd om het abonnement te annuleren. For more information, see Endpoint subscriptions.
You can also specify asynchronous limits on an HTTPWebhook trigger. Het gedrag van de trigger is afhankelijk van de secties die u gebruikt of weglaat.
"HTTP_Webhook": {
"type": "HttpWebhook",
"inputs": {
"subscribe": {
"method": "<method-type>",
"uri": "<endpoint-subscribe-URL>",
"headers": { "<header-content>" },
"body": "<body-content>",
"authentication": { "<authentication-type>" },
"retryPolicy": { "<retry-behavior>" }
},
"unsubscribe": {
"method": "<method-type>",
"url": "<endpoint-unsubscribe-URL>",
"headers": { "<header-content>" },
"body": "<body-content>",
"authentication": { "<authentication-type>" }
}
},
"runTimeConfiguration": {
"concurrency": {
"runs": <max-runs>,
"maximumWaitingRuns": <max-runs-queue>
}
},
"operationOptions": "<operation-option>"
}
Some values, such as <method-type>, are available for both the "subscribe"
and "unsubscribe"
objects.
Required
Value | Type | Description |
---|---|---|
< method-type> | String | De HTTP-methode die moet worden gebruikt voor de abonnementsaanvraag: 'GET', 'PUT', 'POST', 'PATCH' of 'DELETE' |
< endpoint-subscribe-URL> | String | De eindpunt-URL waar de abonnementsaanvraag moet worden verzonden |
Optional
Value | Type | Description |
---|---|---|
< method-type> | String | De HTTP-methode die moet worden gebruikt voor de annuleringsaanvraag: "GET", "PUT", "POST", "PATCH" of "DELETE" |
< endpoint-unsubscribe-URL> | String | De eindpunt-URL waar de annuleringsaanvraag moet worden verzonden |
< body-content> | String | Berichtinhoud die moet worden verzonden in het abonnement of de annuleringsaanvraag |
< authentication-type> | JSON Object | Het verificatiemodel dat door de aanvraag wordt gebruikt voor het verifiëren van uitgaande aanvragen. Zie Verificatie toevoegen aan uitgaande oproepen voor meer informatie. |
< retry-behavior> | JSON Object | Hiermee past u het gedrag voor opnieuw proberen aan voor onregelmatige fouten, met de statuscode 408, 429 en 5XX, en eventuele connectiviteitsuitzonderingen. For more information, see Retry policies. |
< max-runs> | Integer | By default, workflow instances all run at the same time (concurrently or in parallel) up to the default limit. To change this limit by setting a new <count> value, see Change trigger concurrency. |
< max-runs-queue> | Integer | When your workflow is already running the maximum number of instances, which you can change based on the runtimeConfiguration.concurrency.runs property, any new runs are put into this queue up to the default limit. Zie Wachtuitvoeringslimiet wijzigen als u de standaardlimiet wilt wijzigen. |
< operation-option> | String | U kunt het standaardgedrag wijzigen door de operationOptions eigenschap in te stellen. For more information, see Operation options. |
Outputs
Element | Type | Description |
---|---|---|
headers | JSON Object | De headers uit het antwoord |
body | JSON Object | De hoofdtekst van het antwoord |
status code | Integer | De statuscode van het antwoord |
Example
Deze trigger maakt een abonnement op het opgegeven eindpunt, biedt een unieke callback-URL en wacht op nieuw gepubliceerde technologieartikelen.
"HTTP_Webhook": {
"type": "HttpWebhook",
"inputs": {
"subscribe": {
"method": "POST",
"uri": "https://pubsubhubbub.appspot.com/subscribe",
"body": {
"hub.callback": "@{listCallbackUrl()}",
"hub.mode": "subscribe",
"hub.topic": "https://pubsubhubbub.appspot.com/articleCategories/technology"
},
},
"unsubscribe": {
"method": "POST",
"url": "https://pubsubhubbub.appspot.com/subscribe",
"body": {
"hub.callback": "@{workflow().endpoint}@{listCallbackUrl()}",
"hub.mode": "unsubscribe",
"hub.topic": "https://pubsubhubbub.appspot.com/articleCategories/technology"
}
}
}
}
Recurrence trigger
Deze trigger wordt uitgevoerd op basis van het opgegeven terugkeerschema en biedt een eenvoudige manier om een regelmatig actieve werkstroom te maken.
"Recurrence": {
"type": "Recurrence",
"recurrence": {
"frequency": "<time-unit>",
"interval": <number-of-time-units>,
"startTime": "<start-date-time-with-format-YYYY-MM-DDThh:mm:ss>",
"timeZone": "<time-zone>",
"schedule": {
// Applies only when frequency is Day or Week. Separate values with commas.
"hours": [ <one-or-more-hour-marks> ],
// Applies only when frequency is Day or Week. Separate values with commas.
"minutes": [ <one-or-more-minute-marks> ],
// Applies only when frequency is Week. Separate values with commas.
"weekDays": [ "Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday" ]
}
},
"runtimeConfiguration": {
"concurrency": {
"runs": <max-runs>,
"maximumWaitingRuns": <max-runs-queue>
}
},
"operationOptions": "<operation-option>"
}
Required
Value | Type | Description |
---|---|---|
< time-unit> | String | De tijdseenheid waarin wordt beschreven hoe vaak de trigger wordt geactiveerd: 'Seconde', 'Minuut', 'Uur', 'Dag', 'Week', 'Maand' |
< number-of-time-units> | Integer | Een waarde die aangeeft hoe vaak de trigger wordt geactiveerd op basis van de frequentie. Dit is het aantal tijdseenheden dat moet worden gewacht totdat de trigger opnieuw wordt geactiveerd Dit zijn de minimum- en maximumintervallen: - Maand: 1-16 maanden - Dag: 1-500 dagen - Uur: 1-12.000 uur - Minuut: 1-72.000 minuten - Seconde: 1-999,999 seconden Als het interval bijvoorbeeld 6 is en de frequentie 'Maand' is, is het terugkeerpatroon om de 6 maanden. |
Optional
Value | Type | Description |
---|---|---|
< start-date-time-with-format-YYYY-MM-DDThh:mm:ss> | String | De begindatum en -tijd in deze notatie: JJJJ-MM-DDThh:mm:ss als u een tijdzone opgeeft -or- JJJJ-MM-DDThh:mm:ssZ als u geen tijdzone opgeeft Als u bijvoorbeeld 18 september 2017 om 2:00 uur wilt, geeft u '2017-09-18T14:00:00' op en geeft u een tijdzone op, zoals 'Pacific Standard Time', of geeft u '2017-09-18T14:00:00Z' op zonder tijdzone. Note: This start time has a maximum of 49 years in the future and must follow the ISO 8601 date time specification in UTC date time format, but without a UTC offset. Als u geen tijdzone opgeeft, moet u de letter Z aan het einde zonder spaties toevoegen. This "Z" refers to the equivalent nautical time. Voor eenvoudige planningen is de begintijd de eerste keer, terwijl de trigger voor complexe schema's niet eerder wordt geactiveerd dan de begintijd. Zie Regelmatig actieve taken maken en plannen voor meer informatie over begindatums en -tijden. |
< time-zone> | String | Applies only when you specify a start time because this trigger doesn't accept UTC offset. Geef de tijdzone op die u wilt toepassen. |
< one-or-more-hour-marks> | Matrix met gehele getallen of gehele getallen | Als u 'Dag' of 'Week' frequency opgeeft, kunt u een of meer gehele getallen opgeven van 0 tot 23, gescheiden door komma's, als de uren van de dag waarop u de werkstroom wilt uitvoeren. Als u bijvoorbeeld '10', '12' en '14' opgeeft, krijgt u 10:00, 12:00 en 2:00 uur als de uurmarkeringen. |
< one-or-more-minute-marks> | Matrix met gehele getallen of gehele getallen | Als u 'Dag' of 'Week' frequency opgeeft, kunt u een of meer gehele getallen opgeven van 0 tot 59, gescheiden door komma's, als de minuten van het uur waarop u de werkstroom wilt uitvoeren. U kunt bijvoorbeeld '30' opgeven als de minuutmarkering en het vorige voorbeeld voor uren van de dag gebruiken, u 10:30 uur, 12:30 uur en 2:30 uur krijgt. |
weekDays | Tekenreeks- of tekenreeksmatrix | Als u 'Week' opgeeft frequency , kunt u een of meer dagen opgeven, gescheiden door komma's, wanneer u de werkstroom wilt uitvoeren: 'Maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrijdag', 'Zaterdag' en 'Zondag' |
< max-runs> | Integer | By default, workflow instances all run at the same time (concurrently or in parallel) up to the default limit. To change this limit by setting a new <count> value, see Change trigger concurrency. |
< max-runs-queue> | Integer | When your workflow is already running the maximum number of instances, which you can change based on the runtimeConfiguration.concurrency.runs property, any new runs are put into this queue up to the default limit. Zie Wachtuitvoeringslimiet wijzigen als u de standaardlimiet wilt wijzigen. |
< operation-option> | String | U kunt het standaardgedrag wijzigen door de operationOptions eigenschap in te stellen. For more information, see Operation options. |
Example 1
Deze eenvoudige terugkeertrigger wordt dagelijks uitgevoerd:
"Recurrence": {
"type": "Recurrence",
"recurrence": {
"frequency": "Day",
"interval": 1
}
}
Example 2
U kunt een begindatum en -tijd opgeven voor het activeren van de trigger. Deze terugkeertrigger begint op de opgegeven datum en wordt vervolgens dagelijks geactiveerd:
"Recurrence": {
"type": "Recurrence",
"recurrence": {
"frequency": "Day",
"interval": 1,
"startTime": "2017-09-18T00:00:00Z"
}
}
Example 3
Deze terugkeertrigger begint op 9 september 2017 om 2:00 uur en wordt wekelijks elke maandag om 10:30, 12:30 uur en 2:30 uur Pacific Standard Time geactiveerd:
"Recurrence": {
"type": "Recurrence",
"recurrence": {
"frequency": "Week",
"interval": 1,
"schedule": {
"hours": [ 10, 12, 14 ],
"minutes": [ 30 ],
"weekDays": [ "Monday" ]
},
"startTime": "2017-09-07T14:00:00",
"timeZone": "Pacific Standard Time"
}
}
Zie Regelmatig actieve taken maken en plannen voor meer informatie plus voorbeelden voor deze trigger.
Request trigger
Met deze trigger kan uw logische app worden aangeroepen door een eindpunt te maken dat binnenkomende aanvragen kan accepteren. Geef voor deze trigger een JSON-schema op waarmee de nettolading of invoer wordt beschreven en gevalideerd die de trigger ontvangt van de binnenkomende aanvraag. Het schema maakt triggereigenschappen ook gemakkelijker te raadplegen vanuit latere acties in de werkstroom.
Note
The original name for the Request trigger was manual, which might still appear in some places. Deze naam is gewijzigd om meer consistentie te creëren rond het type werkstroompatroon dat u gebruikt om de trigger te bouwen.
Als u deze trigger wilt aanroepen, moet u de listCallbackUrl
API gebruiken, die wordt beschreven in de REST API van de werkstroomservice. Zie Werkstromen aanroepen, activeren of nesten met HTTP-eindpunten voor meer informatie over het gebruik van deze trigger als een HTTP-eindpunt.
"Request": {
"type": "Request",
"kind": "Http",
"inputs": {
"method": "<method-type>",
"relativePath": "<relative-path-for-accepted-parameter>",
"schema": {
"type": "object",
"properties": {
"<property-name>": {
"type": "<property-type>"
}
},
"required": [ "<required-properties>" ]
}
},
"runTimeConfiguration": {
"concurrency": {
"runs": <max-runs>,
"maximumWaitingRuns": <max-run-queue>
},
},
"operationOptions": "<operation-option>"
}
Required
Value | Type | Description |
---|---|---|
< property-name> | String | De naam van een eigenschap in het JSON-schema, waarin de nettolading wordt beschreven |
< property-type> | String | Het type eigenschap |
Optional
Value | Type | Description |
---|---|---|
< method-type> | String | De methode die binnenkomende aanvragen moeten gebruiken om uw logische app aan te roepen: 'GET', 'PUT', 'POST', 'PATCH', 'DELETE' |
< relative-path-for-accepted-parameter> | String | Het relatieve pad voor de parameter die de URL van uw eindpunt kan accepteren |
< required-properties> | Array | Een of meer eigenschappen waarvoor waarden zijn vereist |
< max-runs> | Integer | By default, workflow instances all run at the same time (concurrently or in parallel) up to the default limit. To change this limit by setting a new <count> value, see Change trigger concurrency. |
< max-runs-queue> | Integer | When your workflow is already running the maximum number of instances, which you can change based on the runtimeConfiguration.concurrency.runs property, any new runs are put into this queue up to the default limit. Zie Wachtuitvoeringslimiet wijzigen als u de standaardlimiet wilt wijzigen. |
< operation-option> | String | U kunt het standaardgedrag wijzigen door de operationOptions eigenschap in te stellen. For more information, see Operation options. |
Example
Deze trigger geeft aan dat een binnenkomende aanvraag de HTTP POST-methode moet gebruiken om de trigger aan te roepen en een schema bevat waarmee invoer van de binnenkomende aanvraag wordt gevalideerd:
"Request": {
"type": "Request",
"kind": "Http",
"inputs": {
"method": "POST",
"schema": {
"type": "object",
"properties": {
"customerName": {
"type": "String"
},
"customerAddress": {
"type": "Object",
"properties": {
"streetAddress": {
"type": "string"
},
"city": {
"type": "string"
}
}
}
}
}
}
}
Trigger conditions
Voor elke trigger en alleen triggers kunt u een matrix opnemen die een of meer expressies bevat voor voorwaarden die bepalen of de werkstroom moet worden uitgevoerd. Als u de conditions
eigenschap wilt toevoegen aan een trigger in uw werkstroom, opent u uw logische app in de codeweergave-editor.
U kunt bijvoorbeeld opgeven dat een trigger alleen wordt geactiveerd wanneer een website een interne serverfout retourneert door te verwijzen naar de statuscode van de trigger in de conditions
eigenschap:
"Recurrence": {
"type": "Recurrence",
"recurrence": {
"frequency": "Hour",
"interval": 1
},
"conditions": [ {
"expression": "@equals(triggers().code, 'InternalServerError')"
} ]
}
Standaard wordt een trigger pas geactiveerd nadat een antwoord van 200 OK is ontvangen. Wanneer een expressie verwijst naar de statuscode van een trigger, wordt het standaardgedrag van de trigger vervangen. Dus als u wilt dat de trigger wordt geactiveerd voor meer dan één statuscode, zoals de statuscode '200' en '201', moet u deze expressie opnemen als uw voorwaarde:
@or(equals(triggers().code, 200),equals(triggers().code, 201))
Meerdere uitvoeringen activeren op een matrix
Als uw trigger een matrix ontvangt die door uw werkstroom moet worden verwerkt, kan het soms te lang duren voordat elk matrixitem wordt verwerkt. Instead, you can use the SplitOn property in your trigger to debatch the array. Debatching splitst de matrixitems op en start een nieuw werkstroomexemplaren die voor elk matrixitem wordt uitgevoerd. Deze methode is bijvoorbeeld handig als u een eindpunt wilt peilen dat mogelijk meerdere nieuwe items retourneert tussen polling-intervallen.
If your trigger's Swagger file describes a payload that's an array, the SplitOn property is automatically added to your trigger. Voeg anders deze eigenschap toe in de nettolading van het antwoord met de matrix die u wilt bespreken.
Bekijk de volgende overwegingen voordat u de SplitOn-functie gebruikt:
If trigger concurrency is enabled, the SplitOn limit is significantly reduced. Als het aantal items deze limiet overschrijdt, wordt de functie SplitOn uitgeschakeld.
U kunt de SplitOn-functie niet gebruiken met een synchroon antwoordpatroon. Any workflow that uses the SplitOn property and includes a response action runs asynchronously and immediately sends a
202 ACCEPTED
response.For the maximum number of array items that SplitOn can process in a single workflow run, see Limits and configuration.
Example
Stel dat u een HTTP-trigger hebt die een API aanroept en dit antwoord ontvangt:
{
"Status": "Succeeded",
"Rows": [
{
"id": 938109380,
"name": "customer-name-one"
},
{
"id": 938109381,
"name": "customer-name-two"
}
]
}
Uw werkstroom heeft alleen de inhoud van de matrix nodig, Rows
zodat u een trigger zoals in dit voorbeeld kunt maken:
"HTTP_Debatch": {
"type": "Http",
"inputs": {
"uri": "https://mydomain.com/myAPI",
"method": "GET"
},
"recurrence": {
"frequency": "Second",
"interval": 1
},
"splitOn": "@triggerBody()?.Rows"
}
Note
Als u de SplitOn
opdracht gebruikt, kunt u de eigenschappen die zich buiten de matrix bevinden, niet ophalen.
Voor dit voorbeeld kunt u de status
eigenschap niet ophalen in het antwoord dat wordt geretourneerd door de API.
Als u een fout wilt voorkomen als de Rows
eigenschap niet bestaat, gebruikt dit voorbeeld de ?
operator.
Uw werkstroomdefinitie kan nu worden gebruikt @triggerBody().name
om de name
waarden op te halen, die afkomstig zijn "customer-name-one"
van de eerste uitvoering en "customer-name-two"
van de tweede uitvoering. Uw triggeruitvoer ziet er dus als volgt uit:
{
"body": {
"id": 938109380,
"name": "customer-name-one"
}
}
{
"body": {
"id": 938109381,
"name": "customer-name-two"
}
}
Actions overview
Azure Logic Apps biedt verschillende actietypen, elk met verschillende invoerwaarden die het unieke gedrag van een actie definiëren. Acties hebben deze elementen op hoog niveau, hoewel sommige optioneel zijn:
"<action-name>": {
"type": "<action-type>",
"inputs": {
"<input-name>": { "<input-value>" },
"retryPolicy": "<retry-behavior>"
},
"runAfter": { "<previous-trigger-or-action-status>" },
"runtimeConfiguration": { "<runtime-config-options>" },
"operationOptions": "<operation-option>"
},
Required
Value | Type | Description |
---|---|---|
< action-name> | String | De naam van de actie |
< action-type> | String | Het actietype, bijvoorbeeld Http of ApiConnection |
< input-name> | String | De naam voor een invoer die het gedrag van de actie definieert |
< input-value> | Various | De invoerwaarde, die een tekenreeks, geheel getal, JSON-object, enzovoort kan zijn |
< previous-trigger-or-action-status> | JSON Object | De naam en de resulterende status voor de trigger of actie die direct moeten worden uitgevoerd voordat deze huidige actie kan worden uitgevoerd |
Optional
Value | Type | Description |
---|---|---|
< retry-behavior> | JSON Object | Hiermee past u het gedrag voor opnieuw proberen aan voor onregelmatige fouten, met de statuscode 408, 429 en 5XX, en eventuele connectiviteitsuitzonderingen. Zie Beleid voor opnieuw proberen voor meer informatie. |
< runtime-config-options> | JSON Object | Voor sommige acties kunt u het gedrag van de actie tijdens runtime wijzigen door eigenschappen in te stellen runtimeConfiguration . Zie Runtime-configuratie-instellingen voor meer informatie. |
< operation-option> | String | Voor sommige acties kunt u het standaardgedrag wijzigen door de operationOptions eigenschap in te stellen. For more information, see Operation options. |
Lijst met actietypen
Hier volgen enkele veelgebruikte actietypen:
Ingebouwde actietypen , zoals deze voorbeelden en meer:
HTTP for calling endpoints over HTTP or HTTPS
Response for responding to requests
JavaScript-code uitvoeren voor het uitvoeren van JavaScript-codefragmenten
Function for calling Azure Functions
Data operation actions such as Join, Compose, Table, Select, and others that create or transform data from various inputs
Workflow for calling another logic app workflow
Beheerde API-actietypen zoals ApiConnection en ApiConnectionWebHook die verschillende connectors en API's aanroepen die worden beheerd door Microsoft, bijvoorbeeld Azure Service Bus, Office 365 Outlook, Power BI, Azure Blob Storage, OneDrive, GitHub en meer
Werkstroomactietypen beheren, zoals If, Foreach, Switch, Scope en Until, die andere acties bevatten en u helpen bij het organiseren van werkstroomuitvoering
Built-in actions
Action type | Description |
---|---|
Compose | Hiermee maakt u één uitvoer van invoer, die verschillende typen kan hebben. |
JavaScript-code uitvoeren | Voer JavaScript-codefragmenten uit die binnen specifieke criteria passen. Zie Codefragmenten toevoegen en uitvoeren met inlinecode voor meer informatie. |
Function | Roept een Azure-functie aan. |
HTTP | Roept een HTTP-eindpunt aan. |
Join | Hiermee maakt u een tekenreeks van alle items in een matrix en scheidt u deze items met een opgegeven scheidingsteken. |
Parse JSON | Hiermee maakt u gebruiksvriendelijke tokens op basis van eigenschappen in JSON-inhoud. U kunt vervolgens naar deze eigenschappen verwijzen door de tokens in uw logische app op te slaan. |
Query | Hiermee maakt u een matrix op basis van items in een andere matrix op basis van een voorwaarde of filter. |
Response | Hiermee maakt u een reactie op een inkomende oproep of aanvraag. |
Select | Hiermee maakt u een matrix met JSON-objecten door items van een andere matrix te transformeren op basis van de opgegeven kaart. |
Table | Hiermee maakt u een CSV- of HTML-tabel op basis van een matrix. |
Terminate | Hiermee stopt u een actieve werkstroom. |
Wait | Onderbreekt uw werkstroom voor een opgegeven duur of tot de opgegeven datum en tijd. |
Workflow | Nestt een werkstroom in een andere werkstroom. |
Beheerde API-acties
Action type | Description |
---|---|
ApiConnection | Calls an HTTP endpoint by using a Microsoft-managed API. |
ApiConnectionWebhook | Works like HTTP Webhook but uses a Microsoft-managed API. |
Werkstroomacties beheren
Met deze acties kunt u de uitvoering van werkstromen beheren en andere acties opnemen. Van buiten een werkstroomactie voor besturingselementen kunt u rechtstreeks verwijzen naar acties binnen die werkstroomactie voor besturingselementen. Als u bijvoorbeeld een Http
actie binnen een bereik hebt, kunt u overal in de werkstroom verwijzen naar de @body('Http')
expressie. Acties die zich in een werkstroomactie voor besturingselementen bevinden, kunnen echter alleen worden uitgevoerd na andere acties die zich in dezelfde werkstroomstructuur bevinden.
Action type | Description |
---|---|
ForEach | Voer dezelfde acties uit in een lus voor elk item in een matrix. |
If | Voer acties uit op basis van of de opgegeven voorwaarde waar of onwaar is. |
Scope | Voer acties uit op basis van de groepsstatus van een set acties. |
Switch | Voer acties uit die zijn ingedeeld in gevallen waarin waarden uit expressies, objecten of tokens overeenkomen met de waarden die in elke case zijn opgegeven. |
Until | Voer acties in een lus uit totdat de opgegeven voorwaarde waar is. |
Acties - Gedetailleerde naslaginformatie
APIConnection action
This action sends an HTTP request to a Microsoft-managed API and requires information about the API and parameters plus a reference to a valid connection.
"<action-name>": {
"type": "ApiConnection",
"inputs": {
"host": {
"connection": {
"name": "@parameters('$connections')['<api-name>']['connectionId']"
},
"<other-action-specific-input-properties>"
},
"method": "<method-type>",
"path": "/<api-operation>",
"retryPolicy": "<retry-behavior>",
"queries": { "<query-parameters>" },
"<other-action-specific-properties>"
},
"runAfter": {}
}
Required
Value | Type | Description |
---|---|---|
< action-name> | String | De naam van de actie die door de connector wordt geleverd |
< api-name> | String | De naam van de door Microsoft beheerde API die wordt gebruikt voor de verbinding |
< method-type> | String | De HTTP-methode voor het aanroepen van de API: 'GET', 'PUT', 'POST', 'PATCH' of 'DELETE' |
< api-operation> | String | De API-bewerking die moet worden aangeroepen |
Optional
Value | Type | Description |
---|---|---|
< other-action-specific-input-properties> | JSON Object | Alle andere invoereigenschappen die van toepassing zijn op deze specifieke actie |
< retry-behavior> | JSON Object | Hiermee past u het gedrag voor opnieuw proberen aan voor onregelmatige fouten, met de statuscode 408, 429 en 5XX, en eventuele connectiviteitsuitzonderingen. For more information, see Retry policies. |
< query-parameters> | JSON Object | Queryparameters die moeten worden opgenomen met de API-aanroep. Het object wordt bijvoorbeeld "queries": { "api-version": "2018-01-01" } toegevoegd ?api-version=2018-01-01 aan de aanroep. |
< other-action-specific-properties> | JSON Object | Alle andere eigenschappen die van toepassing zijn op deze specifieke actie |
Example
In deze definitie wordt de actie Een e-mail verzenden voor Office 365 Outlook-connector beschreven. Dit is een door Microsoft beheerde API:
"Send_an_email": {
"type": "ApiConnection",
"inputs": {
"body": {
"Body": "Thank you for your membership!",
"Subject": "Hello and welcome!",
"To": "Sophie.Owen@contoso.com"
},
"host": {
"connection": {
"name": "@parameters('$connections')['office365']['connectionId']"
}
},
"method": "POST",
"path": "/Mail"
},
"runAfter": {}
}
APIConnectionWebhook action
This action sends a subscription request over HTTP to an endpoint by using a Microsoft-managed API, provides a callback URL to where the endpoint can send a response, and waits for the endpoint to respond. For more information, see Endpoint subscriptions.
"<action-name>": {
"type": "ApiConnectionWebhook",
"inputs": {
"subscribe": {
"method": "<method-type>",
"uri": "<api-subscribe-URL>",
"headers": { "<header-content>" },
"body": "<body-content>",
"authentication": { "<authentication-type>" },
"retryPolicy": "<retry-behavior>",
"queries": { "<query-parameters>" },
"<other-action-specific-input-properties>"
},
"unsubscribe": {
"method": "<method-type>",
"uri": "<api-unsubscribe-URL>",
"headers": { "<header-content>" },
"body": "<body-content>",
"authentication": { "<authentication-type>" },
"<other-action-specific-properties>"
},
},
"runAfter": {}
}
Some values, such as <method-type>, are available for both the "subscribe"
and "unsubscribe"
objects.
Required
Value | Type | Description |
---|---|---|
< action-name> | String | De naam van de actie die door de connector wordt geleverd |
< method-type> | String | De HTTP-methode die moet worden gebruikt voor het abonneren of afmelden van een eindpunt: 'GET', 'PUT', 'POST', 'PATCH' of 'DELETE' |
< api-subscribe-URL> | String | De URI die moet worden gebruikt voor het abonneren op de API |
Optional
Value | Type | Description |
---|---|---|
< api-unsubscribe-URL> | String | De URI die moet worden gebruikt voor het afmelden van de API |
< header-content> | JSON Object | Eventuele headers die in de aanvraag moeten worden verzonden Als u bijvoorbeeld de taal wilt instellen en typt voor een aanvraag: "headers": { "Accept-Language": "en-us", "Content-Type": "application/json" } |
< body-content> | JSON Object | Alle berichtinhoud die in de aanvraag moet worden verzonden |
< authentication-type> | JSON Object | Het verificatiemodel dat door de aanvraag wordt gebruikt voor het verifiëren van uitgaande aanvragen. Zie Verificatie toevoegen aan uitgaande oproepen voor meer informatie. |
< retry-behavior> | JSON Object | Hiermee past u het gedrag voor opnieuw proberen aan voor onregelmatige fouten, met de statuscode 408, 429 en 5XX, en eventuele connectiviteitsuitzonderingen. For more information, see Retry policies. |
< query-parameters> | JSON Object | Queryparameters die moeten worden opgenomen met de API-aanroep Het object wordt bijvoorbeeld "queries": { "api-version": "2018-01-01" } toegevoegd ?api-version=2018-01-01 aan de aanroep. |
< other-action-specific-input-properties> | JSON Object | Alle andere invoereigenschappen die van toepassing zijn op deze specifieke actie |
< other-action-specific-properties> | JSON Object | Alle andere eigenschappen die van toepassing zijn op deze specifieke actie |
You can also specify limits on an ApiConnectionWebhook action in the same way as HTTP asynchronous limits.
Compose action
Met deze actie maakt u één uitvoer van meerdere invoergegevens, inclusief expressies. Zowel de uitvoer als de invoer kunnen elk type hebben dat azure Logic Apps systeemeigen ondersteunt, zoals matrices, JSON-objecten, XML en binair. Vervolgens kunt u de uitvoer van de actie in andere acties gebruiken.
"Compose": {
"type": "Compose",
"inputs": "<inputs-to-compose>",
"runAfter": {}
},
Required
Value | Type | Description |
---|---|---|
< inputs-to-compose> | Any | De invoer voor het maken van één uitvoer |
Example 1
Deze actiedefinitie wordt abcdefg
samengevoegd met een volgruimte en de waarde 1234
:
"Compose": {
"type": "Compose",
"inputs": "abcdefg 1234",
"runAfter": {}
},
Dit is de uitvoer die met deze actie wordt gemaakt:
abcdefg 1234
Example 2
Met deze actiedefinitie wordt een tekenreeksvariabele samengevoegd die een geheel getalvariabele bevat abcdefg
1234
met:
"Compose": {
"type": "Compose",
"inputs": "@{variables('myString')}@{variables('myInteger')}",
"runAfter": {}
},
Dit is de uitvoer die met deze actie wordt gemaakt:
"abcdefg1234"
JavaScript-codeactie uitvoeren
Met deze actie wordt een JavaScript-codefragment uitgevoerd en worden de resultaten geretourneerd via een token waarnaar volgende acties in de werkstroom kunnen verwijzen.
"Execute_JavaScript_Code": {
"type": "JavaScriptCode",
"inputs": {
"code": "<JavaScript-code-snippet>",
"explicitDependencies": {
"actions": [ <preceding-actions> ],
"includeTrigger": true
}
},
"runAfter": {}
}
Required
Value | Type | Description |
---|---|---|
< JavaScript-code-snippet> | Varies | De JavaScript-code die u wilt uitvoeren. Zie Codefragmenten uitvoeren in werkstromen voor meer informatie. In het code kenmerk kan het codefragment het alleen-lezenobject workflowContext gebruiken als invoer. Dit object bevat subproperties die uw code toegang geven tot de uitvoer van de trigger en eventuele voorgaande acties in uw werkstroom. Zie Referentietrigger- en actieresultaten met behulp van het object workflowContext voor meer informatie over het workflowContext object. |
Vereist in sommige gevallen
Het explicitDependencies
kenmerk geeft aan dat u expliciet resultaten van de trigger, eerdere acties of beide als afhankelijkheden voor uw codefragment wilt opnemen. Zie Afhankelijkheden als parameters toevoegen aan een inlinecodeactie voor meer informatie over het toevoegen van deze afhankelijkheden.
Voor het includeTrigger
kenmerk kunt u waarden opgeven of true
waarden opgevenfalse
.
Value | Type | Description |
---|---|---|
< preceding-actions> | String array | Een matrix met de actienamen in JSON-indeling als afhankelijkheden. Make sure to use the action names that appear in your workflow definition where action names use underscores (_), not spaces (" "). |
Example 1
Met deze actie wordt code uitgevoerd die de naam van de werkstroom van uw logische app ophaalt en de tekst 'Hallo wereld van <logic-app-name>' retourneert als resultaat. In dit voorbeeld verwijst de code naar de naam van de werkstroom door toegang te krijgen tot de workflowContext.workflow.name
eigenschap via het object alleen-lezen workflowContext
. Zie Referentietrigger en actieresultaten in uw code voor meer informatie over het gebruik van het workflowContext
object.
"Execute_JavaScript_Code": {
"type": "JavaScriptCode",
"inputs": {
"code": "var text = \"Hello world from \" + workflowContext.workflow.name;\r\n\r\nreturn text;"
},
"runAfter": {}
}
Example 2
Met deze actie wordt code uitgevoerd in een werkstroom van een logische app die wordt geactiveerd wanneer een nieuwe e-mail binnenkomt in een Outlook-account. De werkstroom maakt ook gebruik van de e-mailactie Goedkeuring verzenden in Office 365 Outlook waarmee de inhoud van de ontvangen e-mail wordt doorgestuurd, samen met een verzoek om goedkeuring.
De code extraheert de e-mailadressen uit de eigenschap van Body
het e-mailbericht en retourneert de adressen samen met de SelectedOption
eigenschapswaarde van de goedkeuringsactie. De actie bevat expliciet de actie Goedkeurings-e-mail verzenden als een afhankelijkheid in het actions
object binnen het explicitDependencies
object.
"Execute_JavaScript_Code": {
"type": "JavaScriptCode",
"inputs": {
"code": "var myResult = /(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))/g;\r\n\r\nvar email = workflowContext.trigger.outputs.body.Body;\r\n\r\nvar reply = workflowContext.actions.Send_approval_email.outputs.body.SelectedOption;\r\n\r\nreturn email.match(myResult) + \" - \" + reply;\r\n;",
"explicitDependencies": {
"actions": [
"Send_approval_email"
]
}
},
"runAfter": {}
}
Function action
This action calls a previously created Azure function.
"<Azure-function-name>": {
"type": "Function",
"inputs": {
"function": {
"id": "<Azure-function-ID>"
},
"method": "<method-type>",
"headers": { "<header-content>" },
"body": { "<body-content>" },
"queries": { "<query-parameters>" }
},
"runAfter": {}
}
Required
Value | Type | Description |
---|---|---|
< Azure-function-ID> | String | De resource-id voor de Azure-functie die u wilt aanroepen. Dit is de notatie voor deze waarde: "/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group>/providers/Microsoft.Web/sites/<Azure-function-app-name>/functions/<Azure-function-name>" |
< method-type> | String | De HTTP-methode die moet worden gebruikt voor het aanroepen van de functie: 'GET', 'PUT', 'POST', 'PATCH' of 'DELETE' Als dit niet is opgegeven, is de standaardwaarde de methode POST. |
Optional
Value | Type | Description |
---|---|---|
< header-content> | JSON Object | Eventuele headers die met de oproep moeten worden verzonden Als u bijvoorbeeld de taal wilt instellen en typt voor een aanvraag: "headers": { "Accept-Language": "en-us", "Content-Type": "application/json" } |
< body-content> | JSON Object | Alle berichtinhoud die in de aanvraag moet worden verzonden |
< query-parameters> | JSON Object | Queryparameters die moeten worden opgenomen met de API-aanroep Het object wordt bijvoorbeeld "queries": { "api-version": "2018-01-01" } toegevoegd ?api-version=2018-01-01 aan de aanroep. |
< other-action-specific-input-properties> | JSON Object | Alle andere invoereigenschappen die van toepassing zijn op deze specifieke actie |
< other-action-specific-properties> | JSON Object | Alle andere eigenschappen die van toepassing zijn op deze specifieke actie |
Wanneer u uw logische app opslaat, voert Azure Logic Apps deze controles uit op de functie waarnaar wordt verwezen:
Uw werkstroom moet toegang hebben tot de functie.
Uw werkstroom kan alleen een standaard HTTP-trigger of algemene JSON-webhooktrigger gebruiken.
Azure Logic Apps haalt de URL van de trigger op en slaat deze in de cache op, die tijdens runtime wordt gebruikt. However, if any operation invalidates the cached URL, the Function action fails at runtime. U kunt dit probleem oplossen door de logische app opnieuw op te slaan, zodat de logische app de trigger-URL opnieuw in de cache opslaat.
De functie kan geen route hebben gedefinieerd.
Alleen de autorisatieniveaus 'functie' en 'anoniem' zijn toegestaan.
Example
Met deze actiedefinitie wordt de eerder gemaakte functie GetProductID aangeroepen:
"GetProductID": {
"type": "Function",
"inputs": {
"function": {
"id": "/subscriptions/<XXXXXXXXXXXXXXXXXXXX>/resourceGroups/myLogicAppResourceGroup/providers/Microsoft.Web/sites/InventoryChecker/functions/GetProductID"
},
"method": "POST",
"headers": {
"x-ms-date": "@utcnow()"
},
"body": {
"Product_ID": "@variables('ProductID')"
}
},
"runAfter": {}
}
HTTP action
Met deze actie wordt een aanvraag verzonden naar het opgegeven HTTP- of HTTPS-eindpunt en wordt het antwoord gecontroleerd om te bepalen of de werkstroom wordt uitgevoerd. Zie Service-eindpunten aanroepen via HTTP of HTTPS vanuit Azure Logic Apps voor meer informatie.
"HTTP": {
"type": "Http",
"inputs": {
"method": "<method-type>",
"uri": "<HTTP-or-HTTPS-endpoint-URL>",
"headers": { "<header-content>" },
"queries": { "<query-parameters>" },
"body": "<body-content>",
"authentication": { "<authentication-type-and-property-values>" },
"retryPolicy": {
"type": "<retry-behavior>"
},
},
"runAfter": {}
}
Required
Property | Value | Type | Description |
---|---|---|---|
method |
< method-type> | String | De methode die moet worden gebruikt voor het verzenden van de uitgaande aanvraag: 'GET', 'PUT', 'POST', 'PATCH' of 'DELETE' |
uri |
< HTTP-or-HTTPS-endpoint-URL> | String | De URL van het HTTP- of HTTPS-eindpunt waarnaar u de uitgaande aanvraag wilt verzenden. Maximale tekenreeksgrootte: 2 kB Voor een Azure-service of -resource bevat deze URI-syntaxis de resource-id en het pad naar de resource waartoe u toegang wilt krijgen. |
Optional
Property | Value | Type | Description |
---|---|---|---|
headers |
< header-content> | JSON Object | Eventuele headers die u bij de aanvraag moet opnemen Als u bijvoorbeeld de taal en het type wilt instellen: "headers": { "Accept-Language": "en-us", "Content-Type": "application/json" } |
queries |
< query-parameters> | JSON Object | Queryparameters die u in de aanvraag moet gebruiken Het object wordt bijvoorbeeld "queries": { "api-version": "2018-01-01" } toegevoegd ?api-version=2018-01-01 aan de aanroep. |
body |
< body-content> | JSON Object | De berichtinhoud die moet worden verzonden als nettolading met de aanvraag |
authentication |
< authentication-type-and-property-values> | JSON Object | Het verificatiemodel dat door de aanvraag wordt gebruikt voor het verifiëren van uitgaande aanvragen. Zie Verificatie toevoegen aan uitgaande oproepen voor meer informatie. Naast Scheduler wordt de authority eigenschap ondersteund. Wanneer deze niet is opgegeven, is https://management.azure.com/ de standaardwaarde, maar u kunt een andere waarde gebruiken. |
retryPolicy > type |
< retry-behavior> | JSON Object | Hiermee past u het gedrag voor opnieuw proberen aan voor onregelmatige fouten, met de statuscode 408, 429 en 5XX, en eventuele connectiviteitsuitzonderingen. For more information, see Retry policies. |
< other-action-specific-input-properties> | < input-property> | JSON Object | Alle andere invoereigenschappen die van toepassing zijn op deze specifieke actie |
< other-action-specific-properties> | < property-value> | JSON Object | Alle andere eigenschappen die van toepassing zijn op deze specifieke actie |
Example
Deze actiedefinitie haalt het laatste nieuws op door een aanvraag naar het opgegeven eindpunt te verzenden:
"HTTP": {
"type": "Http",
"inputs": {
"method": "GET",
"uri": "https://mynews.example.com/latest"
}
}
Join action
Met deze actie maakt u een tekenreeks van alle items in een matrix en scheidt u deze items met het opgegeven scheidingsteken.
"Join": {
"type": "Join",
"inputs": {
"from": <array>,
"joinWith": "<delimiter>"
},
"runAfter": {}
}
Required
Value | Type | Description |
---|---|---|
< array> | Array | De matrix of expressie die de bronitems levert. Als u een expressie opgeeft, plaatst u die expressie tussen dubbele aanhalingstekens. |
< delimiter> | Tekenreeks met één teken | Het teken dat elk item in de tekenreeks scheidt |
Example
Stel dat u een eerder gemaakte variabele 'myIntegerArray' hebt die deze matrix met gehele getallen bevat:
[1,2,3,4]
Deze actiedefinitie haalt de waarden van de variabele op met behulp van de variables()
functie in een expressie en maakt deze tekenreeks met deze waarden, gescheiden door een komma: "1,2,3,4"
"Join": {
"type": "Join",
"inputs": {
"from": "@variables('myIntegerArray')",
"joinWith": ","
},
"runAfter": {}
}
JSON-actie parseren
This action creates user-friendly fields or tokens from the properties in JSON content. U kunt deze eigenschappen vervolgens openen in uw logische app met behulp van de tokens. Als u bijvoorbeeld JSON-uitvoer van services zoals Azure Service Bus en Azure Cosmos DB wilt gebruiken, kunt u deze actie opnemen in uw logische app, zodat u gemakkelijker naar de gegevens in die uitvoer kunt verwijzen.
"Parse_JSON": {
"type": "ParseJson",
"inputs": {
"content": "<JSON-source>",
"schema": { "<JSON-schema>" }
},
"runAfter": {}
},
Required
Value | Type | Description |
---|---|---|
< JSON-source> | JSON Object | De JSON-inhoud die u wilt parseren |
< JSON-schema> | JSON Object | Het JSON-schema dat de onderliggende JSON-inhoud beschrijft, die door de actie wordt gebruikt voor het parseren van de bron-JSON-inhoud. Tip: In the workflow designer, you can either provide the schema or provide a sample payload so that the action can generate the schema. |
Example
This action definition creates these tokens that you can use in your workflow but only in actions that run following the Parse JSON action:
FirstName
, LastName
en Email
"Parse_JSON": {
"type": "ParseJson",
"inputs": {
"content": {
"Member": {
"Email": "Sophie.Owen@contoso.com",
"FirstName": "Sophie",
"LastName": "Owen"
}
},
"schema": {
"type": "object",
"properties": {
"Member": {
"type": "object",
"properties": {
"Email": {
"type": "string"
},
"FirstName": {
"type": "string"
},
"LastName": {
"type": "string"
}
}
}
}
}
},
"runAfter": { }
},
In dit voorbeeld geeft de eigenschap 'inhoud' de JSON-inhoud op voor de actie die moet worden geparseerd. U kunt deze JSON-inhoud ook opgeven als de voorbeeldpayload voor het genereren van het schema.
"content": {
"Member": {
"FirstName": "Sophie",
"LastName": "Owen",
"Email": "Sophie.Owen@contoso.com"
}
},
De eigenschap Schema geeft het JSON-schema op dat wordt gebruikt voor het beschrijven van de JSON-inhoud:
"schema": {
"type": "object",
"properties": {
"Member": {
"type": "object",
"properties": {
"FirstName": {
"type": "string"
},
"LastName": {
"type": "string"
},
"Email": {
"type": "string"
}
}
}
}
}
Query action
Met deze actie maakt u een matrix op basis van items in een andere matrix op basis van een opgegeven voorwaarde of filter.
"Filter_array": {
"type": "Query",
"inputs": {
"from": <array>,
"where": "<condition-or-filter>"
},
"runAfter": {}
}
Required
Value | Type | Description |
---|---|---|
< array> | Array | De matrix of expressie die de bronitems levert. Als u een expressie opgeeft, plaatst u die expressie tussen dubbele aanhalingstekens. |
< condition-or-filter> | String | De voorwaarde die wordt gebruikt voor het filteren van items in de bronmatrix Note: If no values satisfy the condition, then the action creates an empty array. |
Example
Met deze actiedefinitie maakt u een matrix met waarden die groter zijn dan de opgegeven waarde. Dit zijn twee:
"Filter_array": {
"type": "Query",
"inputs": {
"from": [ 1, 3, 0, 5, 4, 2 ],
"where": "@greater(item(), 2)"
}
}
Response action
Met deze actie maakt u de nettolading voor het antwoord op een HTTP-aanvraag.
"Response" {
"type": "Response",
"kind": "http",
"inputs": {
"statusCode": 200,
"headers": { <response-headers> },
"body": { <response-body> }
},
"runAfter": {}
},
Required
Value | Type | Description |
---|---|---|
< response-status-code> | Integer | De HTTP-statuscode die naar de binnenkomende aanvraag wordt verzonden. De standaardcode is '200 OK', maar de code kan elke geldige statuscode zijn die begint met 2xx, 4xx of 5xx, maar niet met 3xxx. |
Optional
Value | Type | Description |
---|---|---|
< response-headers> | JSON Object | Een of meer headers die moeten worden opgenomen in het antwoord |
< response-body> | Various | De hoofdtekst van het antwoord, die een tekenreeks, JSON-object of zelfs binaire inhoud van een vorige actie kan zijn |
Example
Met deze actiedefinitie wordt een antwoord gemaakt op een HTTP-aanvraag met de opgegeven statuscode, berichttekst en berichtkoppen:
"Response": {
"type": "Response",
"inputs": {
"statusCode": 200,
"body": {
"ProductID": 0,
"Description": "Organic Apples"
},
"headers": {
"x-ms-date": "@utcnow()",
"content-type": "application/json"
}
},
"runAfter": {}
}
Restrictions
Unlike other actions, the Response action has special restrictions:
Your workflow can use the Response action only when the workflow starts with an HTTP request trigger, meaning your workflow must be triggered by an HTTP request.
Your workflow can use the Response action anywhere except inside Foreach loops, Until loops, including sequential loops, and parallel branches.
The original request gets your workflow's response only when all actions required by the Response action are finished within the HTTP timeout limit.
Als uw werkstroom echter een andere logische app aanroept als een geneste werkstroom, wacht de bovenliggende werkstroom totdat de geneste werkstroom is voltooid, ongeacht hoe lang de geneste werkstroom is voltooid.
When your workflow uses the Response action and a synchronous response pattern, the workflow can't also use the splitOn command in the trigger definition because that command creates multiple runs. Controleer op dit geval wanneer de PUT-methode wordt gebruikt en indien waar, een 'ongeldige aanvraag' retourneert.
Otherwise, if your workflow uses the splitOn command and a Response action, the workflow runs asynchronously and immediately returns a "202 ACCEPTED" response.
When your workflow's execution reaches the Response action, but the incoming request has already received a response, the Response action is marked as "Failed" due to the conflict. Als gevolg hiervan wordt de uitvoering van uw logische app ook gemarkeerd met de status Mislukt.
Select action
Met deze actie maakt u een matrix met JSON-objecten door items van een andere matrix te transformeren op basis van de opgegeven kaart. De uitvoermatrix en de bronmatrix hebben altijd hetzelfde aantal items. Hoewel u het aantal objecten in de uitvoermatrix niet kunt wijzigen, kunt u eigenschappen en de bijbehorende waarden aan deze objecten toevoegen of verwijderen. De select
eigenschap geeft ten minste één sleutel-waardepaar op waarmee de kaart wordt gedefinieerd voor het transformeren van items in de bronmatrix. Een sleutel-waardepaar vertegenwoordigt een eigenschap en de bijbehorende waarde voor alle objecten in de uitvoermatrix.
"Select": {
"type": "Select",
"inputs": {
"from": <array>,
"select": {
"<key-name>": "<expression>",
"<key-name>": "<expression>"
}
},
"runAfter": {}
},
Required
Value | Type | Description |
---|---|---|
< array> | Array | De matrix of expressie die de bronitems levert. Zorg ervoor dat u een expressie tussen dubbele aanhalingstekens plaatst. Note: If the source array is empty, the action creates an empty array. |
< key-name> | String | The property name assigned to the result from <expression> To add a new property across all objects in the output array, provide a <key-name> for that property and an <expression> for the property value. To remove a property from all objects in the array, omit the <key-name> for that property. |
< expression> | String | The expression that transforms the item in the source array and assigns the result to <key-name> |
The Select action creates an array as output, so any action that wants to use this output must either accept an array, or you must convert the array into the type that the consumer action accepts. For example, to convert the output array to a string, you can pass that array to the Compose action, and then reference the output from the Compose action in your other actions.
Example
Met deze actiedefinitie maakt u een JSON-objectmatrix op basis van een gehele getalmatrix. De actie doorloopt de bronmatrix, haalt elke gehele waarde op met behulp van de @item()
expressie en wijst elke waarde toe aan de eigenschap 'number
' in elk JSON-object:
"Select": {
"type": "Select",
"inputs": {
"from": [ 1, 2, 3 ],
"select": {
"number": "@item()"
}
},
"runAfter": {}
},
Dit is de matrix die met deze actie wordt gemaakt:
[ { "number": 1 }, { "number": 2 }, { "number": 3 } ]
To use this array output in other actions, pass this output into a Compose action:
"Compose": {
"type": "Compose",
"inputs": "@body('Select')",
"runAfter": {
"Select": [ "Succeeded" ]
}
},
You can then use the output from the Compose action in your other actions, for example, the Office 365 Outlook - Send an email action:
"Send_an_email": {
"type": "ApiConnection",
"inputs": {
"body": {
"Body": "@{outputs('Compose')}",
"Subject": "Output array from Select and Compose actions",
"To": "<your-email@domain>"
},
"host": {
"connection": {
"name": "@parameters('$connections')['office365']['connectionId']"
}
},
"method": "post",
"path": "/Mail"
},
"runAfter": {
"Compose": [ "Succeeded" ]
}
},
Table action
Met deze actie maakt u een CSV- of HTML-tabel op basis van een matrix. Voor matrices met JSON-objecten maakt deze actie automatisch de kolomkoppen op basis van de eigenschapsnamen van de objecten. Voor matrices met andere gegevenstypen moet u de kolomkoppen en -waarden opgeven. Deze matrix bevat bijvoorbeeld de eigenschappen 'ID' en 'Product_Name' die deze actie kan gebruiken voor de kolomkopnamen:
[ {"ID": 0, "Product_Name": "Apples"}, {"ID": 1, "Product_Name": "Oranges"} ]
"Create_<CSV | HTML>_table": {
"type": "Table",
"inputs": {
"format": "<CSV | HTML>",
"from": <array>,
"columns": [
{
"header": "<column-name>",
"value": "<column-value>"
},
{
"header": "<column-name>",
"value": "<column-value>"
}
]
},
"runAfter": {}
}
Required
Value | Type | Description |
---|---|---|
<CSV or HTML> | String | De indeling voor de tabel die u wilt maken |
< array> | Array | De matrix of expressie die de bronitems voor de tabel levert Note: If the source array is empty, the action creates an empty table. |
Optional
Als u kolomkoppen en -waarden wilt opgeven of aanpassen, gebruikt u de columns
matrix. Wanneer header-value
paren dezelfde kopnaam hebben, worden hun waarden weergegeven in dezelfde kolom onder die kopnaam. Anders definieert elke unieke kop een unieke kolom.
Value | Type | Description |
---|---|---|
< column-name> | String | De naam van de koptekst voor een kolom |
< column-value> | Any | De waarde in die kolom |
Example 1
Stel dat u een eerder gemaakte variabele 'myItemArray' hebt die momenteel deze matrix bevat:
[ {"ID": 0, "Product_Name": "Apples"}, {"ID": 1, "Product_Name": "Oranges"} ]
Met deze actiedefinitie wordt een CSV-tabel gemaakt op basis van de variabele myItemArray. Met de expressie die door de from
eigenschap wordt gebruikt, wordt de matrix opgehaald uit 'myItemArray' met behulp van de variables()
functie:
"Create_CSV_table": {
"type": "Table",
"inputs": {
"format": "CSV",
"from": "@variables('myItemArray')"
},
"runAfter": {}
}
Dit is de CSV-tabel die met deze actie wordt gemaakt:
ID,Product_Name
0,Apples
1,Oranges
Example 2
Met deze actiedefinitie wordt een HTML-tabel gemaakt op basis van de variabele myItemArray. Met de expressie die door de from
eigenschap wordt gebruikt, wordt de matrix opgehaald uit 'myItemArray' met behulp van de variables()
functie:
"Create_HTML_table": {
"type": "Table",
"inputs": {
"format": "HTML",
"from": "@variables('myItemArray')"
},
"runAfter": {}
}
Hier volgt de HTML-tabel die met deze actie wordt gemaakt:
ID | Product_Name |
---|---|
0 | Apples |
1 | Oranges |
Example 3
Met deze actiedefinitie wordt een HTML-tabel gemaakt op basis van de variabele myItemArray. In dit voorbeeld worden de standaardnamen van kolomkoppen echter overschreven met 'Stock_ID' en 'Beschrijving', en wordt het woord 'Organisch' toegevoegd aan de waarden in de kolom Beschrijving.
"Create_HTML_table": {
"type": "Table",
"inputs": {
"format": "HTML",
"from": "@variables('myItemArray')",
"columns": [
{
"header": "Stock_ID",
"value": "@item().ID"
},
{
"header": "Description",
"value": "@concat('Organic ', item().Product_Name)"
}
]
},
"runAfter": {}
},
Hier volgt de HTML-tabel die met deze actie wordt gemaakt:
Stock_ID | Description |
---|---|
0 | Organic Apples |
1 | Organic Oranges |
Terminate action
Deze actie stopt de uitvoering voor een werkstroomexemplaren, annuleert alle acties die worden uitgevoerd, slaat alle resterende acties over en retourneert de opgegeven status. For example, you can use the Terminate action when your logic app must exit completely from an error state. This action doesn't affect already completed actions and can't appear inside Foreach and Until loops, including sequential loops.
"Terminate": {
"type": "Terminate",
"inputs": {
"runStatus": "<status>",
"runError": {
"code": "<error-code-or-name>",
"message": "<error-message>"
}
},
"runAfter": {}
}
Required
Value | Type | Description |
---|---|---|
< status> | String | De status die moet worden geretourneerd voor de uitvoering: 'Mislukt', 'Geannuleerd' of 'Geslaagd' |
Optional
De eigenschappen voor het object runError zijn alleen van toepassing wanneer de eigenschap 'runStatus' is ingesteld op De status Mislukt.
Value | Type | Description |
---|---|---|
< error-code-or-name> | String | De code of naam voor de fout |
< error-message> | String | Het bericht of de tekst die de fout beschrijft en eventuele acties die de app-gebruiker kan uitvoeren |
Example
Deze actiedefinitie stopt een werkstroomuitvoering, stelt de uitvoeringsstatus in op Mislukt en retourneert de status, een foutcode en een foutbericht:
"Terminate": {
"type": "Terminate",
"inputs": {
"runStatus": "Failed",
"runError": {
"code": "Unexpected response",
"message": "The service received an unexpected response. Please try again."
}
},
"runAfter": {}
}
Wait action
Met deze actie wordt de uitvoering van de werkstroom onderbroken voor het opgegeven interval of tot de opgegeven tijd, maar niet beide.
Specified interval
"Delay": {
"type": "Wait",
"inputs": {
"interval": {
"count": <number-of-units>,
"unit": "<interval>"
}
},
"runAfter": {}
},
Specified time
"Delay_until": {
"type": "Wait",
"inputs": {
"until": {
"timestamp": "<date-time-stamp>"
}
},
"runAfter": {}
},
Required
Value | Type | Description |
---|---|---|
< number-of-units> | Integer | For the Delay action, the number of units to wait |
< interval> | String | For the Delay action, the interval to wait: "Second", "Minute", "Hour", "Day", "Week", "Month" |
< date-time-stamp> | String | For the Delay Until action, the date and time to resume execution. Deze waarde moet de UTC-datum/tijdnotatie gebruiken. |
Example 1
Met deze actiedefinitie wordt de werkstroom gedurende 15 minuten onderbroken:
"Delay": {
"type": "Wait",
"inputs": {
"interval": {
"count": 15,
"unit": "Minute"
}
},
"runAfter": {}
},
Example 2
Met deze actiedefinitie wordt de werkstroom onderbroken tot de opgegeven tijd:
"Delay_until": {
"type": "Wait",
"inputs": {
"until": {
"timestamp": "2017-10-01T00:00:00Z"
}
},
"runAfter": {}
},
Workflow action
Met deze actie wordt een andere eerder gemaakte logische app aangeroepen, wat betekent dat u andere werkstromen voor logische apps kunt opnemen en opnieuw kunt gebruiken. You can also use the outputs from the child or nested logic app in actions that follow the nested logic app, provided that the child logic app returns a response.
Azure Logic Apps controleert de toegang tot de trigger die u wilt aanroepen, dus zorg ervoor dat u toegang hebt tot die trigger. De geneste logische app moet ook voldoen aan deze criteria:
A trigger makes the nested logic app callable, such as a Request or HTTP trigger
Hetzelfde Azure-abonnement als uw bovenliggende logische app
To use the outputs from the nested logic app in your parent logic app, the nested logic app must have a Response action
"<nested-logic-app-name>": {
"type": "Workflow",
"inputs": {
"body": { "<body-content" },
"headers": { "<header-content>" },
"host": {
"triggerName": "<trigger-name>",
"workflow": {
"id": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group>/providers/Microsoft.Logic/<nested-logic-app-name>"
}
}
},
"runAfter": {}
}
Required
Value | Type | Description |
---|---|---|
< nested-logic-app-name> | String | De naam voor de logische app die u wilt aanroepen |
< trigger-name> | String | De naam voor de trigger in de geneste logische app die u wilt aanroepen |
< Azure-subscription-ID> | String | De Azure-abonnements-id voor de geneste logische app |
< Azure-resource-group> | String | De naam van de Azure-resourcegroep voor de geneste logische app |
Optional
Value | Type | Description |
---|---|---|
< header-content> | JSON Object | Eventuele headers die met de oproep moeten worden verzonden |
< body-content> | JSON Object | Alle berichtinhoud die met de oproep moet worden verzonden |
Outputs
De uitvoer van deze actie varieert op basis van de reactieactie van de geneste logische app. Als de geneste logische app geen antwoordactie bevat, zijn de uitvoer leeg.
Example
Nadat de actie 'Start_search' is voltooid, roept deze werkstroomactiedefinitie een andere logische app aan met de naam 'Get_product_information', die de opgegeven invoer doorgeeft:
"actions": {
"Start_search": { <action-definition> },
"Get_product_information": {
"type": "Workflow",
"inputs": {
"body": {
"ProductID": "24601",
},
"host": {
"id": "/subscriptions/XXXXXXXXXXXXXXXXXXXXXXXXXX/resourceGroups/InventoryManager-RG/providers/Microsoft.Logic/Get_product_information",
"triggerName": "Find_product"
},
"headers": {
"content-type": "application/json"
}
},
"runAfter": {
"Start_search": [ "Succeeded" ]
}
}
},
Details van werkstroomactie beheren
Foreach action
Deze lusactie doorloopt een matrix en voert acties uit op elk matrixitem. Standaard wordt de lus 'voor elke' parallel uitgevoerd tot een maximum aantal lussen. Zie Limieten en configuratie voor dit maximum. Meer informatie over het maken van 'voor elke' lussen.
"For_each": {
"type": "Foreach",
"actions": {
"<action-1>": { "<action-definition-1>" },
"<action-2>": { "<action-definition-2>" }
},
"foreach": "<for-each-expression>",
"runAfter": {},
"runtimeConfiguration": {
"concurrency": {
"repetitions": <count>
}
},
"operationOptions": "<operation-option>"
}
Required
Value | Type | Description |
---|---|---|
< action-1...n> | String | De namen van de acties die worden uitgevoerd op elk matrixitem |
< action-definition-1...n> | JSON Object | De definities van de acties die worden uitgevoerd |
< for-each-expression> | String | De expressie die verwijst naar elk item in de opgegeven matrix |
Optional
Value | Type | Description |
---|---|---|
< count> | Integer | By default, the "for each" loop iterations run at the same time (concurrently or in parallel) up to the default limit. To change this limit by setting a new <count> value, see Change "for each" loop concurrency. |
< operation-option> | String | To run a "for each" loop sequentially, rather than in parallel, set either <operation-option> to Sequential or <count> to 1 , but not both. Zie Sequentieel uitvoeren voor elke lus voor meer informatie. |
Example
Deze lus 'voor elke' verzendt een e-mail voor elk item in de matrix, dat bijlagen van een binnenkomende e-mail bevat. De lus verzendt een e-mailbericht, inclusief de bijlage, naar een persoon die de bijlage beoordeelt.
"For_each": {
"type": "Foreach",
"actions": {
"Send_an_email": {
"type": "ApiConnection",
"inputs": {
"body": {
"Body": "@base64ToString(items('For_each')?['Content'])",
"Subject": "Review attachment",
"To": "Sophie.Owen@contoso.com"
},
"host": {
"connection": {
"id": "@parameters('$connections')['office365']['connectionId']"
}
},
"method": "post",
"path": "/Mail"
},
"runAfter": {}
}
},
"foreach": "@triggerBody()?['Attachments']",
"runAfter": {}
}
To specify only an array that is passed as output from the trigger, this expression gets the <array-name> array from the trigger body. Om een fout te voorkomen als de matrix niet bestaat, gebruikt de expressie de ?
operator:
@triggerBody()?['<array-name>']
If action
This action, which is a conditional statement, evaluates an expression that represents a condition and runs a different branch based on whether the condition is true or false. Als de voorwaarde waar is, wordt de voorwaarde gemarkeerd met de status Geslaagd. Meer informatie over het maken van voorwaardelijke instructies.
"Condition": {
"type": "If",
"expression": { "<condition>" },
"actions": {
"<action-1>": { "<action-definition>" }
},
"else": {
"actions": {
"<action-2>": { "<action-definition" }
}
},
"runAfter": {}
}
Value | Type | Description |
---|---|---|
< condition> | JSON Object | De voorwaarde, die een expressie kan zijn, om te evalueren |
< action-1> | JSON Object | The action to run when <condition> evaluates to true |
< action-definition> | JSON Object | De definitie voor de actie |
< action-2> | JSON Object | The action to run when <condition> evaluates to false |
De acties in de actions
of else
objecten krijgen deze statussen:
- 'Geslaagd' wanneer ze worden uitgevoerd en geslaagd
- 'Mislukt' wanneer ze worden uitgevoerd en mislukken
- 'Overgeslagen' wanneer de respectieve vertakking niet wordt uitgevoerd
Example
Deze voorwaarde geeft aan dat wanneer de variabele geheel getal een waarde heeft die groter is dan nul, de werkstroom een website controleert. Als de variabele nul of minder is, controleert de werkstroom een andere website.
"Condition": {
"type": "If",
"expression": {
"and": [ {
"greater": [ "@variables('myIntegerVariable')", 0 ]
} ]
},
"actions": {
"HTTP - Check this website": {
"type": "Http",
"inputs": {
"method": "GET",
"uri": "http://this-url"
},
"runAfter": {}
}
},
"else": {
"actions": {
"HTTP - Check this other website": {
"type": "Http",
"inputs": {
"method": "GET",
"uri": "http://this-other-url"
},
"runAfter": {}
}
}
},
"runAfter": {}
}
Hoe voorwaarden expressies gebruiken
Hier volgen enkele voorbeelden die laten zien hoe u expressies in voorwaarden kunt gebruiken:
JSON | Result |
---|---|
"expression": "@parameters('<hasSpecialAction>')" | Alleen voor Boole-expressies wordt de voorwaarde doorgegeven voor elke waarde die waar oplevert. Als u andere typen wilt converteren naar Booleaanse waarde, gebruikt u deze functies: empty() of equals() . |
"expression": "@greater(actions('<action>').output.value, parameters('<threshold>'))" | For comparison functions, the action runs only when the output from <action> is more than the <threshold> value. |
"expression": "@or(greater(actions('<action>').output.value, parameters('<threshold>')), less(actions('<same-action>').output.value, 100))" | For logic functions and creating nested Boolean expressions, the action runs when the output from <action> is more than the <threshold> value or under 100. |
"expression": "@equals(length(actions('<action>').outputs.errors), 0)" | U kunt matrixfuncties gebruiken om te controleren of de matrix items bevat. De actie wordt uitgevoerd wanneer de errors matrix leeg is. |
Scope action
This action logically groups actions into scopes, which get their own status after the actions in that scope finish running. Vervolgens kunt u de status van het bereik gebruiken om te bepalen of andere acties worden uitgevoerd. Meer informatie over het maken van bereiken.
"Scope": {
"type": "Scope",
"actions": {
"<inner-action-1>": {
"type": "<action-type>",
"inputs": { "<action-inputs>" },
"runAfter": {}
},
"<inner-action-2>": {
"type": "<action-type>",
"inputs": { "<action-inputs>" },
"runAfter": {}
}
}
}
Required
Value | Type | Description |
---|---|---|
< inner-action-1...n> | JSON Object | Een of meer acties die binnen het bereik worden uitgevoerd |
< action-inputs> | JSON Object | De invoer voor elke actie |
Switch action
This action, also known as a switch statement, organizes other actions into cases, and assigns a value to each case, except for the default case if one exists. When your workflow runs, the Switch action compares the value from an expression, object, or token against the values specified for each case. If the Switch action finds a matching case, your workflow runs only the actions for that case. Each time the Switch action runs, either only one matching case exists or no matches exist. If no matches exist, the Switch action runs the default actions. Meer informatie over het maken van switchinstructies.
"Switch": {
"type": "Switch",
"expression": "<expression-object-or-token>",
"cases": {
"Case": {
"actions": {
"<action-name>": { "<action-definition>" }
},
"case": "<matching-value>"
},
"Case_2": {
"actions": {
"<action-name>": { "<action-definition>" }
},
"case": "<matching-value>"
}
},
"default": {
"actions": {
"<default-action-name>": { "<default-action-definition>" }
}
},
"runAfter": {}
}
Required
Value | Type | Description |
---|---|---|
< expression-object-or-token> | Varies | De expressie, het JSON-object of het token dat moet worden geëvalueerd |
< action-name> | String | De naam van de actie die moet worden uitgevoerd voor de overeenkomende case |
< action-definition> | JSON Object | De definitie voor de actie die moet worden uitgevoerd voor de overeenkomende case |
< matching-value> | Varies | De waarde die moet worden vergeleken met het geëvalueerde resultaat |
Optional
Value | Type | Description |
---|---|---|
< default-action-name> | String | De naam van de standaardactie die moet worden uitgevoerd wanneer er geen overeenkomende case bestaat |
< default-action-definition> | JSON Object | De definitie voor de actie die moet worden uitgevoerd wanneer er geen overeenkomende case bestaat |
Example
Met deze actiedefinitie wordt geëvalueerd of de persoon die op de e-mail van de goedkeuringsaanvraag reageert, de optie Goedkeuren of De optie Weigeren heeft geselecteerd. Based on this choice, the Switch action runs the actions for the matching case, which is to send another email to the responder but with different wording in each case.
"Switch": {
"type": "Switch",
"expression": "@body('Send_approval_email')?['SelectedOption']",
"cases": {
"Case": {
"actions": {
"Send_an_email": {
"type": "ApiConnection",
"inputs": {
"Body": "Thank you for your approval.",
"Subject": "Response received",
"To": "Sophie.Owen@contoso.com"
},
"host": {
"connection": {
"name": "@parameters('$connections')['office365']['connectionId']"
}
},
"method": "post",
"path": "/Mail"
},
"runAfter": {}
},
"case": "Approve"
},
"Case_2": {
"actions": {
"Send_an_email_2": {
"type": "ApiConnection",
"inputs": {
"Body": "Thank you for your response.",
"Subject": "Response received",
"To": "Sophie.Owen@contoso.com"
},
"host": {
"connection": {
"name": "@parameters('$connections')['office365']['connectionId']"
}
},
"method": "post",
"path": "/Mail"
},
"runAfter": {}
},
"case": "Reject"
}
},
"default": {
"actions": {
"Send_an_email_3": {
"type": "ApiConnection",
"inputs": {
"Body": "Please respond with either 'Approve' or 'Reject'.",
"Subject": "Please respond",
"To": "Sophie.Owen@contoso.com"
},
"host": {
"connection": {
"name": "@parameters('$connections')['office365']['connectionId']"
}
},
"method": "post",
"path": "/Mail"
},
"runAfter": {}
}
},
"runAfter": {
"Send_approval_email": [
"Succeeded"
]
}
}
Until action
Deze lusactie bevat acties die worden uitgevoerd totdat de opgegeven voorwaarde waar is. De lus controleert de voorwaarde als laatste stap nadat alle andere acties zijn uitgevoerd. U kunt meer dan één actie opnemen in het "actions"
object en de actie moet ten minste één limiet definiëren. Meer informatie over het maken van 'until'-lussen.
"Until": {
"type": "Until",
"actions": {
"<action-name>": {
"type": "<action-type>",
"inputs": { "<action-inputs>" },
"runAfter": {}
},
"<action-name>": {
"type": "<action-type>",
"inputs": { "<action-inputs>" },
"runAfter": {}
}
},
"expression": "<condition>",
"limit": {
"count": <loop-count>,
"timeout": "<loop-timeout>"
},
"runAfter": {}
}
Value | Type | Description |
---|---|---|
< action-name> | String | De naam van de actie die u binnen de lus wilt uitvoeren |
< action-type> | String | Het actietype dat u wilt uitvoeren |
< action-inputs> | Various | De invoer voor de actie die moet worden uitgevoerd |
< condition> | String | De voorwaarde of expressie die moet worden geëvalueerd nadat alle acties in de lus zijn voltooid |
< loop-count> | Integer | De limiet voor het meeste aantal lussen dat door de actie kan worden uitgevoerd. Zie Limieten en configuratie voor Azure Logic Apps voor meer informatie over de standaardlimiet en maximale limiet. |
< loop-timeout> | String | De limiet voor de langste tijd die de lus kan uitvoeren. De standaardwaarde timeout is PT1H , wat de vereiste ISO 8601-indeling is. |
Note
Als de expressie afhankelijk is van de uitvoer van een actie binnen de lus Until, moet u ervoor zorgen dat u rekening houdt met eventuele fouten die het gevolg zijn van die actie.
Example
Deze lusactiedefinitie verzendt een HTTP-aanvraag naar de opgegeven URL totdat aan een van deze voorwaarden wordt voldaan:
- De aanvraag ontvangt een antwoord met de statuscode 200 OK.
- De lus is 60 keer uitgevoerd.
- De lus is één uur uitgevoerd.
"Run_until_loop_succeeds_or_expires": {
"type": "Until",
"actions": {
"HTTP": {
"type": "Http",
"inputs": {
"method": "GET",
"uri": "http://myurl"
},
"runAfter": {}
}
},
"expression": "@equals(outputs('HTTP')['statusCode'], 200)",
"limit": {
"count": 60,
"timeout": "PT1H"
},
"runAfter": {}
}
Webhooks en abonnementen
Triggers en acties op basis van webhook controleren niet regelmatig eindpunten, maar wachten op specifieke gebeurtenissen of gegevens op die eindpunten. These triggers and actions subscribe to the endpoints by providing a callback URL where the endpoint can send responses.
De subscribe
aanroep vindt plaats wanneer de werkstroom op welke manier dan ook verandert, bijvoorbeeld wanneer referenties worden vernieuwd of wanneer de invoerparameters voor een trigger of actie worden gewijzigd. Deze aanroep maakt gebruik van dezelfde parameters als standaard HTTP-acties.
De unsubscribe
aanroep wordt automatisch uitgevoerd wanneer een bewerking de trigger of actie ongeldig maakt, bijvoorbeeld:
- De trigger verwijderen of uitschakelen.
- De werkstroom verwijderen of uitschakelen.
- Het abonnement verwijderen of uitschakelen.
Ter ondersteuning van deze aanroepen retourneert de @listCallbackUrl()
expressie een unieke callback-URL voor de trigger of actie. Deze URL vertegenwoordigt een unieke id voor de eindpunten die gebruikmaken van de REST API van de service. De parameters voor deze functie zijn hetzelfde als de webhooktrigger of -actie.
Asynchrone duur wijzigen
Voor zowel triggers als acties kunt u de duur voor het asynchrone patroon beperken tot een specifiek tijdsinterval door de limit.timeout
eigenschap toe te voegen. Als de actie niet is voltooid wanneer het interval is verstreken, wordt de status van de actie gemarkeerd als Cancelled
met de ActionTimedOut
code. De timeout
eigenschap maakt gebruik van de ISO 8601-indeling.
"<trigger-or-action-name>": {
"type": "Workflow | Webhook | Http | ApiConnectionWebhook | ApiConnection",
"inputs": {},
"limit": {
"timeout": "PT10S"
},
"runAfter": {}
}
Runtime-configuratie-instellingen
U kunt het standaardruntimegedrag voor triggers en acties wijzigen door deze runtimeConfiguration
eigenschappen toe te voegen aan de trigger- of actiedefinitie.
Property | Type | Description | Trigger of actie |
---|---|---|---|
runtimeConfiguration.concurrency.runs |
Integer | Change the default limit on the number of workflow instances that can run at the same time (concurrently or in parallel). Door deze waarde aan te passen, kunt u het aantal aanvragen beperken dat back-endsystemen ontvangen. Het instellen van de runs eigenschap werkt 1 op dezelfde manier als het instellen van de operationOptions eigenschap op SingleInstance . U kunt beide eigenschappen instellen, maar niet beide. Zie Gelijktijdigheid van triggers of triggerexemplaren opeenvolgend wijzigen om de standaardlimiet te wijzigen. |
All triggers |
runtimeConfiguration.concurrency.maximumWaitingRuns |
Integer | Change the default limit on the number of workflow instances that must wait to run when your logic app is already running the maximum concurrent instances. Zie Wachtuitvoeringslimiet wijzigen als u de standaardlimiet wilt wijzigen. |
All triggers |
runtimeConfiguration.concurrency.repetitions |
Integer | Change the default limit on the number of "for each" loop iterations that can run at the same time (concurrently or in parallel). Het instellen van de repetitions eigenschap werkt 1 op dezelfde manier als het instellen van de operationOptions eigenschap op SingleInstance . U kunt beide eigenschappen instellen, maar niet beide. Als u de standaardlimiet wilt wijzigen, raadpleegt u 'voor elke' gelijktijdigheid of voer 'voor elke' lussen opeenvolgend uit. |
Action: Foreach |
runtimeConfiguration.paginationPolicy.minimumItemCount |
Integer | For specific actions that support and have pagination turned on, this value specifies the minimum number of results to retrieve. Zie Bulkgegevens, items of resultaten ophalen met behulp van paginering om paginering in te schakelen |
Action: Varied |
runtimeConfiguration.secureData.properties |
Array | Bij veel triggers en acties verbergen deze instellingen invoer, uitvoer of beide uit de uitvoeringsgeschiedenis van de logische app. Zie Invoer en uitvoer uit de uitvoeringsgeschiedenis verbergen voor meer informatie over het beveiligen van deze gegevens. |
De meeste triggers en acties |
runtimeConfiguration.staticResult |
JSON Object | For actions that support and have the static result setting turned on, the staticResult object has these attributes: - name , die verwijst naar de naam van de statische resultaatdefinitie van de huidige actie, die wordt weergegeven in het kenmerk van de staticResults werkstroom van uw logische definition app. Zie statische resultaten - Schemaverwijzing voor werkstroomdefinitietaal voor meer informatie. - staticResultOptions , waarmee wordt aangegeven of statische resultaten wel of niet voor de huidige actie zijn Enabled . Als u statische resultaten wilt inschakelen, raadpleegt u Logische apps testen met gesimuleerde gegevens door statische resultaten in te stellen |
Action: Varied |
Operation options
U kunt het standaardgedrag voor triggers en acties wijzigen met de operationOptions
eigenschap in de trigger- of actiedefinitie.
Operation option | Type | Description | Trigger of actie |
---|---|---|---|
DisableAsyncPattern |
String | Voer op HTTP gebaseerde acties synchroon uit in plaats van asynchroon. Zie Acties synchroon uitvoeren om deze optie in te stellen. |
Actions: ApiConnection, HTTP, Response |
IncludeAuthorizationHeadersInOutputs |
String | Voor logische apps waarmee OAuth met Microsoft Entra ID toegang kan verlenen voor binnenkomende aanroepen naar een triggereindpunt op basis van aanvragen, neemt u de Authorization header van het OAuth-toegangstoken op in de uitvoer van de trigger. Zie De header Autorisatie opnemen in uitvoer van aanvraagtriggers voor meer informatie. |
Triggers: Request, HTTP Webhook |
Sequential |
String | Voer herhalingen voor elke lus één voor één uit, in plaats van allemaal tegelijk tegelijk. Deze optie werkt op dezelfde manier als het instellen van de runtimeConfiguration.concurrency.repetitions eigenschap op 1 . U kunt beide eigenschappen instellen, maar niet beide. Als u deze optie wilt instellen, raadpleegt u 'voor elke' lussen sequentieel uitvoeren. |
Action: Foreach |
SingleInstance |
String | Voer de trigger voor elk exemplaar van de logische app opeenvolgend uit en wacht tot de eerder actieve uitvoering is voltooid voordat het volgende exemplaar van de logische app wordt geactiveerd. Deze optie werkt op dezelfde manier als het instellen van de runtimeConfiguration.concurrency.runs eigenschap op 1 . U kunt beide eigenschappen instellen, maar niet beide. Zie Trigger-exemplaren sequentieel om deze optie in te stellen. |
All triggers |
SuppressWorkflowHeaders |
String | Verzend geen x-ms-* metagegevensheaders in uitgaande aanvragen. Standaard bevat Azure Logic Apps extra metagegevensheaders met het x-ms- voorvoegsel in de headernaam als onderdeel van uitgaande aanvragen. Sommige verouderde services accepteren echter geen aanvragen met extra onbekende headers, wat resulteert in mislukte aanvragen. |
Actions: HTTP, Function, APIManagement |
SuppressWorkflowHeadersOnResponse |
String | Verzend geen x-ms-* metagegevensheaders in antwoorden op binnenkomende triggeraanvragen. Standaard verzendt Azure Logic Apps antwoorden naar binnenkomende aanvragen met extra metagegevensheaders met het x-ms- voorvoegsel in de headernaam. Sommige verouderde services accepteren echter geen aanvragen of antwoorden met extra onbekende headers, wat resulteert in mislukte aanvragen. |
Triggers: Request, HTTP Webhook |
Gelijktijdigheid van triggers wijzigen
Werkstroomexemplaren van logische apps worden standaard allemaal tegelijk uitgevoerd (gelijktijdig of parallel). Dit gedrag betekent dat elke triggerinstantie wordt geactiveerd voordat het eerder actieve werkstroomexemplaren zijn uitgevoerd. However, the number of concurrently running instances has a default limit. Wanneer het aantal gelijktijdig actieve werkstroomexemplaren deze limiet bereikt, moeten andere nieuwe exemplaren wachten totdat deze wordt uitgevoerd. Deze limiet helpt bij het beheren van het aantal aanvragen dat back-endsystemen ontvangen.
When you turn on the trigger's concurrency control, trigger instances run in parallel up to the default limit. Als u deze standaardlimiet voor gelijktijdigheid wilt wijzigen, kunt u de codeweergave-editor of de werkstroomontwerper gebruiken, omdat het wijzigen van de gelijktijdigheidsinstelling via de ontwerpfunctie de runtimeConfiguration.concurrency.runs
eigenschap toevoegt of bijwerkt in de onderliggende triggerdefinitie en omgekeerd. Met deze eigenschap bepaalt u het maximum aantal nieuwe werkstroomexemplaren dat parallel kan worden uitgevoerd.
Bekijk de volgende overwegingen voordat u gelijktijdigheid inschakelt voor een trigger:
U kunt gelijktijdigheid niet uitschakelen nadat u het gelijktijdigheidsbeheer hebt ingeschakeld.
Als het maximum aantal gelijktijdige triggeruitvoeringen de maximale mate van parallelle uitvoering bereikt, kunnen volgende triggeruitvoeringen leiden tot beperking of fouten met '429 - Te veel aanvragen'. Als u een beleid voor opnieuw proberen instelt dat 429-fouten afhandelt, kan de trigger een cyclus van opnieuw proberen en beperkingsgedrag ervaren dat lange vertragingen veroorzaakt bij het verwerken van nieuwe triggeraanvragen.
When concurrency is enabled, the SplitOn limit is significantly reduced for debatching arrays. Als het aantal items deze limiet overschrijdt, wordt de functie SplitOn uitgeschakeld.
Wanneer gelijktijdigheid is ingeschakeld, kan een langlopend exemplaar van een logische app ervoor zorgen dat nieuwe exemplaren van logische apps een wachtstatus invoeren. Deze status voorkomt dat Azure Logic Apps nieuwe exemplaren maakt en zelfs gebeurt wanneer het aantal gelijktijdige uitvoeringen kleiner is dan het opgegeven maximum aantal gelijktijdige uitvoeringen.
To interrupt this state, cancel the earliest instances that are still running.
On your logic app's menu, select Overview.
In the Runs history section, select the earliest instance that is still running, for example:
Tip
To view only instances that are still running, open the All list, and select Running.
Selecteer onder Uitvoering van logische app de optie Uitvoering annuleren.
Als u deze mogelijkheid wilt omzeilen, voegt u een time-out toe aan een actie die deze uitvoeringen kan bevatten. Als u in de code-editor werkt, raadpleegt u Asynchrone duur wijzigen. Als u de ontwerpfunctie gebruikt, voert u anders de volgende stappen uit:
Selecteer in de werkstroom van uw logische app de actie waaraan u een time-out wilt toevoegen. In the action's upper-right corner, select the ellipses (...) button, and then select Settings.
Under Timeout, specify the timeout duration in ISO 8601 format.
Als u uw logische app opeenvolgend wilt uitvoeren, stelt u de gelijktijdigheid
1
van de trigger in op ofwel met behulp van de codeweergave-editor of de ontwerper. Zorg ervoor dat u de eigenschapoperationOptions
vanSingleInstance
de trigger niet ook instelt in de codeweergave-editor. Anders krijgt u een validatiefout. Zie Trigger-exemplaren opeenvolgend voor meer informatie.
Bewerken in de codeweergave
Voeg in de onderliggende triggerdefinitie de runtimeConfiguration.concurrency.runs
eigenschap toe en stel de waarde in op basis van de gelijktijdigheidslimieten van de trigger. Als u uw werkstroom opeenvolgend wilt uitvoeren, stelt u de eigenschapswaarde in op 1
.
In dit voorbeeld worden gelijktijdige uitvoeringen beperkt tot 10 exemplaren:
"<trigger-name>": {
"type": "<trigger-name>",
"recurrence": {
"frequency": "<time-unit>",
"interval": <number-of-time-units>,
},
"runtimeConfiguration": {
"concurrency": {
"runs": 10
}
}
}
Zie Runtime-configuratie-instellingen voor meer informatie.
Bewerken in de werkstroomontwerper
In the trigger's upper-right corner, select the ellipses (...) button, and then select Settings.
Under Concurrency Control, set Limit to On.
Sleep de schuifregelaar Degree of Parallelism naar de gewenste waarde. To run your logic app sequentially, drag the slider value to 1.
Gelijktijdigheid 'voor elke' wijzigen
Standaard worden herhalingen voor elke lus op hetzelfde moment uitgevoerd (gelijktijdig of parallel). Dit gedrag betekent dat elke iteratie wordt uitgevoerd voordat de vorige iteratie is uitgevoerd. However, the number of concurrently running iterations has a default limit. Wanneer het aantal gelijktijdig uitgevoerde iteraties deze limiet bereikt, moeten alle andere iteraties wachten om te worden uitgevoerd.
Als u de standaardlimiet wilt wijzigen, kunt u de codeweergave-editor of de werkstroomontwerper gebruiken, omdat u de gelijktijdigheidsinstelling via de ontwerpfunctie wijzigt of de runtimeConfiguration.concurrency.repetitions
eigenschap bijwerkt in de onderliggende actiedefinitie voor elke actie en omgekeerd. Deze eigenschap bepaalt het maximum aantal iteraties dat parallel kan worden uitgevoerd.
Note
Als u de actie 'voor elke actie' instelt om opeenvolgend uit te voeren met behulp van de ontwerpfunctie of de codeweergave-editor, stelt u de eigenschap operationOptions
van Sequential
de actie niet in in de codeweergave-editor. Anders krijgt u een validatiefout. Zie Sequentieel uitvoeren voor elke lus voor meer informatie.
Bewerken in de codeweergave
Voeg in de onderliggende definitie voor elke definitie de eigenschap toe of werk deze runtimeConfiguration.concurrency.repetitions
bij, die een waarde kan hebben die varieert van 1
en 50
.
Hier volgt een voorbeeld waarmee gelijktijdige uitvoeringen worden beperkt tot 10 iteraties:
"For_each" {
"type": "Foreach",
"actions": { "<actions-to-run>" },
"foreach": "<for-each-expression>",
"runAfter": {},
"runtimeConfiguration": {
"concurrency": {
"repetitions": 10
}
}
}
Zie Runtime-configuratie-instellingen voor meer informatie.
Bewerken in de werkstroomontwerper
In the For each action, from the upper-right corner, select the ellipses (...) button, and then select Settings.
Under Concurrency Control, set Concurrency Control to On.
Sleep de schuifregelaar Degree of Parallelism naar de gewenste waarde. To run your logic app sequentially, drag the slider value to 1.
Limiet voor wachtende uitvoeringen wijzigen
Werkstroomexemplaren van logische apps worden standaard allemaal tegelijk uitgevoerd (gelijktijdig of parallel). Dit gedrag betekent dat elke triggerinstantie wordt geactiveerd voordat het eerder actieve werkstroomexemplaren zijn uitgevoerd. However, a default limit exists on the number of concurrently running workflow instances. Wanneer het aantal gelijktijdige uitvoeringen deze limiet bereikt, moeten andere nieuwe werkstroomexemplaren wachten totdat deze wordt uitgevoerd. A default limit also exists on the number of waiting workflow instances. Wanneer het aantal wachtende exemplaren deze limiet bereikt, accepteert Azure Logic Apps geen nieuwe werkstroomexemplaren meer om uit te voeren. Aanvraag- en webhooktriggers retourneren 429 - Te veel aanvragenfouten en terugkerende triggers beginnen met het overslaan van pollingpogingen.
U kunt de standaardlimiet voor gelijktijdigheid van triggers en de standaardlimiet voor wachtende uitvoeringen wijzigen. Deze wijziging vertraagt echter voornamelijk de trigger om de druk te verlichten als gevolg van gelijktijdigheid. Als u bijvoorbeeld een poll-trigger hebt en de wachtrij voor wachtende uitvoeringen vol is vanwege uitvoeringen die worden uitgevoerd, stopt Azure Logic Apps met polling. Als uw werkstroom gebruikmaakt van een trigger op basis van aanvragen en de wachtrij voor wachtende uitvoeringen vol is, retourneert Azure Logic Apps de fout 429. Sommige scenario's bestaan waarbij Azure Logic Apps de trigger niet kan stoppen met pollen zonder fouten te introduceren en ervoor kiest om dergelijke uitvoeringen toch toe te voegen aan de wachtrij voor wachtende uitvoeringen zonder dat de aanroepen mislukken.
Voeg in de onderliggende triggerdefinitie de runtimeConfiguration.concurrency.maximumWaitingRuns
eigenschap toe, die een waarde kan hebben die varieert van 1
tot 100
.
"<trigger-name>": {
"type": "<trigger-name>",
"recurrence": {
"frequency": "<time-unit>",
"interval": <number-of-time-units>,
},
"runtimeConfiguration": {
"concurrency": {
"maximumWaitingRuns": 50
}
}
}
Zie Runtime-configuratie-instellingen voor meer informatie.
Triggerexemplaren sequentieel
Als u elk werkstroomexemplaren van een logische app alleen wilt uitvoeren nadat het vorige exemplaar is uitgevoerd, stelt u de trigger in om sequentieel uit te voeren. U kunt de codeweergave-editor of de werkstroomontwerper gebruiken, omdat u de gelijktijdigheidsinstelling via de ontwerpfunctie ook toevoegt of bijwerkt runtimeConfiguration.concurrency.runs
in de onderliggende triggerdefinitie en omgekeerd.
Note
Wanneer u een trigger instelt om sequentieel uit te voeren met behulp van de ontwerpfunctie of de codeweergave-editor, moet u de eigenschap operationOptions
van Sequential
de trigger niet instellen in de codeweergave-editor.
Anders krijgt u een validatiefout.
Bewerken in de codeweergave
Stel in de triggerdefinitie een van deze eigenschappen in, maar niet beide.
Stel de runtimeConfiguration.concurrency.runs
eigenschap in op 1
:
"<trigger-name>": {
"type": "<trigger-name>",
"recurrence": {
"frequency": "<time-unit>",
"interval": <number-of-time-units>,
},
"runtimeConfiguration": {
"concurrency": {
"runs": 1
}
}
}
-or-
Stel de operationOptions
eigenschap in op SingleInstance
:
"<trigger-name>": {
"type": "<trigger-name>",
"recurrence": {
"frequency": "<time-unit>",
"interval": <number-of-time-units>,
},
"operationOptions": "SingleInstance"
}
Zie Runtime-configuratie-instellingen en bewerkingsopties voor meer informatie.
Bewerken in de werkstroomontwerper
In the trigger's upper-right corner, select the ellipses (...) button, and then select Settings.
Under Concurrency Control, set Limit to On.
Sleep de schuifregelaar Degree of Parallelism naar het getal
1
.
Voer sequentieel 'voor elke' lussen uit
Als u een lusiteratie 'voor elke' alleen wilt uitvoeren nadat de vorige iteratie is uitgevoerd, stelt u de actie 'voor elke' in om sequentieel uit te voeren. U kunt de codeweergave-editor of de werkstroomontwerper gebruiken, omdat u de gelijktijdigheid van de actie wijzigt via ontwerper ook de runtimeConfiguration.concurrency.repetitions
eigenschap toevoegt of bijwerkt in de onderliggende actiedefinitie en omgekeerd.
Note
Wanneer u een actie 'voor elke actie' instelt om opeenvolgend uit te voeren met behulp van de editor voor ontwerpfunctie of codeweergave, moet u de eigenschap operationOptions
van Sequential
de actie niet instellen in de codeweergave-editor.
Anders krijgt u een validatiefout.
Bewerken in de codeweergave
Stel in de actiedefinitie een van deze eigenschappen in, maar niet beide.
Stel de runtimeConfiguration.concurrency.repetitions
eigenschap in op 1
:
"For_each" {
"type": "Foreach",
"actions": { "<actions-to-run>" },
"foreach": "<for-each-expression>",
"runAfter": {},
"runtimeConfiguration": {
"concurrency": {
"repetitions": 1
}
}
}
-or-
Stel de operationOptions
eigenschap in op Sequential
:
"For_each" {
"type": "Foreach",
"actions": { "<actions-to-run>" },
"foreach": "<for-each-expression>",
"runAfter": {},
"operationOptions": "Sequential"
}
Zie Runtime-configuratie-instellingen en bewerkingsopties voor meer informatie.
Bewerken in de werkstroomontwerper
In the For each action's upper-right corner, select the ellipses (...) button, and then select Settings.
Under Concurrency Control, set Concurrency Control to On.
Sleep de schuifregelaar Degree of Parallelism naar het getal
1
.
Acties uitvoeren in een synchrone bewerkingspatroon
De HTTP-actie en APIConnection-acties in Azure Logic Apps volgen standaard het standaard asynchrone bewerkingspatroon, terwijl de actie Antwoord het synchrone bewerkingspatroon volgt. The asynchronous pattern specifies that after an action calls or sends a request to the specified endpoint, service, system, or API, the receiver immediately returns a "202 ACCEPTED" response. Deze code bevestigt dat de ontvanger de aanvraag heeft geaccepteerd, maar nog niet is verwerkt. The response can include a location
header that specifies the URL and a refresh ID that the caller can use to continually poll or check the status for the asynchronous request until the receiver stops processing and returns a "200 OK" success response or other non-202 response. Zie Asynchrone microservice-integratie dwingt microserviceautonomie af voor meer informatie.
In the Logic App Designer, the HTTP action, APIConnection actions, and Response action have the Asynchronous Pattern setting. Wanneer deze instelling is ingeschakeld, geeft deze instelling aan dat de beller niet wacht tot de verwerking is voltooid en verder kan gaan met de volgende actie, maar de status blijft controleren totdat de verwerking stopt. Als deze instelling is uitgeschakeld, geeft deze instelling aan dat de beller wacht tot de verwerking is voltooid voordat de volgende actie wordt uitgevoerd. Volg deze stappen om deze instelling te vinden:
On the HTTP action's title bar, select the ellipses (...) button, which opens the action's settings.
Find the Asynchronous Pattern setting.
In de onderliggende JSON-definitie (JavaScript Object Notation) van de actie volgen de HTTP-actie en APIConnection-acties impliciet het asynchrone bewerkingspatroon.
In sommige scenario's wilt u mogelijk dat een actie het synchrone patroon volgt. Wanneer u bijvoorbeeld de HTTP-actie gebruikt, kunt u het volgende doen:
In deze gevallen kunt u een actie synchroon uitvoeren met behulp van deze opties:
Vervang de polling-versie van die actie door een webhookversie, indien beschikbaar.
Schakel het asynchrone gedrag van de actie uit door een van de volgende opties te volgen:
Schakel in logic app Designer de instelling Asynchroon patroon uit.
Voeg in de onderliggende JSON-definitie van de actie de
"DisableAsyncPattern"
bewerkingsoptie toe.
Turn off Asynchronous Pattern setting
In the Logic App Designer, on the action's title bar, select the ellipses (...) button, which opens the action's settings.
Find the Asynchronous Pattern setting, turn the setting to Off if enabled, and select Done.
Asynchroon patroon uitschakelen in de JSON-definitie van de actie
In the action's underlying JSON definition, add and set the "operationOptions" property to "DisableAsyncPattern"
under the action's "inputs"
section, for example:
"<some-long-running-action>": {
"type": "Http",
"inputs": { "<action-inputs>" },
"operationOptions": "DisableAsyncPattern",
"runAfter": {}
}
Triggers en acties verifiëren
HTTP- en HTTPS-eindpunten ondersteunen verschillende soorten verificatie. Op basis van de trigger of actie die u gebruikt om uitgaande aanroepen of aanvragen voor toegang tot deze eindpunten te maken, kunt u kiezen uit verschillende typen verificatie. Zie Verificatie toevoegen aan uitgaande oproepen voor meer informatie.
Next steps
- Meer informatie over werkstroomdefinitietaal