Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för: Azure Logic Apps (Förbrukning)
Om du bara vill köra en grupp med åtgärder efter att en annan åtgärdsgrupp har lyckats eller misslyckats kan du kapsla de beroende åtgärderna i ett omfång. Den här strukturen är användbar när du vill organisera åtgärder som en logisk grupp, utvärdera gruppens status och utföra åtgärder som baseras på omfångets status. När alla åtgärder inom ett omfång har slutförts, får omfånget också en egen status. Du kan till exempel använda omfång när du vill implementera undantags- och felhantering.
Om du vill kontrollera statusen för ett omfång kan du använda samma villkor som du använder för att fastställa en logikapps körningsstatus, till exempel Lyckades, Misslyckades, Avbröts och så vidare. Som standard, när alla omfångets åtgärder lyckas, markeras omfångets status som Lyckades. Men när någon åtgärd i omfånget misslyckas eller avbryts markeras omfångets status som Misslyckad. Begränsningar för omfång finns i Gränser och konfiguration.
Här är till exempel en logikapp på hög nivå som använder ett omfång för att köra specifika åtgärder och ett villkor för att kontrollera omfångets status. Om några åtgärder i omfånget misslyckas eller slutar oväntat markeras omfånget misslyckades respektive avbröts och logikappen skickar ett meddelande om att omfånget misslyckades. Om alla scopade åtgärder lyckas skickar Logic App meddelandet "Scope lyckades".
               
              
            
Prerequisites
- Ett Azure-konto och prenumeration. Om du inte har någon prenumeration kan du registrera ett kostnadsfritt Azure-konto. 
- Ett e-postkonto från valfri e-postleverantör som stöds av Azure Logic Apps. - I det här exemplet används Outlook.com. Om du använder en annan provider förblir det allmänna flödet detsamma, men användargränssnittet ser annorlunda ut. 
- Bing Maps-nyckel. Information om hur du hämtar den här nyckeln finns i Hämta en Bing Maps-nyckel. 
- Grundläggande kunskaper om logikappar 
Skapa exempel på logikapp
Skapa först den här exempellogikappen så att du kan lägga till ett omfång senare:
               
              
            
- Ett schema – upprepningsutlösare som kontrollerar Bing Maps-tjänsten med ett intervall som du anger
- En Bing Maps – Hämta vägåtgärd som kontrollerar restiden mellan två platser
- En villkorsåtgärd som kontrollerar om restiden överskrider din angivna restid
- En åtgärd som skickar e-post till dig när den aktuella restiden överskrider den tid du har angett.
Du kan spara logikappen när som helst, så spara ofta ditt arbete.
- Logga in på Azure-portalen om du inte redan har gjort det. Skapa en tom logikapp. 
- Lägg till utlösaren Schema – upprepning med följande inställningar: Intervall = "1" och Frekvens = "Minut"   - Tip - Om du vill förenkla vyn visuellt och dölja varje åtgärds information i designern döljer du varje åtgärds form under de här stegen. 
- Lägg till åtgärden Bing Maps – Hämta väg . - Om du inte redan har en Bing Maps-anslutning uppmanas du att skapa en anslutning. - Setting - Value - Description - Anslutningsnamn - BingMapsConnection - Ange ett namn för anslutningen. - API-nyckel - < din-Bing-Maps-nyckel> - Ange nyckeln för Bing Maps som du fick tidigare. 
- Konfigurera Get-route-åtgärden enligt tabellen nedanför bilden:   - Mer information om dessa parametrar finns i Beräkna en väg. - Setting - Value - Description - Waypoint 1 - < Start> - Ange vägens ursprung. - Waypoint 2 - < ände> - Ange ruttens mål. - Avoid - None - Ange objekt som du vill undvika på din väg, till exempel motorvägar, vägtullar och så vidare. Möjliga värden finns i Beräkna en väg. - Optimize - timeWithTraffic - Välj en parameter för att optimera din väg, till exempel avstånd, tid med aktuell trafikinformation och så vidare. I det här exemplet används det här värdet: "timeWithTraffic" - Avståndsenhet - < din inställning> - Ange avståndethet för att beräkna din väg. Det här exemplet använder det här värdet: "Mile" - Reseläge - Driving - Ange färdläget för din väg. I det här exemplet används det här värdet "Körning" - Datum-tid för överföring - None - Gäller endast för transitläge. - Överföring Date-Type typ - None - Gäller endast för transitläge. 
 
- Lägg till ett villkor som kontrollerar om den aktuella restiden med trafik överskrider en angiven tid. I det här exemplet följer du dessa steg: - Byt namn på villkoret med den här beskrivningen: Om trafiktiden är mer än den angivna tiden 
- I kolumnen längst till vänster väljer du i rutan Välj ett värde så att listan med dynamiskt innehåll visas. I den listan väljer du fältet Resevaraktighetstrafik , som är i sekunder.   
- I mittenrutan väljer du den här operatorn: är större än 
- I kolumnen längst till höger anger du det här jämförelsevärdet, som är i sekunder och motsvarar 10 minuter: 600 - När du är klar ser villkoret ut som i det här exemplet:   
 
- I true-grenen lägger du till en "skicka e-post"-åtgärd för din e-postleverantör. Konfigurera den här åtgärden genom att följa stegen under den här bilden:   - I fältet Till anger du din e-postadress i testsyfte. 
- I fältet Ämne anger du följande text: - Time to leave: Traffic more than 10 minutes
- I fältet Brödtext anger du denna text med ett slutande blanksteg: - Travel time:- Markören visas i fältet Brödtext , men listan med dynamiskt innehåll förblir öppen så att du kan välja alla parametrar som är tillgängliga just nu. 
- I listan med dynamiskt innehåll väljer du Uttryck. 
- Leta upp och välj funktionen div(). Placera markören i funktionens parenteser. 
- När markören finns inom funktionens parenteser väljer du Dynamiskt innehåll så att listan med dynamiskt innehåll visas. 
- I avsnittet Hämta rutt väljer du fältet Trafikvaraktighet.   
- När fältet har matchats till JSON-format lägger du till ett kommatecken ( - ,) följt av talet- 60så att du konverterar värdet i Trafikvaraktighetstrafik från sekunder till minuter.- div(body('Get_route')?['travelDurationTraffic'],60)- Uttrycket ser nu ut som i det här exemplet:   
- När du är klar väljer du OK. 
 - När uttrycket har lösts lägger du till den här texten med ett inledande blanksteg: - minutes- Ditt Body-fält ser nu ut så här:   
 
- Spara logikappen. 
Lägg sedan till ett omfång så att du kan gruppera specifika åtgärder och utvärdera deras status.
Lägg till omfång
- Om du inte redan har gjort det öppnar du logikappen i arbetsflödesdesignern. 
- Lägg till ett omfång på den arbetsflödesplats som du vill ha. Om du till exempel vill lägga till ett omfång mellan befintliga steg i logikappens arbetsflöde följer du dessa steg: - Flytta pekaren över pilen där du vill lägga till omfånget. Välj plustecknet (+) >Lägg till en åtgärd.   
- I sökrutan anger du "omfång" som filter. Välj åtgärden Omfång . 
 
Lägg till steg i omfånget
- Lägg nu till stegen eller dra befintliga steg som du vill köra inom omfånget. I det här exemplet drar du dessa åtgärder till omfånget: - Hämta rutt
- Om trafiktiden är mer än den angivna tiden, vilket omfattar både sanna och falska grenar
 - Logikappen ser nu ut så här:   
- Under omfånget lägger du till ett villkor som kontrollerar omfångets status. Döp om villkoret med denna beskrivning: Scope misslyckades   
- I villkoret lägger du till de här uttrycken som kontrollerar om omfångets status är lika med "Misslyckades" eller "Avbröts". - Om du vill lägga till ytterligare en rad väljer du Lägg till. 
- I varje rad väljer du i den vänstra rutan så att listan med dynamiskt innehåll visas. I listan med dynamiskt innehåll väljer du Uttryck. I redigeringsrutan anger du det här uttrycket och väljer sedan OK: - actions('Scope')?['status']  
- För båda raderna, välj är lika med som operator. 
- För jämförelsevärdena anger du - Failedpå den första raden . På den andra raden anger du- Aborted.- När du är klar ser villkoret ut som i det här exemplet:   - Ange nu villkorets - runAfteregenskap så att villkoret kontrollerar omfångsstatusen och kör den matchande åtgärd som du definierar i senare steg.
- I villkoret Om omfånget misslyckades väljer du ellipsknappen (...) och väljer sedan Konfigurera körning efter.   
- Markera alla dessa omfångsstatusar: lyckas, har misslyckats, hoppas över och har överskridit tidsgränsen   
- När du är klar väljer du Klar. Tillståndet visar nu en "informationsikon". 
 
- I grenarna Sant och Falskt lägger du till de åtgärder som du vill utföra baserat på varje omfångsstatus, till exempel skicka ett e-postmeddelande eller ett meddelande.   
- Spara logikappen. 
Den färdiga logikappen ser nu ut så här:
               
              
            
Testa arbetsflödet
På designverktygsfältet, välj Kör>Kör. Om alla åtgärder inom scopes lyckas, får du meddelandet 'omfånget lyckades'. Om några åtgärder inom ett visst omfång inte lyckas visas meddelandet Omfattning misslyckades.
JSON-definition
Om du arbetar i kodvyn kan du definiera ett omfång i arbetsflödets JSON-definition i stället. Följande exempel visar definitionen för ett grundläggande omfång:
{
   "actions": {
      "Scope": {
         "type": "Scope",
         "actions": {
            "Http": {
               "inputs": {
                   "method": "GET",
                   "uri": "https://www.bing.com"
               },
               "runAfter": {},
               "type": "Http"
            }
         }
      }
   }
}
The following example shows the JSON definition for the trigger and actions in the preceding workflow:
``` json
"triggers": {
  "Recurrence": {
    "type": "Recurrence",
    "recurrence": {
       "frequency": "Minute",
       "interval": 1
    }
  }
},
"actions": {
  "If_scope_failed": {
    "type": "If",
    "actions": {
      "Scope_failed": {
        "type": "ApiConnection",
        "inputs": {
          "body": {
            "Body": "Scope failed. Scope status: @{action('Scope')}",
            "Subject": "Scope failed",
            "To": "<your-email@domain.com>"
          },
          "host": {
            "connection": {
              "name": "@parameters('$connections')['outlook']['connectionId']"
            }
          },
          "method": "post",
          "path": "/Mail"
        },
        "runAfter": {}
      }
    },
    "else": {
      "actions": {
        "Scope_succeeded": {
          "type": "ApiConnection",
          "inputs": {
            "body": {
              "Body": "Scope succeeded. Scope status: @{action('Scope')}",
              "Subject": "Scope succeeded",
              "To": "<your-email@domain.com>"
            },
            "host": {
              "connection": {
               "name": "@parameters('$connections')['outlook']['connectionId']"
              }
            },
            "method": "post",
            "path": "/Mail"
          },
          "runAfter": {}
        }
      }
    },
    "expression": {
      "or": [ 
         {
            "equals": [ 
              "@action('Scope')",
              "Failed"
            ]
         },
         {
            "equals": [
               "@action('Scope')",
               "Aborted"
            ]
         } 
      ]
    },
    "runAfter": {
      "Scope": [
        "Failed",
        "Skipped",
        "Succeeded",
        "TimedOut"
      ]
    }
  },
  "Scope": {
    "type": "Scope",
    "actions": {
      "Get_route": {
        "type": "ApiConnection",
        "inputs": {
          "host": {
            "connection": {
              "name": "@parameters('$connections')['bingmaps']['connectionId']"
            }
          },
          "method": "get",
          "path": "/REST/V1/Routes/Driving",
          "queries": {
            "distanceUnit": "Mile",
            "optimize": "timeWithTraffic",
            "travelMode": "Driving",
            "wp.0": "<start>",
            "wp.1": "<end>"
          }
        },
        "runAfter": {}
      },
      "If_traffic_time_is_more_than_specified_time": {
        "type": "If",
        "actions": {
          "Send_mail_when_traffic_exceeds_10_minutes": {
            "type": "ApiConnection",
            "inputs": {
              "body": {
                 "Body": "Travel time:@{div(body('Get_route')?['travelDurationTraffic'],60)} minutes",
                 "Subject": "Time to leave: Traffic more than 10 minutes",
                 "To": "<your-email@domain.com>"
              },
              "host": {
                "connection": {
                   "name": "@parameters('$connections')['outlook']['connectionId']"
                }
              },
              "method": "post",
              "path": "/Mail"
            },
            "runAfter": {}
          }
        },
        "expression": {
          "and" : [
            {
               "greater": [ 
                  "@body('Get_route')?['travelDurationTraffic']", 
                  600
               ]
            }
          ]
        },
        "runAfter": {
          "Get_route": [
            "Succeeded"
          ]
        }
      }
    },
    "runAfter": {}
  }
},