Delen via


Fouten en uitzonderingen in Azure Logic Apps afhandelen

Van toepassing op: Azure Logic Apps (Verbruik + Standard)

De manier waarop elke integratiearchitectuur downtime of problemen die worden veroorzaakt door afhankelijke systemen, op de juiste wijze afhandelt, kan een uitdaging vormen. Azure Logic Apps biedt een eersteklas ervaring voor het afhandelen van fouten en uitzonderingen om robuuste integraties te maken die problemen en fouten probleemloos verwerken.

Beleid opnieuw proberen

Voor de meest eenvoudige uitzonderings- en foutafhandeling kunt u het beleid voor opnieuw proberen gebruiken als deze mogelijkheid bestaat op een trigger of actie, zoals de HTTP-actie. Als er een time-out optreedt of mislukt voor de oorspronkelijke aanvraag van de trigger of actie, wat resulteert in een 408-, 429- of 5xx-antwoord, geeft het beleid voor opnieuw proberen aan dat de trigger of actie de aanvraag opnieuw verzendt per beleidsinstellingen.

Beleidslimieten voor opnieuw proberen

Raadpleeg beleidslimieten voor opnieuw proberen voor meer informatie over beleid voor opnieuw proberen, instellingen, limieten en andere opties.

Beleidstypen opnieuw proberen

Connectorbewerkingen die ondersteuning bieden voor beleid voor opnieuw proberen, gebruiken het standaardbeleid , tenzij u een ander beleid voor opnieuw proberen selecteert.

Beleid voor opnieuw proberen Beschrijving
Standaard Voor de meeste bewerkingen is het standaardbeleid voor opnieuw proberen een beleid voor exponentieel interval dat maximaal 4 nieuwe pogingen verzendt met exponentieel toenemende intervallen. Deze intervallen worden geschaald met 7,5 seconden, maar liggen tussen 5 en 45 seconden. Verschillende bewerkingen maken gebruik van een ander standaardbeleid voor opnieuw proberen, zoals een beleid voor vast interval. Raadpleeg het beleidstype Standaardbeleid voor opnieuw proberen voor meer informatie.
Geen Verzend de aanvraag niet opnieuw. Raadpleeg Geen - Beleid voor opnieuw proberen voor meer informatie.
Exponentieel interval Met dit beleid wordt een willekeurig interval gewacht, dat is geselecteerd uit een exponentieel toenemend bereik voordat de volgende aanvraag wordt verzonden. Raadpleeg het beleidstype exponentiële interval voor meer informatie.
Vast interval Dit beleid wacht het opgegeven interval voordat de volgende aanvraag wordt verzonden. Raadpleeg het beleidstype vast interval voor meer informatie.

Beleidstype voor opnieuw proberen wijzigen in de ontwerpfunctie

  1. Open uw logische app-resource in Azure Portal.

  2. In de resource-zijbalk voert u de onderstaande stappen uit om de workflow-ontwerper te openen voor uw Logic App:

    • Verbruik: Selecteer onder Ontwikkelhulpprogramma's de ontwerpfunctie om uw werkstroom te openen.

    • Standaard

      1. Selecteer Werkstromen onder Werkstromen.

      2. Selecteer uw werkstroom op de pagina Werkstromen .

      3. Selecteer onder Extra de ontwerpfunctie om uw werkstroom te openen.

  3. Op de trigger of actie waarbij u het type herhaalbeleid wilt wijzigen, volgt u deze stappen om de instellingen te openen.

    1. Selecteer de bewerking in de ontwerpinterface.

    2. Selecteer Instellingen in het deelvenster met bewerkingsgegevens.

    3. Selecteer onder Netwerken onder Beleid voor opnieuw proberen het gewenste beleidstype.

Beleidstype voor opnieuw proberen wijzigen in de codeweergave-editor

  1. Controleer of de trigger of actie beleid voor opnieuw proberen ondersteunt door de eerdere stappen in de ontwerpfunctie uit te voeren.

  2. Open uw werkstroom voor logische apps in de codeweergave-editor.

  3. Voeg in de trigger- of actiedefinitie het retryPolicy JSON-object toe aan het object van inputs de trigger of actie. Als er geen retryPolicy object bestaat, gebruikt de trigger of actie het default beleid voor opnieuw proberen.

    "inputs": {
       <...>,
       "retryPolicy": {
          "type": "<retry-policy-type>",
          // The following properties apply to specific retry policies.
          "count": <retry-attempts>,
          "interval": "<retry-interval>",
          "maximumInterval": "<maximum-interval>",
          "minimumInterval": "<minimum-interval>"
       },
       <...>
    },
    "runAfter": {}
    

    Vereist

    Eigenschappen Weergegeven als Type Beschrijving
    type < type beleid opnieuw proberen> Snaar / Touwtje Het beleidstype voor opnieuw proberen dat moet worden gebruikt: default, none, fixedof exponential
    count < nieuwe pogingen> Geheel getal Voor fixed en exponential beleidstypen is het aantal nieuwe pogingen, een waarde van 1 - 90. Raadpleeg vast interval en exponentieel interval voor meer informatie.
    interval < interval voor opnieuw proberen> Snaar / Touwtje Voor fixed en exponential beleidstypen is de intervalwaarde voor opnieuw proberen in ISO 8601-indeling. Voor het exponential beleid kunt u ook optionele maximum- en minimumintervallen opgeven. Raadpleeg vast interval en exponentieel interval voor meer informatie.

    Verbruik: 5 seconden (PT5S) tot 1 dag (P1D).
    Standaard: Voor stateful werkstromen: 5 seconden (PT5S) tot 1 dag (P1D). Voor staatloze werkstromen, 1 seconde (PT1S) tot 1 minuut (PT1M).

    Optioneel

    Eigenschappen Weergegeven als Type Beschrijving
    maximumInterval < maximuminterval> Snaar / Touwtje Voor het exponential beleid is het grootste interval voor het willekeurig geselecteerde interval in ISO 8601-indeling. De standaardwaarde is 1 dag (P1D). Raadpleeg exponentieel interval voor meer informatie.
    minimumInterval < minimuminterval> Snaar / Touwtje Voor het exponential beleid is het kleinste interval voor het willekeurig geselecteerde interval in ISO 8601-indeling. De standaardwaarde is 5 seconden (PT5S). Raadpleeg exponentieel interval voor meer informatie.

Standaard beleid voor opnieuw proberen

Connectorbewerkingen die ondersteuning bieden voor beleid voor opnieuw proberen, gebruiken het standaardbeleid , tenzij u een ander beleid voor opnieuw proberen selecteert. Voor de meeste bewerkingen is het standaardbeleid voor opnieuw proberen een beleid voor exponentieel interval dat maximaal 4 nieuwe pogingen verzendt met exponentieel toenemende intervallen. Deze intervallen worden geschaald met 7,5 seconden, maar liggen tussen 5 en 45 seconden. Verschillende bewerkingen maken gebruik van een ander standaardbeleid voor opnieuw proberen, zoals een beleid voor vast interval.

In uw werkstroomdefinitie definieert de trigger- of actiedefinitie niet expliciet het standaardbeleid, maar in het volgende voorbeeld ziet u hoe het standaardbeleid voor opnieuw proberen zich gedraagt voor de HTTP-actie:

"HTTP": {
   "type": "Http",
   "inputs": {
      "method": "GET",
      "uri": "http://myAPIendpoint/api/action",
      "retryPolicy" : {
         "type": "exponential",
         "interval": "PT7S",
         "count": 4,
         "minimumInterval": "PT5S",
         "maximumInterval": "PT1H"
      }
   },
   "runAfter": {}
}

Geen - Beleid voor opnieuw proberen

Als u wilt opgeven dat de actie of trigger mislukte aanvragen niet opnieuw probeert, stelt u het <type> beleid voor opnieuw proberen in op none.

Beleid voor opnieuw proberen met vast interval

Als u wilt opgeven dat de actie of trigger het opgegeven interval wacht voordat de volgende aanvraag wordt verzonden, stelt u het <type> beleid voor opnieuw proberen in op fixed.

Voorbeeld

Dit beleid voor opnieuw proberen probeert het laatste nieuws nog twee keer te krijgen na de eerste mislukte aanvraag met een vertraging van 30 seconden tussen elke poging:

"Get_latest_news": {
   "type": "Http",
   "inputs": {
      "method": "GET",
      "uri": "https://mynews.example.com/latest",
      "retryPolicy": {
         "type": "fixed",
         "interval": "PT30S",
         "count": 2
      }
   }
}

Beleid voor opnieuw proberen van exponentieel interval

Het beleid voor het opnieuw proberen van exponentiële interval geeft aan dat de trigger of actie een willekeurig interval wacht voordat de volgende aanvraag wordt verzonden. Dit willekeurige interval wordt geselecteerd uit een exponentieel groeiend bereik. U kunt desgewenst de standaardintervallen voor minimum- en maximumwaarden overschrijven door uw eigen minimum- en maximumintervallen op te geven, op basis van of u een werkstroom voor logische apps voor Verbruik of Standaard hebt.

Naam Verbruikslimiet Standaardlimiet Opmerkingen
Maximale vertraging Standaard: 1 dag Standaard: 1 uur Als u de standaardlimiet in een werkstroom voor logische verbruiks-apps wilt wijzigen, gebruikt u de beleidsparameter voor opnieuw proberen.

Als u de standaardlimiet in een standaardwerkstroom voor logische apps wilt wijzigen, raadpleegt u Host- en app-instellingen bewerken voor logische apps in Azure Logic Apps met één tenant.

Minimale vertraging Standaard: 5 sec. Standaard: 5 sec. Als u de standaardlimiet in een werkstroom voor logische verbruiks-apps wilt wijzigen, gebruikt u de beleidsparameter voor opnieuw proberen.

Als u de standaardlimiet in een standaardwerkstroom voor logische apps wilt wijzigen, raadpleegt u Host- en app-instellingen bewerken voor logische apps in Azure Logic Apps met één tenant.

Willekeurige variabelenbereiken

Voor het beleid voor exponentieel interval voor opnieuw proberen toont de volgende tabel het algemene algoritme dat Azure Logic Apps gebruikt voor het genereren van een uniforme willekeurige variabele in het opgegeven bereik voor elke nieuwe poging. Het opgegeven bereik kan maximaal en inclusief het aantal nieuwe pogingen zijn.

Nummer opnieuw proberen Minimuminterval Maximuminterval
1 max(0, <minimuminterval min(interval, <maximuminterval>)
2 max(interval, <minimuminterval>) min(2 * interval, <maximuminterval
3 max(2 * interval, <minimuminterval min(4 * interval, <maximuminterval
4 max(4 * interval, <minimuminterval min(8 * interval, <maximuminterval
.... .... ....

Het gedrag 'uitvoeren na' beheren

Wanneer u acties toevoegt in de werkstroomontwerper, declareert u impliciet de volgorde voor het uitvoeren van deze acties. Nadat een actie is uitgevoerd, wordt die actie gemarkeerd met een status zoals Geslaagd, Mislukt, Overgeslagen of TimedOut. Met andere woorden, de voorafgaande actie moet eerst eindigen met een van de toegestane statussen voordat de opvolgende actie kan worden uitgevoerd.

Een actie die u in de ontwerpfunctie toevoegt, wordt standaard alleen uitgevoerd als de voorgaande actie is voltooid met de status Geslaagd . Deze na-uitvoerings gedrag specificeert nauwkeurig de volgorde van uitvoering voor acties in een werkstroom.

In de ontwerpfunctie kunt u het standaardgedrag 'uitvoeren na' voor een actie wijzigen door de instelling Uitvoeren na de actie te bewerken. Deze instelling is alleen beschikbaar voor volgende acties die de eerste actie in een werkstroom volgen. De eerste actie in een workflow wordt altijd uitgevoerd zodra de trigger met succes is uitgevoerd. De instelling Uitvoeren na is dus niet beschikbaar en is niet van toepassing op de eerste actie.

In de onderliggende JSON-definitie van een actie is de instelling Na uitvoeren hetzelfde als de eigenschap runAfter. Met deze eigenschap geeft u een of meer voorafgaande acties op die eerst moeten worden voltooid met de specifieke toegestane statussen voordat de opvolgende actie kan worden uitgevoerd. De runAfter eigenschap is een JSON-object dat flexibiliteit biedt door alle voorafgaande acties op te geven die moeten worden voltooid voordat de opvolgende actie wordt uitgevoerd. Dit object definieert ook een matrix met acceptabele statussen.

Als u bijvoorbeeld een actie wilt uitvoeren nadat de actie A slaagt en ook nadat de actie B slaagt of mislukt wanneer u aan de JSON-definitie van een actie werkt, stelt u de volgende runAfter eigenschap in:

{
   // Other parts in action definition
   "runAfter": {
      "Action A": ["Succeeded"],
      "Action B": ["Succeeded", "Failed"]
    }
}

Gedrag voor foutafhandeling na uitvoeren

Wanneer een actie een niet-verwerkte fout of uitzondering genereert, wordt de actie gemarkeerd Mislukt en wordt een opvolgende actie gemarkeerd als Overgeslagen. Als dit gedrag gebeurt voor een actie met parallelle vertakkingen, volgt de Azure Logic Apps-engine de andere vertakkingen om de voltooiingsstatussen te bepalen. Als een vertakking bijvoorbeeld eindigt op een overgeslagen actie, is de voltooiingsstatus van die vertakking gebaseerd op de voorafgaande status van de overgeslagen actie. Nadat de uitvoering van de werkstroom is voltooid, bepaalt de engine de status van de hele uitvoering door alle vertakkingsstatussen te evalueren. Als een vertakking mislukt, wordt de hele werkstroomuitvoering gemarkeerd als Mislukt.

Conceptueel diagram met voorbeelden die laten zien hoe uitvoeringsstatussen worden geëvalueerd.

Om ervoor te zorgen dat een actie nog steeds kan worden uitgevoerd ondanks de status van de voorafgaande taak, kunt u het gedrag van een actie 'uitvoeren na' wijzigen om de mislukte statussen van de voorafgaande taak af te handelen. Op die manier wordt de actie uitgevoerd wanneer de status van de voorafgaande taak is geslaagd, Mislukt, Overgeslagen, TimedOut of al deze statussen.

Als u bijvoorbeeld office 365 Outlook een e-mailactie wilt verzenden nadat de excel onlineactie Een rij toevoegen aan een tabel voorafgaande actie is gemarkeerd als Mislukt in plaats van Geslaagd, wijzigt u het gedrag 'uitvoeren na' met behulp van de editor voor de ontwerpfunctie of codeweergave.

Gedrag 'uitvoeren na' wijzigen in de ontwerpfunctie

  1. Open uw logische app-resource in Azure Portal.

  2. In de resource-zijbalk voert u de onderstaande stappen uit om de workflow-ontwerper te openen voor uw Logic App:

    • Verbruik: Selecteer onder Ontwikkelhulpprogramma's de ontwerpfunctie om uw werkstroom te openen.

    • Standaard

      1. Selecteer Werkstromen in de zijbalk van de resource onder Werkstromen.

      2. Selecteer uw werkstroom op de pagina Werkstromen .

      3. Selecteer onder Extra de ontwerpfunctie om uw werkstroom te openen.

  3. Op de trigger of actie waar u de "run after"-gedrag wilt wijzigen, volgt u deze stappen om de instellingen van de bewerking te openen:

    1. Selecteer de bewerking in de ontwerpinterface.

    2. Selecteer Instellingen in het deelvenster met bewerkingsgegevens.

      De sectie Uitvoeren na bevat een lijst acties selecteren, waarin de beschikbare voorafgaande bewerkingen voor de momenteel geselecteerde bewerking worden weergegeven, bijvoorbeeld:

      Schermopname toont lijst voor het selecteren van acties met voorgaande bewerkingen.

    3. Vouw onder de lijst Acties selecteren de huidige voorafgaande bewerking uit. Dit is HTTP in dit voorbeeld:

      Schermopname van de huidige voorafgaande bewerking.

      De status 'uitvoeren na' is standaard ingesteld op Is geslaagd. Deze waarde betekent dat de voorafgaande bewerking moet worden voltooid voordat de huidige actie kan worden uitgevoerd.

      Schermopname van de huidige uitvoering nadat de status is ingesteld op Is geslaagd.

  4. Als u het gedrag 'uitvoeren na' wilt wijzigen in de gewenste statussen, selecteert u deze statussen.

    Het volgende voorbeeld selecteert Is mislukt.

    Schermopname van de huidige uitvoering nadat het gedrag is ingesteld op Has failed.

  5. Als u wilt opgeven dat de huidige bewerking alleen wordt uitgevoerd wanneer de voorafgaande actie is voltooid met de mislukte bewerking, is overgeslagen of de status van een time-out heeft opgetreden , selecteert u deze statussen en schakelt u vervolgens de standaardstatus uit, bijvoorbeeld:

    Schermopname toont de huidige actie, en geselecteerde meerdere na-uitvoeringsstatussen.

    Notitie

    Voordat u de standaard status verwijdert, moet u eerst een andere status selecteren. U moet altijd ten minste één status hebben geselecteerd.

  6. Als u wilt vereisen dat meerdere voorafgaande bewerkingen worden uitgevoerd en voltooid, elk met hun eigen status 'uitvoeren na', voert u de volgende stappen uit:

    1. Open de lijst Select acties en selecteer de voorafgaande bewerkingen die u wilt.

    2. Selecteer de status 'uitvoeren na' voor elke bewerking.

    Schermopname van de huidige actie en meerdere voorafgaande acties.

  7. Wanneer u klaar bent, sluit u het bewerkingsinformatievenster.


Gedrag 'uitvoeren na' wijzigen in de codeweergave-editor

  1. Voer in de zijbalk van de resource de volgende stappen uit om de codeweergave-editor te openen, op basis van uw logische app:

    • Verbruik: Selecteer onder Ontwikkelhulpprogramma's de codeweergave om uw werkstroom te openen in de JSON-editor.

    • Standaard

      1. Selecteer Werkstromen onder Werkstromen.

      2. Selecteer uw werkstroom op de pagina Werkstromen .

      3. Selecteer onder Extra de codeweergave om uw werkstroom te openen in de JSON-editor.

  2. Bewerk in de JSON-definitie van de actie de runAfter eigenschap met de volgende syntaxis:

    "<action-name>": {
       "inputs": {
          "<action-specific-inputs>"
       },
       "runAfter": {
          "<preceding-action>": [
             "Succeeded"
          ]
       },
       "type": "<action-type>"
    }
    
  3. In dit voorbeeld wijzigt u de runAfter eigenschap van Succeeded :Failed

    "Send_an_email_(V2)": {
       "inputs": {
          "body": {
             "Body": "<p>Failed to add row to table: @{body('Add_a_row_into_a_table')?['Terms']}</p>",
             "Subject": "Add row to table failed: @{body('Add_a_row_into_a_table')?['Terms']}",
             "To": "Sophia.Owen@fabrikam.com"
          },
          "host": {
             "connection": {
                "name": "@parameters('$connections')['office365']['connectionId']"
             }
          },
          "method": "post",
          "path": "/v2/Mail"
       },
       "runAfter": {
          "Add_a_row_into_a_table": [
             "Failed"
          ]
       },
       "type": "ApiConnection"
    }
    
  4. Als u wilt opgeven dat de actie wordt uitgevoerd, ongeacht of de voorafgaande actie is gemarkeerd als Failed, Skipped of TimedOutvoeg de andere statussen toe:

    "runAfter": {
       "Add_a_row_into_a_table": [
          "Failed", "Skipped", "TimedOut"
       ]
    },
    

Acties evalueren met bereiken en hun resultaten

Net als bij het uitvoeren van stappen na afzonderlijke acties met de instelling Uitvoeren na, kunt u acties groeperen binnen een bereik. U kunt bereiken gebruiken wanneer u acties logisch wilt groeperen, de statistische status van het bereik wilt beoordelen en acties wilt uitvoeren op basis van die status. Nadat alle acties in een bereik zijn uitgevoerd, krijgt het bereik zelf de eigen status.

Als u de status van een bereik wilt controleren, kunt u dezelfde criteria gebruiken die u gebruikt om de uitvoeringsstatus van een werkstroom te controleren, zoals Geslaagd, Mislukt, enzovoort.

Wanneer alle acties van het bereik zijn geslaagd, wordt de status van het bereik standaard gemarkeerd als Geslaagd. Als de laatste actie in een bereik is gemarkeerd als Mislukt of Afgebroken, wordt de status van het bereik gemarkeerd als Mislukt.

Als u uitzonderingen in een mislukt bereik wilt ondervangen en acties wilt uitvoeren die deze fouten verwerken, kunt u de instelling Uitvoeren na gebruiken die het bereik Mislukt heeft . Als er acties in het bereik mislukken en u de instelling 'uitvoeren na' voor dat bereik gebruikt, kunt u één actie maken om fouten te ondervangen.

Zie Limieten en configuratie voor limieten voor bereiken.

Een bereik instellen met 'uitvoeren na' voor het afhandelen van uitzonderingen

  1. Open in Azure Portal de resource en werkstroom van uw logische app in de ontwerpfunctie.

    Uw werkstroom moet al een trigger hebben waarmee de werkstroom wordt gestart.

  2. Volg deze algemene stappen in de ontwerpfunctie om een besturingsactie met de naam Bereik toe te voegen aan uw werkstroom.

  3. Voer in de actie Bereik de volgende algemene stappen uit om de acties toe te voegen die moeten worden uitgevoerd, bijvoorbeeld:

    Schermopname van werkstroomontwerper met acties gegroepeerd binnen het bereik.

    In de volgende lijst ziet u enkele voorbeeldacties die u in een bereikactie kunt opnemen:

    • Gegevens ophalen uit een API.
    • De gegevens verwerken.
    • Sla de gegevens op in een database.
  4. Definieer nu de regels 'uitvoeren na' voor het uitvoeren van de acties in het bereik.

    1. Selecteer in de ontwerpfunctie de titel Bereik . Wanneer het informatievenster van het bereik wordt geopend, selecteert u Instellingen.

    2. Als u meer dan één voorgaande actie in de werkstroom hebt, selecteert u in de lijst Acties selecteren de actie waarna u de acties binnen het bereik wilt uitvoeren.

    3. Selecteer voor de geselecteerde actie alle actiestatussen waarmee de acties binnen het bereik kunnen worden uitgevoerd.

      Met andere woorden, een van de gekozen statussen die het resultaat zijn van de geselecteerde actie, zorgt ervoor dat de acties in het bereik worden uitgevoerd.

      In het volgende voorbeeld worden de acties binnen het bereik uitgevoerd nadat de HTTP-actie is voltooid met een van de geselecteerde statussen:

      Schermopname van het tabblad Instellingen van de bereikactie, uitvoeren na sectie en geselecteerde actiestatussen waarmee de acties binnen het bereik worden uitgevoerd.

Context en resultaten ophalen voor fouten

Hoewel het vangen van fouten uit een bereik nuttig is, wilt u mogelijk ook meer context om u te helpen de exacte mislukte acties plus eventuele fouten of statuscodes te leren. De result() functie retourneert de resultaten van de acties op het hoogste niveau in een bereikactie. Deze functie accepteert de naam van het bereik als één parameter en retourneert een matrix met de resultaten van die acties op het hoogste niveau. Deze actieobjecten hebben dezelfde kenmerken als de kenmerken die door de actions() functie worden geretourneerd, zoals de begintijd, eindtijd, status, invoer, correlatie-id's en uitvoer van de actie.

Notitie

De result() functie retourneert alleen de resultaten van de acties op het hoogste niveau en niet van diepere geneste acties, zoals switch- of voorwaardeacties.

Als u context wilt ophalen over de acties die zijn mislukt in een bereik, kunt u de expressie gebruiken met de @result() naam van het bereik en de instelling Uitvoeren na. Als u de geretourneerde matrix wilt filteren op acties met de status Mislukt, kunt u de actie Matrix filteren. Als u een actie wilt uitvoeren voor een geretourneerde mislukte actie, voert u de geretourneerde gefilterde matrix uit en gebruikt u een voor elke lus.

In het volgende JSON-voorbeeld wordt een HTTP POST-aanvraag met de antwoordtekst verzonden voor acties die zijn mislukt binnen de bereikactie met de naam My_Scope. Een gedetailleerde uitleg volgt het voorbeeld.

"Filter_array": {
   "type": "Query",
   "inputs": {
      "from": "@result('My_Scope')",
      "where": "@equals(item()['status'], 'Failed')"
   },
   "runAfter": {
      "My_Scope": [
         "Failed"
      ]
    }
},
"For_each": {
   "type": "foreach",
   "actions": {
      "Log_exception": {
         "type": "Http",
         "inputs": {
            "method": "POST",
            "body": "@item()['outputs']['body']",
            "headers": {
               "x-failed-action-name": "@item()['name']",
               "x-failed-tracking-id": "@item()['clientTrackingId']"
            },
            "uri": "http://requestb.in/"
         },
         "runAfter": {}
      }
   },
   "foreach": "@body('Filter_array')",
   "runAfter": {
      "Filter_array": [
         "Succeeded"
      ]
   }
}

In de volgende stappen wordt beschreven wat er in dit voorbeeld gebeurt:

  1. Als u het resultaat van alle acties in My_Scope wilt ophalen, gebruikt de actie Matrixfilter deze filterexpressie: @result('My_Scope')

  2. De voorwaarde voor Filtermatrix is een @result() item met een status die gelijk is aan Failed. Deze voorwaarde filtert de matrix met alle actieresultaten van My_Scope omlaag naar een matrix met alleen de mislukte actieresultaten.

  3. Voer een For_each lusactie uit op de gefilterde matrixuitvoer . Met deze stap wordt een actie uitgevoerd voor elk mislukte actieresultaat dat eerder is gefilterd.

    Als één actie in het bereik mislukt, worden de acties in de For_each lus slechts één keer uitgevoerd. Meerdere mislukte acties veroorzaken één actie per fout.

  4. Verzend een HTTP POST op de hoofdtekst van het antwoord van het For_each item. Dit is de @item()['outputs']['body'] expressie.

    De @result() itemshape is hetzelfde als de @actions() shape en kan op dezelfde manier worden geparseerd.

  5. Neem twee aangepaste headers op met de naam van de mislukte actie (@item()['name']) en de tracerings-id van de mislukte client (@item()['clientTrackingId']).

Ter referentie: hier volgt een voorbeeld van één @result() item, waarin de name, bodyen clientTrackingId eigenschappen worden weergegeven die in het vorige voorbeeld worden geparseerd. Buiten een For_each actie wordt @result() een matrix van deze objecten geretourneerd.

{
   "name": "Example_Action_That_Failed",
   "inputs": {
      "uri": "https://myfailedaction.azurewebsites.net",
      "method": "POST"
   },
   "outputs": {
      "statusCode": 404,
      "headers": {
         "Date": "Thu, 11 Aug 2016 03:18:18 GMT",
         "Server": "Microsoft-IIS/8.0",
         "X-Powered-By": "ASP.NET",
         "Content-Length": "68",
         "Content-Type": "application/json"
      },
      "body": {
         "code": "ResourceNotFound",
         "message": "/docs/folder-name/resource-name does not exist"
      }
   },
   "startTime": "2016-08-11T03:18:19.7755341Z",
   "endTime": "2016-08-11T03:18:20.2598835Z",
   "trackingId": "bdd82e28-ba2c-4160-a700-e3a8f1a38e22",
   "clientTrackingId": "08587307213861835591296330354",
   "code": "NotFound",
   "status": "Failed"
}

Als u verschillende patronen voor uitzonderingsafhandeling wilt uitvoeren, kunt u de expressies gebruiken die eerder in dit artikel zijn beschreven. U kunt ervoor kiezen om één uitzonderingsafhandelingsactie uit te voeren buiten het bereik dat de hele gefilterde matrix met fouten accepteert en de For_each actie verwijdert. U kunt ook andere nuttige eigenschappen uit het \@result() antwoord opnemen zoals eerder beschreven.

Azure Monitor-logboeken instellen

De vorige patronen zijn handige manieren om fouten en uitzonderingen af te handelen die plaatsvinden binnen een uitvoering. U kunt echter ook fouten identificeren en erop reageren die onafhankelijk van de uitvoering optreden. Als u uitvoeringsstatussen wilt evalueren, kunt u de logboeken en metrische gegevens voor uw uitvoeringen bewaken of publiceren in elk bewakingsprogramma dat u wilt gebruiken.

Azure Monitor biedt bijvoorbeeld een gestroomlijnde manier om alle werkstroomgebeurtenissen, inclusief alle uitvoerings- en actiestatussen, naar een bestemming te verzenden. U kunt waarschuwingen instellen voor specifieke metrische gegevens en drempelwaarden in Azure Monitor. U kunt ook werkstroomevenementen verzenden naar een Log Analytics-werkruimte of Een Azure-opslagaccount. U kunt ook alle gebeurtenissen streamen via Azure Event Hubs naar Azure Stream Analytics. In Stream Analytics kunt u livequery's schrijven op basis van afwijkingen, gemiddelden of fouten uit de diagnostische logboeken. U kunt Stream Analytics gebruiken om informatie te verzenden naar andere gegevensbronnen, zoals wachtrijen, onderwerpen, SQL, Azure Cosmos DB of Power BI.

Zie Azure Monitor-logboeken instellen en diagnostische gegevens verzamelen voor Azure Logic Apps voor meer informatie.