Rekommendationer för att utveckla bakgrundsjobb
Gäller för den här checklisterekommendationen för Power Platform välstrukturerad tillförlitlighet:
RE:05 | Stärk återhämtningen för din arbetsbelastning genom att implementera felhantering och hantering av tillfälliga fel. Bygg in funktioner i lösningen för att hantera komponentfel och tillfälliga fel. |
---|
I den här guiden beskrivs rekommendationer för hur du utvecklar bakgrundsjobb. Bakgrundsjobb körs automatiskt utan att det krävs någon användarinteraktion. Många program kräver bakgrundsjobb som körs oberoende av användargränssnittet.
Några exempel på bakgrundsjobb är batchjobb, omfattande bearbetningsuppgifter och processer som körs länge, till exempel arbetsflöden. Programmet startar jobbet och bearbetar interaktiva förfrågningar från användare.
Ett program kan till exempel behöva skapa en sammanfattning och extrahera sentiment och viktiga punkter från dokument som användare laddar upp. Ett bakgrundsjobb kan utföras för att köra AI-åtgärderna i bakgrunden och spara sammanfattningen och viktiga punkter i databasen. Användaren behöver inte vänta tills processen har slutförts. Ett annat exempel är att en användare skickar in ett utgiftsanspråk, vilket initierar ett bakgrundsarbetsflöde som behandlar utläggskravet och skickar det för godkännande. Användaren kan fortsätta och lämna ett annat utläggskrav eller lämna programmet medan bakgrundsjobbet körs. När bakgrundsjobbet är klart skickar det ett e-postmeddelande till användaren för att bekräfta att utläggsanspråken har skickats för godkännande.
Bakgrundsjobb hjälper till att minimera belastningen på programmets användargränssnitt, vilket förbättrar tillgängligheten och minskar den interaktiva svarstiden.
Viktiga designstrategier
Du kan välja vilken uppgift som ska anges som bakgrundsjobb genom att fundera på om uppgiften körs utan användarinteraktion och om användargränssnittet behöver vänta tills uppgiften har slutförts. Uppgifter som kräver att användaren eller användargränssnittet väntar medan de körs är vanligtvis inte lämpliga bakgrundsjobb.
Typer av bakgrundsjobb
Några exempel på bakgrundsjobb är:
Resurskrävande jobb som tar lång tid att slutföra, till exempel köra en serie transaktioner.
Batchjobb, till exempel nattliga datauppdateringar eller schemalagd bearbetning.
Arbetsflöden som körs länge, till exempel orderuppfyllelse eller etableringstjänster och -system.
Arbetsflöden som kräver asynkront samarbete, till exempel godkännanden.
Bearbetning av känsliga data som överför uppgiften till en säkrare plats för bearbetning. Du kanske till exempel inte vill bearbeta känsliga data i en webbapp. I stället kan du använda ett mönster som Gatekeeper-mönstret för att överföra data till en isolerad bakgrundsprocess som har åtkomst till skyddad lagring.
Utlösare
Initiera bakgrundsjobb med:
Händelsestyrda utlösare: En händelse, antingen en användaråtgärd i programmet eller en händelse som inträffar mot en datakälla, utlöser uppgiften.
Schemastyrda utlösare: Ett schema som bygger på att en timer aktiverar uppgiften. Jobbet kan schemaläggas återkommande eller för en enskild körning.
Händelsestyrda utlösare
En åtgärd utlöser ett händelsebaserat anrop som startar bakgrundsuppgiften. Exempel på händelsestyrda utlösare är:
Användargränssnittet eller ett annat jobb utlöser bakgrundsjobbet och skickar data från den utförda åtgärden till bakgrundsjobbet. En användare skickar till exempel ett utgiftsanspråk via ett formulär och formulärinformationen skickas till bakgrundsjobbet för bearbetning.
I användargränssnittet eller i ett annat jobb sparas eller uppdateras ett värde som finns i lagringsutrymme. I bakgrundsjobbet övervakas lagringsutrymmet och ändringar identifieras, till exempel när nya värden läggs till eller befintliga värden ändras, och bakgrundsjobbet utlöses utifrån den ändringen.
Användargränssnittet eller ett annat jobb begär en slutpunkt, till exempel ett HTTPS URI eller ett API som visas som en webbtjänst. Som en del av förfrågan överför UI eller jobbet de data som bakgrundsuppgiften kräver. En slutpunkt eller webbtjänst aktiverar bakgrundsuppgiften där data används som indata.
Andra exempel på händelsedrivna utlösare är ett formulär som skickas i ett program, en ny rad som läggs till i datalagret, en utlösande fras i ett handläggare som startar ett ämne som anropar ett flöde, värdet för ett fält som ändras i datalagret, ett e-postmeddelande med ett visst ämne eller från en viss avsändare som kommer till inkorgen, och en fil som laddas upp till en fillagringsplats.
Använd utlösarvillkor för att effektivisera arbetsflödena och minska antalet onödiga körningar. Utlösarvillkor anger flera villkor som måste uppfyllas innan ett arbetsflöde utlöses.
Kommentar
Se till att du använder utlösande villkor för att förhindra loopar om du som en del av arbetsflödet ändrar datakällan som startar arbetsflödet. Programmet kan till exempel ändra fält på en Microsoft Dataverse-tabellrad och arbetsflödet utför ytterligare frågor utifrån de ändrade fälten och ändrar samma rad ytterligare. Använd utlösarvillkor om du endast vill starta arbetsflödet när fält som har ändrats av programmet uppdateras, men inte några andra fält.
Schemastyrda utlösare
En timer utlöser ett schemabaserat anrop som startar bakgrundsuppgiften. Exempel på schemastyrda utlösare är:
Ett bakgrundsjobb körs dagligen eller varje vecka och utför en uppsättning åtgärder.
En separat process eller program startar en timer som anropar bakgrundsuppgiften efter en tidsfördröjning eller vid en viss tidpunkt.
Andra exempel på uppgifter som lämpar sig för schemastyrda anrop är batchbearbetningsrutiner (t.ex. uppdatering av relaterade produktlistor för kunder baserat på deras beteende nyligen), rutindatabearbetningsuppgifter (t.ex. generera ackumulerade resultat), dataanalyser för dagliga rapporter, rensning av datakvarhållning och kontroller av datakonsekvens.
Returnera resultat
Bakgrundsjobb körs asynkront i en separat process från användargränssnittet eller den process som anropade bakgrundsjobbet. Idealiska bakgrundsjobb är fire and forget-åtgärder . Körningsförloppet påverkar inte användargränssnitts- eller anroparprocessen, vilket innebär att anropandeprocessen inte väntar på att uppgifterna ska slutföras. Användargränssnittet och anropande process kan inte identifiera när uppgiften slutar.
Om du behöver en bakgrundsuppgift som kommunicerar med den anropande uppgiften för att ange förlopp eller slutförande måste du implementera en mekanism som:
Skriver ett statusindikatorvärde till ett lagringsutrymme som är tillgängligt för användargränssnitts- eller anroparuppgiften, som kan övervaka eller kontrollera det här värdet. Andra data som bakgrundsuppgiften returnerar till anroparen kan placeras i samma lagringsutrymme.
Visa ett API eller en slutpunkt från den bakgrundsuppgift som användargränssnittet eller anroparen har åtkomst till för att få statusinformation . Svaret kan innehålla de data som bakgrundsuppgiften returnerar till anroparen.
Konfigurera bakgrundsuppgiften att svara med den status eller de data som den bearbetade tillbaka till användargränssnittet.
Koordination
Bakgrundsuppgifter kan vara komplexa och kräva att flera uppgifter körs. I de här scenarierna är det vanligt att dela upp uppgiften i mindre, diskreta steg eller underaktiviteter som flera förbrukare kan köra. Flerstegsjobb är effektivare och mer flexibla eftersom enskilda steg ofta kan återanvändas i flera jobb. Det är också enkelt att lägga till, ta bort eller ändra ordningen i stegen.
Det kan vara en utmaning att koordinera flera uppgifter och steg, men det finns tre vanliga mönster som vägleder lösningen:
Bryt ned en uppgift i flera återanvändbara steg. Ett program kan krävas för att utföra olika uppgifter av olika komplexitet på den information som det behandlar. En enkel men oflexibel metod för att implementera ett sådant program är att utföra den här bearbetningen som en monolitisk modul. Men den här metoden minskar troligen möjligheterna att återanvända koden, optimera den eller återanvända den om programmet kräver delar av samma bearbetning på annat håll.
Hantera orkestreringen av stegen för en uppgift. Ett program kan utföra uppgifter som omfattar många steg, varav en del kan anropa fjärrtjänster eller komma åt fjärresurser. Ibland är de enskilda stegen oberoende av varandra, men de är orkestrerade av programlogiken som implementerar uppgiften.
Hantera återställningen för uppgiftssteg som misslyckas. Om ett eller flera av stegen misslyckas kan ett program behöva ångra arbetet som utförs av en serie steg, vilket tillsammans definierar en till slut konsekvent åtgärd.
Beaktanden för återhämtning
Skapa återhämtningsbara bakgrundsuppgifter för att tillhandahålla tillförlitliga tjänster för programmet. Tänk på följande när du planerar och utformar bakgrundsuppgifter:
Bakgrundsuppgifter måste kunna hantera omstarter utan att skada data eller införa inkonsekvens i programmet. Överväg att använda kontrollpunkter för uppgifter som körs länge eller med flera steg. Använd kontrollpunkter för att spara statusen på jobb i beständig lagring eller som meddelanden i en kö och konfigurera logik för återförsök om en åtgärd misslyckas.
När du använder köer för att kommunicera med bakgrundsuppgifter kan köerna fungera som en buffert för att lagra förfrågningar som skickas till uppgifterna medan programmet är under högre belastning än vanligt. Uppgifterna kan komma ifatt användargränssnittet under mindre upptagna perioder och användargränssnitt blockeras inte när de startas om.
Överväganden om skalning och prestanda
Bakgrundsuppgifter måste erbjuda tillräckliga prestanda för att säkerställa att de inte blockerar programmet eller fördröjer åtgärden när systemet är under belastning. Vanligtvis förbättras prestanda när du skalar de beräkningsinstanser som är värd för bakgrundsuppgifterna. När du planerar och utformar bakgrundsuppgifter bör du tänka på följande när det gäller skalbarhet och prestanda:
Bakgrundsjobb kan påverka användarupplevelsen om resultatet av bakgrundsuppgifterna presenteras för användaren. Bakgrundsjobb kan till exempel kräva att användaren väntar på ett meddelande, uppdaterar sidan eller kontrollerar uppgiftens status manuellt. Sådana beteenden kan göra användarinteraktionen mer komplex och påverka användarupplevelsen negativt. Överväg alternativ till att svara på data tillbaka till användargränssnittet, till exempel skicka ett meddelande via e-post eller Microsoft Teams, eller möjligheten att kontrollera statusuppdateringar i användargränssnittet. I vårt exempel på att skicka in utgiftsformulär, i stället för att svara med statusen tillbaka till användargränssnittet, kan du ha en sida i programmet där alla utläggsformulär som skickats in listas med deras status och möjlighet att utlösa en uppdatering.
Bakgrundsjobb kan skapa utmaningar för datasynkronisering och processkoordinering, särskilt om bakgrundsuppgifterna är beroende av varandra eller av andra datakällor. Bakgrundsjobb kan till exempel hantera problem med datakonsekvenser, konkurrenstillstånd, deadlock eller tidsgränser.
För att förhindra att prestandaförlust under belastning kan du implementera logik så att en enskild punkt i bearbetningskedjan inte orsakar en flaskhals. Överväg andra begränsningar, till exempel det maximala genomflödet av arbetsflödesåtgärder, lagringsutrymme och andra tjänster som programmet och bakgrundsuppgifter är beroende av.
Kompromiss: Bakgrundsjobb introducerar fler komponenter och beroenden till systemet, vilket kan öka komplexiteten och underhållskostnaderna för lösningen. Bakgrundsjobb kan till exempel kräva en separat övervakningstjänst och en återförsöksmekanism.
Underlätta Power Platform
I följande avsnitt beskrivs vilka tjänster du kan använda för att vara värd för, köra, konfigurera och hantera bakgrundsjobb.
Power Automate
Power Automate-molnflöden är arbetsflöden som körs i molnet. Det kan vara automatiserade flöden som utlöses av en händelse, till exempel när ett e-postmeddelande från en viss person kommer fram. Det kan vara snabbflöden som du startar med ett klick på en knapp, som en påminnelse till ditt team som du skickar från din mobila enhet. De kan vara schemalagda flöden som körs vid en viss tid, till exempel en daglig datauppladdning till SharePoint eller en databas. Du kan också automatisera repetitiva uppgifter från din stationära dator eller från mobila enheter.
Bekanta dig med begränsningarna för automatiserade och schemalagda flöden och snabbflöden när det gäller genomflöde, begäran, samtidighet, loopning och ombatchning. Se till att du tar hänsyn till dessa gränser när du utformar arbetsflödet.
Minska riskerna genom att planera för felhantering.
Här följer några exempel på var du kan använda Power Automate-flöden för att köra bakgrundsjobb:
Microsoft Dataverse
Microsoft Dataverse – beräknade kolumner och sammanslagningar:
Formelkolumner är kolumner som visar ett beräknat värde i en Microsoft Dataverse-tabell.
Beräknade kolumner automatiserar manuella beräkningar i din affärsprocess. En säljare kanske till exempel vill veta den viktade intäkten för en affärsmöjlighet, som baseras på den beräknade intäkten från en affärsmöjlighet multiplicerat med sannolikheten. Eller de vill automatiskt använda en rabatt om en order är större än ett visst belopp. En beräknad kolumn kan innehålla värden som resultatet av enkla beräkningar, eller villkorsåtgärder, till exempel "större än" eller If-Else.
Sammanslagningskolumner hjälper användare att få insyn i data genom att övervaka företagets nyckeltal. Ett sammanslagningskolumn innehåller ett samlat värde som beräknats över rader som är relaterade till en viss rad. Detta omfattar vanliga tabeller och aktivitetstabeller såsom e-postmeddelanden och avtalade tider. I mer komplexa scenarier kan du samla data över en hierarki av rader. Som administratör eller systemanpassare kan du definiera sammanslagningskolumner med hjälp av anpassningsverktygen i Power Apps, utan att behöva skriva kod.
Bakgrundsåtgärder kan skicka förfrågningar som Dataverse bearbetar asynkront. Bakgrundsåtgärder är användbara om du inte vill ha kvar en anslutning medan en förfrågan körs.
Plugin-program är anpassade händelsehanterare som körs som svar på en specifik händelse som uppstår vid bearbetning av en Microsoft Dataverse-dataåtgärd.
Microsoft Dataverse innehåller också en kraftfull lösning för effektivare dataarkitektur och för att minska arbetsbelastningen på klientsidan med hjälp av plugin-program med lågkod. De här plugin-program är återanvändbara realtidsarbetsflöden som kör en specifik uppsättning kommandon inom Dataverse, som körs på serversidan och utlöses av anpassade händelsehanterare.
Checklista för tillförlitlighet
Se den fullständiga uppsättningen med rekommendationer.