Pipeline for hændelseskørsel
Udgivet: november 2016
Gælder for: Dynamics CRM 2015
Undersystemet til objektbehandling i Microsoft Dynamics 365 kører plug-ins baseret på en kørselsmodel til meddelelsespipelines. En brugerhandling i Microsoft Dynamics 365-webprogrammet eller et SDK-metodekald fra en plug-in eller andre programmer resulterer i, at der sendes en meddelelse til organisationens webtjeneste. Meddelelsen indeholder forretningsobjektoplysninger og oplysninger om kernehandlinger. Meddelelsen sendes via hændelsens kørselspipeline, hvor den kan læses eller ændres af platformens kernehandlinger og eventuelle registrerede plug-ins.
Bemærk
Mens der er flere webtjenester, som hostes af Microsoft Dynamics 365- platformen, er det kun hændelser, der udløses af organisations- og OData-slutpunkter, som kan igangsætte kørsel af plug-ins.
Dette emne indeholder
Arkitektur og relaterede komponenter
Pipelinefaser
Meddelelsesbehandling
Registrering af plug-in
Inkludering i databasetransaktioner
Arkitektur og relaterede komponenter
I illustrationen nedenfor ses den overordnede arkitektur i Microsoft Dynamics 365-platformen for både synkron og asynkron hændelsesbehandling.
Diagram for synkron og asynkron hændelsesbehandling
Hændelseskørselspipelines behandler hændelser synkront eller asynkront. Platformens kernehandlinger og eventuelle plug-ins, der er registreret for synkron kørsel, køres straks. Synkrone plug-ins, der er registreret for hændelsen, køres i en veldefineret rækkefølge. Plug-ins, der er registreret til asynkron kørsel, sættes i kø af den asynkrone køagent og køres på et senere tidspunkt af den asynkrone tjeneste.
Vigtigt
Uanset om en plug-in køres synkront eller asynkront, er der en 2 minutters tidsbegrænsning på kørslen af en (meddelelses)anmodning. Hvis kørslen af din plug-in logik overskrider tidsgrænsen, opstår der System.TimeoutException. Hvis en plug-in behøver mere behandlingstid end perioden på 2 minutter, kan du overveje at bruge en arbejdsproces eller en anden baggrundsproces til at udføre den ønskede opgave. Denne frist på 2 minutter gælder kun for plug-ins, der er registreret til at køre under delvis tillid, også kaldet sandbox.Flere oplysninger:Plug-in-isolation, -tillidsforhold og -statistik.
Pipelinefaser
Hændelsespipelinen er opdelt i flere faser, hvoraf 4 kan registrere brugerudviklede plug-ins eller tredjepartsplug-ins. Flere plug-ins, der er registreret i hver enkelt fase, kan arrangeres (rangordnes) yderligere i den pågældende fase under registrering af plug-in.
Hændelse |
Fasenavn |
Fasenummer |
Beskrivelse |
||
---|---|---|---|---|---|
Hændelse før |
Startvalidering |
10 |
Fase i pipelinen for plug-ins, der skal køres før den primære handling i systemet. Plug-ins, der er registreret i denne fase, kan køres uden for databasetransaktionen.
|
||
Hændelse før |
Starthandling |
20 |
Fase i pipelinen for plug-ins, der skal køres før den primære handling i systemet. Plug-ins, der er registreret i denne fase, køres i databasetransaktionen. |
||
Kernehandling på platform |
MainOperation |
30 |
Primær handling på systemet under transaktionen, f.eks. oprettelse, opdatering, sletning osv. Ingen brugerdefinerede plug-ins kan registreres i denne fase.Kun til intern brug. |
||
Hændelse efter |
Efterfølgende handling |
40 |
Fase i pipelinen for plug-ins, der skal køres efter den primære handling. Plug-ins, der er registreret i denne fase, køres i databasetransaktionen. |
Meddelelsesbehandling
Når programkode eller en arbejdsproces starter en Microsoft Dynamics 365-webtjenestemetode, sker der en tilstandsændring i systemet, der udløser en hændelse. De oplysninger, der overføres som en parameter til webtjenestemetoden, pakkes internt i en OrganizationRequest-meddelelse og behandles af pipelinen. Oplysningerne i OrganizationRequest-meddelelsen sendes til den første plug-in, der er registreret for denne hændelse, hvor de kan læses eller ændres, før de sendes til næste registrerede plug-in til hændelsen og så videre. Plug-ins modtager meddelelsesoplysningerne i form af kontekst, der sendes til deres Execute-metode. Meddelelsen sendes også til platformens kernehandling.
Registrering af plug-in
Plug-ins kan registreres til kørsel før eller efter kernehandlingen på platformen. Plug-ins med registrerede før-hændelser modtager OrganizationRequest-meddelelsen først og kan redigere meddelelsesoplysningerne, før meddelelsen sendes til kernehandlingen. Når kernehandlingen på platformen er fuldført, omtales meddelelsen derefter som OrganizationResponse. Svaret sendes til de registrerede efter-hændelses-plug-ins. Efter-hændelses-plug-ins kan ændre meddelelsen, før der sendes en kopi af svaret til alle registrerede asynkrone plug-ins. Til sidst bliver svaret returneret til det program eller den arbejdsproces, der startede det oprindelige metodekald til webtjenesten.
Da en enkelt Microsoft Dynamics 365-server kan være vært for mere end én organisation, er kørselspipelinen organisationsbestemt. Der er en virtuel pipeline for hver organisation. Plug-ins, der er registreret i pipelinen, kan kun behandle virksomhedsdata for en enkelt organisation. En plug-in, der er udviklet til at arbejde med flere organisationer, skal være registreret i hver organisations kørselspipeline.
Inkludering i databasetransaktioner
Plug-ins kan eller kan ikke køres i databasetransaktionen for Microsoft Dynamics 365-platformen. Om en plug-in er en del af transaktionen afhænger af, hvordan meddelelsesanmodningen behandles af pipelinen. Du kan kontrollere, om denne plug-in kører i transaktionen, ved at læse IsInTransaction-egenskaben, der nedarves af IPluginExecutionContext, som sendes til plug-in'en. Hvis en plug-in kører i databasetransaktionen og tillader, at en undtagelse sendes tilbage til platformen, rulles hele transaktionen tilbage. Fase 20 og 40 garanteres at være en del af databasetransaktionen, mens fase 10 kan være en del af transaktionen.
Alle registrerede plug-ins, der køres under databasetransaktionen, og som sender en undtagelse tilbage til platformen, annullerer kernehandlingen. Dette resulterer i tilbagerulning af kernehandlingen. Desuden køres eventuelle registrerede plug-ins for før-hændelser eller efter-hændelser, der endnu ikke er kørt, og eventuelle arbejdsprocesser, der udløses af den samme hændelse, som plug-in'en blev registreret for, ikke.
Se også
Introduktion til hændelsesstrukturen
Plug-in-isolation, -tillidsforhold og -statistik
Registrere og installere plug-ins
Asynkron tjeneste i Microsoft Dynamics CRM 2015
© 2017 Microsoft. Alle rettigheder forbeholdes. Ophavsret