Del via


Anbefalinger til udvikling af baggrundsjob

Gælder for denne anbefaling af kontrolliste til velstruktureret pålidelighed i Power Platform:

RE:05 Styrk arbejdsbelastningens robusthed ved at implementere fejlhåndtering og midlertidig fejlbehandling. Opbyg funktionerne i løsningen til at håndtere komponentfejl og midlertidige fejl.

I denne vejledning beskrives anbefalingerne til udvikling af baggrundsjob. Baggrundsjob køres automatisk uden brugerinteraktion. Mange programmer kræver baggrundsjob, der kører uafhængigt af brugergrænsefladen (UI).

Af eksempler på baggrundsjob kan nævnes batchjob, intensive behandlingsopgaver og lange processer, f.eks. arbejdsprocesser. Programmet starter jobbet og behandler interaktive anmodninger fra brugere.

Et program skal f.eks. oprette en oversigt og udtrække synspunkt og nøglepunkter fra dokumenter, som brugere uploader. Der kan udføres et baggrundsjob for at køre AI-handlingerne og gemme oversigten og nøglepunkterne i databasen. Brugeren behøver ikke at vente på, at processen fuldføres. Som et andet eksempel kan en bruger indsende et udgiftskrav, som starter en baggrundsarbejdsproces, der behandler udgiftskravet og sender det til godkendelse. Brugeren kan fortsætte med at indsende et andet udgiftskrav eller forlade programmet, mens baggrundsjobbet køres. Når baggrundsjobbet er fuldført, sendes der en mail til brugeren for at bekræfte, at udgiftskravet er sendt til godkendelse.

Baggrundsjobs hjælper med at minimere belastningen på programmets brugergrænseflade, hvilket øger tilgængeligheden og reducerer den interaktive svartid.

Vigtigste designstrategier

Hvis du vil vælge, hvilken opgave der skal angives som et baggrundsjob, skal du overveje, om opgaven skal køre uden brugerinteraktion, og om brugergrænsefladen skal vente på, at opgaven fuldføres. Opgaver, der kræver, at brugeren eller brugergrænsefladen skal vente, mens de køres, er som regel ikke relevante baggrundsjob.

Typer af baggrundsjob

Nogle eksempler på baggrundsjob:

  • Ressourcekrævende job, der tager lang tid at udføre, f.eks. at køre en række transaktioner.

  • Batchjob, f.eks. opdateringer af data om natten eller planlagt behandling.

  • Langvarige arbejdsprocesser, f.eks. opfyldelse af ordrer eller klargøring af tjenester og systemer.

  • Arbejdsprocesser, der kræver asynkront samarbejde, f.eks. godkendelser.

  • Behandling af følsomme data, der overfører opgaven til et mere sikkert sted til behandling. Du vil f.eks. ikke behandle følsomme data i en webapp. Du kan i stedet bruge et mønster som f.eks. mønsteret for Gatekeeper, til at overføre dataene til en isoleret baggrundsproces, der har adgang til beskyttet lager.

Udløsere

Start baggrundsjob med:

  • Hændelsesbaserede udløsere: En hændelse, enten en brugerhandling i programmet eller en hændelse, der indtræffer mod en datakilde, udløser opgaven.

  • Planlægningsbaserede udløsere: En tidsplan, der er baseret på en timer, aktiverer opgaven. Jobbet kan planlægges på et tilbagevendende grundlag eller for en enkelt kørsel.

Hændelsesbaserede udløsere

En handling udløser en hændelsesbaseret aktivering, der starter baggrundsopgaven. Eksempler på hændelsesbaserede udløsere omfatter:

  • Brugergrænsefladen eller et andet job udløser baggrundsjobbet og overfører data fra den udførte handling til baggrundsjobbet. En bruger sender f.eks. et udgiftskrav via en formular, og formularoplysningerne overføres til baggrundsjobbet til behandling.

  • Brugergrænsefladen eller et andet job gemmer eller opdaterer en værdi, der findes på lager. I baggrundsjobbet overvåges lagerpladsen, og der registreres ændringer, f.eks. nye værdier, der tilføjes, eller eksisterende værdier, der ændres, og baggrundsjobbet udløses på baggrund af denne ændring.

  • Brugergrænsefladen eller et andet job foretager en anmodning til en slutpunkt, f.eks. en HTTPS-URI eller en API, der bliver vist som en webtjeneste. Som en del af anmodningen overfører brugergrænsefladen eller jobbet de data, som baggrundsopgaven kræver. Slutpunktet eller webtjenesten aktiverer baggrundsopgaven, som bruger dataene som input.

Andre eksempler på hændelsesdrevne udløsere omfatter en formular, der sendes i en applikation, en ny række, der føjes til datalageret, en udløsersætning i en agent start af et emne, der kalder et flow, værdien af et felt, der ændres i datalageret, en mail med et bestemt emne eller fra en bestemt afsender, der ankommer til indbakken, og en fil, der uploades til en fillagringsplacering.

Brug udløserbetingelser til at strømline arbejdsprocesserne og reducere antallet af unødvendige kørsler. Udløserbetingelser konfigurerer flere betingelser, der skal være opfyldt, før en arbejdsproces udløses.

Bemærk

Sørg for at bruge udløserbetingelser til at forhindre endeløse løkker, hvis du som en del af arbejdsprocessen ændrer den datakilde, der starter arbejdsprocessen. Programmet kan f.eks. ændre felter i en Microsoft Dataverse-tabelrække, og arbejdsprocessen udfører flere forespørgsler på baggrund af de ændrede felter og redigerer yderligere den samme række. Brug udløserbetingelser til kun at starte arbejdsprocessen, når felter, der ændres af programmet, opdateres, men ikke andre felter.

Planlagte udløsere

En selvudløser udløser en planlagt aktivering, der starter baggrundsopgaven. Eksempler på planlagte udløsere omfatter:

  • Et baggrundsjob køres dagligt eller ugentligt og udfører et sæt handlinger.

  • En separat proces eller et separat program starter en selvudløser, der aktiverer baggrundsopgaven efter en forsinkelse eller på et bestemt tidspunkt.

Af andre eksempler på opgaver, der er egnede til planlægningsbaseret aktivering, kan nævnes rutiner til batchbehandling (f.eks. opdatering af lister over relaterede produkter for kunder på baggrund af deres seneste handlinger), rutineprægede databehandlingsopgaver (f.eks. generering af akkumulerede resultater), dataanalyser til daglige rapporter, oprydning i forbindelse med bevarelse af data og kontrol af ensartede data.

Returnere resultater

Baggrundsjob køres asynkront i en anden proces end brugergrænsefladen eller den proces, der har startet baggrundsjobbet. Baggrundsjob er ideelt set her og nu-handlinger. Status for deres kørsel har ingen indflydelse på brugergrænsefladen eller opkaldsprocessen, hvilket betyder, at opkaldsprocessen ikke venter på, at opgaverne fuldføres. Brugergrænsefladen og opkaldsprocessen kan ikke registrere, hvornår opgaven slutter.

Hvis du har brug for en baggrundsopgave til at kommunikere med den kaldende opgave for at angive status eller fuldførelse, skal du implementere en mekanisme som:

  • Skriv en statusindikatorværdi til lager, der er tilgængeligt for brugergrænsefladen eller den kaldendes opgave, som kan overvåge eller kontrollere denne værdi. Andre data, som baggrundsopgaven returnerer til den kaldende, kan placeres i det samme lager.

  • Eksponer et API eller slutpunkt fra baggrundsopgaven, som brugergrænsefladen eller den kaldende har adgang til for at få statusoplysninger. Svaret kan omfatte de data, som baggrundsopgaven returnerer til den kaldende.

  • Konfigurer baggrundsopgaven til at svare med den status eller de data, den har behandlet, på brugergrænsefladen.

Koordinering

Baggrundsopgaver kan være komplekse og kræve, at der køres flere opgaver. I disse scenarier er det almindeligt at opdele opgaven i mindre separate trin eller underopgaver, som flere brugere kan køre. Job med flere trin er mere effektive og fleksible, fordi individuelle trin ofte kan genbruges i flere job. Det er også nemt at tilføje, fjerne eller ændre trinnenes rækkefølge.

Det kan være en udfordring at koordinere flere opgaver og trin, men der findes tre almindelige mønstre, der vejleder din løsning:

  • Opdel en opgave i flere trin, der kan genbruges. Et program kan være påkrævet for at udføre forskellige opgaver af forskellig kompleksitet på de oplysninger, der behandles. En letforståelig, men ukompliceret fremgangsmåde til implementering af et sådant program er at udføre denne behandling som et monolitisk modul. Men denne fremgangsmåde vil sandsynligvis reducere mulighederne for at omstrukturere koden, optimere den eller genbruge den, hvis programmet kræver dele af den samme behandling andre steder.

  • Administrer orkestreringen af trinnene for en opgave. Et program kan udføre opgaver, der består af mange trin, hvoraf nogle kan aktivere fjerntjenester eller få adgang til fjernressourcer. Undertiden er de enkelte trin uafhængige af hinanden, men de er orkestreret af den programlogik, der implementerer opgaven.

  • Administrer gendannelsen for opgavetrin, der mislykkes. Hvis et eller flere trin mislykkes, skal et program måske fortryde det arbejde, der udføres i en række trin, og som tilsammen definerer en handling, der i sidste ende er konsekvent.

Overvejelser om robusthed

Opret robuste baggrundsopgaver, der sikrer, at programmet kan yde pålidelig service. Når du planlægger og designer baggrundsopgaver, skal du overveje følgende:

  • Baggrundsopgaver skal problemfrit håndtere genstarter uden at beskadige data eller indføre uoverensstemmelse i programmet. I forbindelse med langvarige opgaver eller opgaver med flere trin skal du overveje at bruge kontrolpunkter. Brug kontrolpunkter til at gemme jobtilstanden i vedvarende lager eller som meddelelser i en kø, og konfigurer gentagelseslogik i tilfælde af uventede fejl i en handling.

  • Når du bruger køer til at kommunikere med baggrundsopgaver, kan køerne fungere som en buffer til opbevaring af forespørgsler, der sendes til opgaverne, mens programmet er over den sædvanlige belastning. Opgaverne kan indhente brugergrænsefladen i mindre travle perioder, og genstarter blokerer ikke brugergrænsefladen.

Overvejelser om skalering og ydeevne

Baggrundsopgaver skal have en tilstrækkelig ydeevne for at sikre, at de ikke blokerer programmet eller forsinker handlingen, når systemet er under belastning. Ydeevnen forbedres typisk, når du skalerer de beregningsforekomster, der er vært for baggrundsopgaverne. Når du planlægger og designer baggrundsopgaver, skal du overveje følgende punkter vedrørende skalerbarhed og ydeevne:

  • Baggrundsjob kan påvirke brugeroplevelsen, hvis resultaterne af baggrundsopgaverne vises for brugeren. Baggrundsjob kan f.eks. kræve, at brugeren skal vente på en meddelelse, opdatere siden eller manuelt kontrollere opgavens status. Disse funktionsmåder kan gøre brugerinteraktionen mere kompleks og have en negativ indvirkning på brugeroplevelsen. Overvej alternativer til at sende svardata tilbage til brugergrænsefladen, f.eks. sende en meddelelse via mail eller Microsoft Teams, eller herunder mulighed for at søge efter statusopdateringer i brugergrænsefladen. I eksemplet med at afsende udgiftsformularer i stedet for at sende statussen tilbage til brugergrænsefladen kan du have en side i programmet, hvor alle sendte udgiftsformularer vises med statussen og mulighed for at udløse en opdatering.

  • Baggrundsjob kan skabe udfordringer i forbindelse med datasynkronisering og proceskoordinering, især hvis baggrundsopgaverne afhænger af hinanden eller af andre datakilder. Baggrundsjob kan f.eks. håndtere problemer med dataensartethed, køer, baglåse eller timeout.

  • Du kan forhindre tab af ydeevnen under belastning ved at implementere logik, så et enkelt punkt i behandlingskæden ikke medfører en flaskehals. Overvej andre begrænsninger, f.eks. det maksimale gennemløb af arbejdsproceshandlinger, lagerplads og andre tjenester, som programmet og baggrundsopgaverne er afhængige af.

Tradeoff: Baggrundsjobs introducerer flere komponenter og afhængigheder i systemet, hvilket kan øge kompleksiteten og vedligeholdelsesomkostningerne i løsningen. Baggrundsjob kan f.eks. kræve en separat overvågningstjeneste og gentagelsesmekanisme.

Power Platform-processtyring

I følgende afsnit beskrives de tjenester, du kan bruge til at hoste, køre, konfigurere og administrere baggrundsjob.

Power Automate

Power Automate-cloudflows er arbejdsprocesser, der kører i clouden. De kan være automatiserede flows, der udløses af en hændelse, f.eks. ankomsten af en mail fra en bestemt person. Det kan være øjeblikkeligt flow, som du starter med et klik på en knap, f.eks. en påmindelse til dit team om, at du sender fra mobilenheden. De kan være planlagte flows, der kører på et bestemt tidspunkt, f.eks. en daglig dataoverførsel til SharePoint eller en database. Du kan også automatisere rutineopgaver fra skrivebordet eller mobilenheden.

Bliv fortrolig med grænseværdierne for automatiserede, planlagte og øjeblikkelige flows med hensyn til gennemløb, anmodning, samtidighed, løkke og fjernelse af batchinddeling. Sørg for at tage højde for disse begrænsninger, når du designer arbejdsprocessen.

Reducer risikoen ved at planlægge fejlhåndtering.

Her er nogle eksempler på, hvor du kan bruge Power Automate flow til at køre baggrundsjob:

Microsoft Dataverse

Microsoft Dataverse-beregnede kolonner og akkumuleringer:

  • Formelkolonner er kolonner, der viser en beregnet værdi i en Microsoft Dataverse-tabel.

  • Beregnede kolonner automatiserer manuelle beregninger, du bruger i dine forretningsprocesser. En sælger vil f.eks. vide den vægtede omsætning for en salgsmulighed, der er baseret på den forventede omsætning fra en salgsmulighed, ganget med sandsynligheden. Eller de vil automatisk gøre brug af en rabat, hvis en ordre er større end et vist beløb. En beregnet kolonne kan indeholde værdier, der f.eks. er resultatet af enkle regneoperationer, eller betingede operationer som f.eks. større end eller if-else m.fl.

  • Akkumuleringskolonner hjælper brugerne med at få indsigt i data ved at overvåge vigtige virksomhedsmål. En akkumuleringskolonne indeholder en samlet værdi, der er beregnet for de rækker, der er relateret til en bestemt række. Dette omfatter almindelige tabeller og aktivitetstabeller, f.eks. mails og aftaler. I mere komplekse scenarier, kan du samle dataene over hierarkiet af rækker. Som administrator eller systemtilpasser kan du definere akkumuleringskolonner ved hjælp af tilpasningsværktøjerne i Power Apps, uden at en udvikler skal skrive kode.

Baggrundshandlinger kan sende forespørgsler, som Dataverse behandler asynkront. Baggrundshandlinger er nyttige, når du ikke vil opretholde en forbindelse, mens en forespørgsel køres.

Plug-ins er brugerdefinerede hændelseshandlere, der køres som svar på en bestemt hændelse, der opstår under behandling af en Microsoft Dataverse-datahandling.

Microsoft Dataverse har også en effektiv løsning til at opnå en mere effektiv dataarkitektur og reducere arbejdsbelastning på klientsiden via plug-ins med low-code. Disse plug-ins kan genbruges i realtid og udføre et bestemt sæt kommandoer i Dataverse, der kører på serversiden og udløses af tilpassede hændelseshandlere.

Kontrolliste for bæredygtighed

Se det fuldstændige sæt anbefalinger.