Schemalägg och kör återkommande automatiserade uppgifter, processer och arbetsflöden med Azure Logic Apps

Logic Apps hjälper dig att skapa och köra automatiserade återkommande uppgifter och processer enligt ett schema. Genom att skapa ett logikapparbetsflöde som börjar med en inbyggd upprepningsutlösare eller utlösare för skjutfönster, som är utlösare av schematyp, kan du köra aktiviteter omedelbart, vid ett senare tillfälle eller med ett återkommande intervall. Du kan anropa tjänster i och utanför Azure, till exempel HTTP- eller HTTPS-slutpunkter, skicka meddelanden till Azure-tjänster som Azure Storage och Azure Service Bus eller hämta filer som laddats upp till en filresurs. Med upprepningsutlösaren kan du också konfigurera komplexa scheman och avancerade upprepningar för att köra uppgifter. Mer information om inbyggda schemautlösare och åtgärder finns i Schemautlösare och Schemalägg åtgärder.

Tips

Du kan schemalägga och köra återkommande arbetsbelastningar utan att skapa en separat logikapp för varje schemalagt jobb och köra i gränsen för arbetsflöden per region och prenumeration. I stället kan du använda logikappmönstret som skapas av Azure-snabbstartsmallen: Logic Apps jobbschema.

Mallen Logic Apps skapar en CreateTimerJob-logikapp som anropar en logikapp för TimerJob. Du kan sedan anropa logikappen CreateTimerJob som ett API genom att göra en HTTP-begäran och skicka ett schema som indata för begäran. Varje anrop till logikappen CreateTimerJob anropar också logikappen TimerJob, som skapar en ny TimerJob-instans som kontinuerligt körs baserat på det angivna schemat eller tills den uppfyller en angiven gräns. På så sätt kan du köra så många TimerJob-instanser som du vill utan att behöva bekymra dig om arbetsflödesgränser eftersom instanser inte är enskilda definitioner eller resurser för logikapparbetsflöden.

Den här listan visar några exempeluppgifter som du kan köra med de inbyggda utlösarna Schema:

  • Hämta interna data, till exempel köra en SQL lagrad procedur varje dag.

  • Hämta externa data, till exempel hämta väderrapporter från NOAA var 15:e minut.

  • Skicka rapportdata, till exempel e-post, en sammanfattning för alla beställningar större än en viss mängd under den senaste veckan.

  • Bearbeta data, till exempel komprimera dagens uppladdade bilder varje veckodag vid låg belastning.

  • Rensa data, till exempel ta bort alla tweets som är äldre än tre månader.

  • Arkivera data, till exempel push-fakturor till en säkerhetskopieringstjänst kl. 01:00 varje dag under de kommande nio månaderna.

Du kan också använda de inbyggda åtgärderna Schema för att pausa arbetsflödet innan nästa åtgärd körs, till exempel:

  • Vänta tills en veckodag skickar en statusuppdatering via e-post.

  • Fördröj arbetsflödet tills ett HTTP-anrop har tid att slutföras innan du återupptar och hämtar resultatet.

I den här artikeln beskrivs funktionerna för de inbyggda utlösare och åtgärder som schemaläggs.

Schemautlösare

Du kan starta logikappens arbetsflöde med hjälp av upprepningsutlösaren eller skjutfönsterutlösaren, som inte är associerad med någon specifik tjänst eller ett specifikt system. Dessa utlösare startar och kör arbetsflödet baserat på din angivna upprepning där du väljer intervall och frekvens, till exempel antal sekunder, minuter, timmar, dagar, veckor eller månader. Du kan också ange startdatum och tid tillsammans med tidszonen. Varje gång en utlösare utlöses skapar Logic Apps kör en ny arbetsflödesinstans för logikappen.

Här är skillnaderna mellan dessa utlösare:

  • Upprepning: Kör arbetsflödet med jämna mellanrum baserat på ditt angivna schema. Om utlösaren missar upprepningar, till exempel på grund av avbrott eller inaktiverade arbetsflöden, bearbetar inte upprepningsutlösaren de missade upprepningarna utan startar om upprepningar med nästa schemalagda intervall.

    Om du väljer Dag som frekvens kan du ange dygnets timmar och minuter i timmen, till exempel varje dag kl. 02:30. Om du väljer Vecka som frekvens kan du även välja veckodagar, till exempel onsdag och lördag. Du kan också ange ett startdatum och en tid tillsammans med en tidszon för upprepningsschemat.

    Tips

    Om en upprepning inte anger ett visst startdatumoch en viss tid körs den första upprepningen omedelbart när du sparar eller distribuerar logikappen, trots utlösarens upprepningsinställning. För att undvika det här beteendet anger du ett startdatum och en tid för när du vill att den första upprepningen ska köras.

    Om en upprepning inte anger några andra avancerade schemaläggningsalternativ, till exempel specifika tider för att köra framtida upprepningar, baseras dessa upprepningar på den senaste körningstiden. Därför kan starttiderna för dessa upprepningar av glida på grund av faktorer som svarstid under lagringsanrop. Prova följande alternativ för att se till att logikappen inte missar en upprepning, särskilt när frekvensen är i dagar eller längre:

    • Ange startdatum och -tid för upprepningen plus de specifika tidpunkter då efterföljande upprepningar ska köras med hjälp av egenskaperna At these hours (Vid dessa timmar) och At these minutes(På dessa minuter) som endast är tillgängliga för dag- och veckofrekvenserna.

    • Använd skjutfönsterutlösareni stället för upprepningsutlösaren.

    Mer information finns i Skapa, schemalägga och köra återkommande uppgifter och arbetsflöden med upprepningsutlösaren.

  • Skjutfönster: Kör arbetsflödet med jämna mellanrum som hanterar data i kontinuerliga segment. Om utlösaren missar upprepningar, till exempel på grund av avbrott eller inaktiverade arbetsflöden, går utlösaren för skjutfönster tillbaka och bearbetar de missade upprepningarna.

    Du kan ange startdatum och starttid, tidszon och en varaktighet för att fördröja varje upprepning i arbetsflödet. Den här utlösaren stöder inte avancerade scheman, till exempel specifika timmar på dagen, minuter i timmen och veckodagar. Mer information finns i Skapa, schemalägga och köra återkommande uppgifter och arbetsflöden med skjutfönsterutlösaren.

Schemalägg åtgärder

Efter en åtgärd i logikappens arbetsflöde kan du använda åtgärderna Delay (Fördröjning) och Delay Until (Fördröjning till) för att få arbetsflödet att vänta innan nästa åtgärd körs.

Mönster för startdatum och -tid

Här är några mönster som visar hur du kan styra upprepningen med startdatum och tid och hur Logic Apps-tjänsten kör dessa upprepningar:

Starttid Upprepning utan schema Upprepning med schema (endast upprepningsutlösare)
{none} Kör den första arbetsbelastningen direkt.

Kör framtida arbetsbelastningar baserat på den senaste körningstiden.

Kör den första arbetsbelastningen direkt.

Kör framtida arbetsbelastningar baserat på det angivna schemat.

Starttid tidigare Upprepningsutlösare: Beräknar körningstider baserat på den angivna starttiden och tar bort tidigare körningstider.

Kör den första arbetsbelastningen vid nästa framtida körning.

Kör framtida arbetsbelastningar baserat på den senaste körningstiden.

Skjutfönsterutlösare: Beräknar körningstider baserat på den angivna starttiden och respekterar tidigare körningstider.

Kör framtida arbetsbelastningar baserat på den angivna starttiden.

Mer förklaring finns i exemplet efter den här tabellen.

Kör den första arbetsbelastningen tidigast starttiden, baserat på schemat som beräknas från starttiden.

Kör framtida arbetsbelastningar baserat på det angivna schemat.

Obs! Om du anger en upprepning med ett schema, men inte anger timmar eller minuter för schemat, beräknar Logic Apps framtida körningstider med hjälp av timmar respektive minuter från den första körningstiden.

Starttid nu eller i framtiden Kör den första arbetsbelastningen vid den angivna starttiden.

Upprepningsutlösare: Kör framtida arbetsbelastningar baserat på den senaste körningstiden.

Skjutfönsterutlösare: Kör framtida arbetsbelastningar baserat på den angivna starttiden.

Kör den första arbetsbelastningen tidigast starttiden, baserat på schemat som beräknas från starttiden.

Kör framtida arbetsbelastningar baserat på det angivna schemat.

Obs! Om du anger en upprepning med ett schema, men inte anger timmar eller minuter för schemat, beräknar Logic Apps framtida körningstider med hjälp av timmar respektive minuter från den första körningstiden.

Exempel för tidigare starttid och upprepning men inget schema

Anta att aktuellt datum och tid är 8 september 2017 kl. 13:00. Du anger startdatumet och startdatumet som den 7 september 2017 kl. 14:00, vilket är tidigare och en upprepning som körs varannan dag.

Starttid Aktuell tid Upprepning Schema
2017-09-07 T14:00:00Z
(2017-09-07 kl. 14:00)
2017-09-08 T13:00:00Z
(2017-09-08 kl. 13:00)
Varannan dag {none}

För upprepningsutlösaren beräknar Logic Apps-motorn körningstider baserat på starttiden, tar bort tidigare körningstider, använder nästa framtida starttid för den första körningen och beräknar framtida körningar baserat på den senaste körningstiden.

Så här ser upprepningen ut:

Starttid Första körningstiden Framtida körningstider
2017-09-07 kl. 14:00 2017-09-09 kl. 14:00 2017-09-11 kl. 14:00
2017-09-13 kl. 14:00
2017-09-15 kl. 14:00
och så vidare...

Så oavsett hur långt i det förflutna du anger starttiden, till exempel 2017-09-05 kl. 14:00 eller 2017-09-01 kl.14:00, använder din första körning alltid nästa framtida starttid.

För skjutfönsterutlösaren beräknar Logic Apps-motorn körningstider baserat på starttiden, respekterar tidigare körningstider, använder starttiden för den första körningen och beräknar framtida körningar baserat på starttiden.

Så här ser upprepningen ut:

Starttid Första körningstiden Framtida körningstider
2017-09-07 kl. 14:00 2017-09-08 kl. 13:00 (aktuell tid) 2017-09-09 kl. 14:00
2017-09-11 kl. 14:00
2017-09-13 kl. 14:00
2017-09-15 kl. 14:00
och så vidare...

Oavsett hur långt i det förflutna du anger starttiden, till exempel 2017-09-05 kl. 14:00 eller 2017-09-01 kl.14:00, använder din första körning alltid den angivna starttiden.

Upprepning för sommartid och standardtid

Återkommande inbyggda utlösare respekterar det schema som du anger, inklusive de tidszoner som du anger. Om du inte väljer en tidszon kan sommartid (DST) påverka när utlösare körs, till exempel att växla starttiden en timme framåt när DST startar och en timme bakåt när DST slutar. När du schemalägger jobb Logic Apps placerar meddelandet för bearbetning i kön och anger när meddelandet blir tillgängligt, baserat på den UTC-tid då det senaste jobbet kördes och UTC-tiden när nästa jobb schemaläggs att köras.

Se till att du väljer en tidszon för att undvika skiftet så att logikappen körs vid den angivna starttiden. På så sätt ändras ÄVEN LOGIKappens UTC-tid för att motverka den säsongsbaserade tidsändringen.

Anteckning

Utlösare som startar mellan 02.00 och 03.00 kan ha problem eftersom DST-ändringar inträffar kl. 02:00, vilket kan göra att starttiden blir ogiltig eller tvetydig. Om du har flera logikappar inom samma tvetydiga intervall kan de överlappa varandra. Därför kanske du vill undvika starttider mellan 02.00 och 03.00.

Anta till exempel att du har två logikappar som körs dagligen. En logikapp körs kl. 01:30 lokal tid, medan den andra körs en timme senare kl. 02:30 lokal tid. Vad händer med starttiderna för dessa appar när DST startar och slutar?

  • Körs utlösarna alls när tiden flyttas en timme framåt?

  • Körs utlösarna två gånger när tiden flyttas en timme bakåt?

Om de här logikapparna använder zonen UTC-6:00 Central Time (USA & Canada) visar den här simuleringen hur UTC-tiderna skiftade under 2019 för att beräkna DST-ändringarna, och flyttar en timme bakåt eller framåt efter behov så att apparna fortsätter att köras vid förväntade lokala tidpunkter utan överhoppade eller duplicerade körningar.

  • 2019-03-10: DST startar kl. 02:00, och växlar tid en timme framåt

    För att kompensera efter att DST startar flyttas UTC-tiden en timme bakåt så att logikappen fortsätter att köras samtidigt som den är lokal:

    • Logikapps-#1

      Datum Tid (lokal) Tid (UTC) Kommentarer
      03/09/2019 01:30:00 07:30:00 UTC före den dag då DST börjar gälla.
      03/10/2019 01:30:00 07:30:00 UTC är detsamma eftersom DST inte har börjat gälla.
      03/11/2019 01:30:00 06:30:00 UTC växlade en timme bakåt efter att DST hade gälla.
    • Logikapps-#2

      Datum Tid (lokal) Tid (UTC) Kommentarer
      03/09/2019 02:30:00 08:30:00 UTC före den dag då DST börjar gälla.
      03/10/2019 03:30:00* 08:30:00 DST används redan, så lokal tid har flyttats en timme framåt eftersom tidszonen UTC-6:00 ändras till UTC-5:00. Mer information finns i Utlösare som startar mellan 02.00–03.00.
      03/11/2019 02:30:00 07:30:00 UTC växlade en timme bakåt efter att DST hade gälla.
  • 2019-01-03: DST slutar kl. 02:00 och skiftar en timme bakåt

    För att kompensera flyttas UTC-tiden en timme framåt så att logikappen fortsätter att köras samtidigt som den är lokal:

    • Logikapps-#1

      Datum Tid (lokal) Tid (UTC) Kommentarer
      11/02/2019 01:30:00 06:30:00
      11/03/2019 01:30:00 06:30:00
      11/04/2019 01:30:00 07:30:00
    • Logikapps-#2

      Datum Tid (lokal) Tid (UTC) Kommentarer
      11/02/2019 02:30:00 07:30:00
      11/03/2019 02:30:00 08:30:00
      11/04/2019 02:30:00 08:30:00

Kör endast en gång

Om du bara vill köra logikappen en gång i framtiden kan du använda mallen Scheduler: Run once jobs (Schemaläggaren: Kör en gång-jobb). När du har skapat en ny logikapp men innan du öppnar Logic Apps Designer går du till avsnittet Mallar och väljer Schema i listan Kategori och väljer sedan den här mallen:

Välj mallen "Scheduler: Run once jobs" (Schemaläggare: Köra jobb en gång)

Eller om du kan starta logikappen med utlösaren When a HTTP request is received - Request (När en HTTP-begäran tas emot) och skicka starttiden som en parameter för utlösaren. För den första åtgärden använder du åtgärden Fördröj tills – Schemalägg och anger tiden för när nästa åtgärd börjar köras.

Kör en gång den sista dagen i månaden

Om du bara vill köra upprepningsutlösaren en gång den sista dagen i månaden måste du redigera utlösaren i arbetsflödets underliggande JSON-definition med hjälp av kodvyn, inte designern. Du kan dock använda följande exempel:

"triggers": {
    "Recurrence": {
        "recurrence": {
            "frequency": "Month",
            "interval": 1,
            "schedule": {
                "monthDays": [-1]
            }
        },
        "type": "Recurrence"
    }
}

Exempel på upprepningar

Här är olika exempel på upprepningar som du kan ställa in för de utlösare som stöder alternativen:

Utlösare Upprepning Intervall Frekvens Starttid Dessa dagar Vid dessa timmar Vid dessa minuter Anteckning
Återkommande
Skjutfönster
Körs var 15:e minut (inget startdatum och ingen tid) 15 Minut {none} {unavailable} {none} {none} Det här schemat startar omedelbart och beräknar sedan framtida upprepningar baserat på den senaste körningstiden.
Återkommande
Skjutfönster
Körs var 15:e minut (med startdatum och -tid) 15 Minut startDate T startTime Z {unavailable} {none} {none} Det här schemat startar inte tidigare än det angivna startdatumet och startdatumet och beräknar sedan framtida upprepningar baserat på den senaste körningstiden.
Återkommande
Skjutfönster
Körs varje timme, per timme (med startdatum och -tid) 1 Tid startDate Thh:00:00Z {unavailable} {none} {none} Det här schemat startar inte tidigare än det angivna startdatumet och starttiden. Framtida upprepningar körs varje timme med 00-minutersmarkeringen, Logic Apps beräknar från starttiden.

Om frekvensen är "Vecka" eller "Månad" körs schemat bara en dag per vecka eller en dag per månad.

Återkommande
Skjutfönster
Körs varje timme, varje dag (inget startdatum och ingen tid) 1 Tid {none} {unavailable} {none} {none} Det här schemat startar omedelbart och beräknar framtida upprepningar baserat på den senaste körningstiden.

Om frekvensen är "Vecka" eller "Månad" körs schemat bara en dag per vecka eller en dag per månad.

Återkommande
Skjutfönster
Körs varje timme, varje dag (med startdatum och -tid) 1 Tid startDate T startTime Z {unavailable} {none} {none} Det här schemat startar inte tidigare än det angivna startdatumet och startdatumet och beräknar sedan framtida upprepningar baserat på den senaste körningstiden.

Om frekvensen är "Vecka" eller "Månad" körs schemat bara en dag per vecka eller en dag per månad.

Återkommande
Skjutfönster
Körs var 15:e minut efter timmen, varje timme (med startdatum och -tid) 1 Tid startDate T00:15:00Z {unavailable} {none} {none} Det här schemat startar inte tidigare än det angivna startdatumet och starttiden. Framtida upprepningar körs med 15-minutersmarkeringen, som Logic Apps beräknar från starttiden, så kl. 00:15, 01:15, 02:15 och så vidare.
Upprepning Körs var 15:e minut efter timmen, varje timme (inget startdatum och ingen starttid) 1 Dag {none} {unavailable} 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 15 Det här schemat körs 00.15, 01.15, 02.15 och så vidare. Det här schemat motsvarar dessutom en frekvens på "Timme" och en starttid med "15" minuter.
Upprepning Kör var 15:e minut vid de angivna minutmarkeringarna (inget startdatum och ingen starttid). 1 Dag {none} {unavailable} 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 0, 15, 30, 45 Det här schemat startar inte förrän nästa angivna 15-minutersmarkering.
Upprepning Körs dagligen kl. 08:00 plus minutmarkeringen från när du sparar logikappen 1 Dag {none} {unavailable} 8 {none} Utan startdatum och starttid körs det här schemat baserat på den tid då du sparar logikappen (PUT-åtgärden).
Upprepning Körs dagligen 08:00 (med startdatum och -tid) 1 Dag startDate T08:00:00Z {unavailable} {none} {none} Det här schemat startar inte tidigare än det angivna startdatumet och starttiden. Framtida förekomster körs dagligen kl. 08:00.
Upprepning Körs dagligen kl. 08:00 (inget startdatum och ingen tid) 1 Dag {none} {unavailable} 8 00 Det här schemat körs 08:00 varje dag.
Upprepning Körs dagligen 08:00 och 16:00 1 Dag {none} {unavailable} 8, 16 0
Upprepning Körs dagligen 08.30, 08.45, 16.30 och 16.45 1 Dag {none} {unavailable} 8, 16 30, 45
Upprepning Körs varje lördag kl. 17:00 (inget startdatum och ingen tid) 1 Vecka {none} "Lördag" 17 0 Det här schemat körs varje lördag kl. 17:00.
Upprepning Körs varje lördag kl. 17:00 (med startdatum och -tid) 1 Vecka startDate T17:00:00Z "Lördag" {none} {none} Det här schemat startar inte tidigare än det angivna startdatumet och startdatumet, i det här fallet den 9 september 2017 kl. 17:00. Framtida upprepningar körs varje lördag kl. 17:00.
Upprepning Kör varje tisdag, torsdag kl. 17 plus minutmarkeringen från när du sparar logikappen 1 Vecka {none} "Tisdag", "torsdag" 17 {none}
Upprepning Körs varje timme under arbetstid. 1 Vecka {none} Välj alla dagar utom lördag och söndag. Välj de timmar på dagen som du vill ha. Välj valfria minuter i timmen. Om din arbetstid till exempel är 8:00 till 17:00 väljer du "8, 9, 10, 11, 12, 13, 14, 15, 16, 17" som timmar på dagen plus "0" som minuter i timmen.
Upprepning Kör en gång varje dag på helger 1 Vecka {none} "Saturday", "Sunday" Välj de timmar på dagen som du vill ha. Välj valfria minuter i timmen efter behov. Det här schemat körs varje lördag och söndag enligt det angivna schemat.
Upprepning Körs var 15:e minut varannan vecka endast på måndagar 2 Vecka {none} "Måndag" 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 0, 15, 30, 45 Det här schemat körs varannan måndag var 15:e minut.
Upprepning Körs varje månad 1 Månad startDate T startTime Z {unavailable} {unavailable} {unavailable} Det här schemat startar inte tidigare än det angivna startdatumet och -tiden och beräknar framtida upprepningar på startdatum och -tid. Om du inte anger något startdatum och starttid används skapandedatum och -tid i det här schemat.
Upprepning Körs varje timme för en dag per månad 1 Månad {see note} {unavailable} 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 {see note} Om du inte anger något startdatum och starttid används skapandedatum och -tid i det här schemat. Om du vill styra minuterna för upprepningsschemat anger du minuter i timmen, en starttid eller använder skapandetiden. Om starttiden eller skapandetiden till exempel är 08.25 körs schemat kl. 08.25, 09.25, 10.25 och så vidare.

Nästa steg