WorkflowPersistenceService.SaveWorkflowInstanceState Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
När den implementeras i en härledd klass sparar du arbetsflödesinstansens tillstånd i ett datalager.
protected public:
abstract void SaveWorkflowInstanceState(System::Workflow::ComponentModel::Activity ^ rootActivity, bool unlock);
protected internal abstract void SaveWorkflowInstanceState(System.Workflow.ComponentModel.Activity rootActivity, bool unlock);
abstract member SaveWorkflowInstanceState : System.Workflow.ComponentModel.Activity * bool -> unit
Protected Friend MustOverride Sub SaveWorkflowInstanceState (rootActivity As Activity, unlock As Boolean)
Parametrar
- rootActivity
- Activity
Rotaktiviteten för arbetsflödesinstansen.
- unlock
- Boolean
true om arbetsflödesinstansen inte ska vara låst. false om arbetsflödesinstansen ska vara låst.
Kommentarer
Du måste anropa en av de överlagrade Save metoderna för att serialisera rootActivity till en Stream. Du kan sedan välja att ytterligare bearbeta innan du Stream skriver det till ditt datalager. Men när arbetsflödets körningsmotor anropar LoadWorkflowInstanceStatemåste du återställa en identisk kopia av rotaktiviteten. Om du inte kan spara arbetsflödesinstansens tillstånd i datalagret bör du skicka ett PersistenceException med ett lämpligt felmeddelande.
Arbetsflödets körningsmotor tillhandahåller låsningssemantik för att begränsa åtkomsten till ett arbetsflödesinstanstillstånd som sparas i datalagret. Detta kan nås av beständighetstjänster som körs på flera värdar och pekar på samma datalager. Låssemantiken är utformade för att förhindra att beständighetstjänster som körs i två olika arbetsflödeskörningar läser in samma arbetsflödesinstans i minnet samtidigt. Beroende på vilken typ av miljö din beständighetstjänst är utformad för att stödja kan du välja om du vill stödja den här funktionen. Om du väljer att stödja körningslåsningssemantiken bör du skapa en . Om en beständig tjänst försöker spara ett arbetsflödesinstanstillstånd som tidigare har låsts av en annan beständig tjänst bör du skapa en WorkflowOwnershipException. Om unlock är truebör du låsa upp åtkomsten till arbetsflödesinstanstillståndet när du har sparat den.
LoadWorkflowInstanceState tar arbetsflödesinstansen Guid som en parameter. Därför bör du spara den här Guid. Du kan också använda detta Guid för att associera arbetsflödesinstansen med de sparade tillstånden för dess slutförda omfång. Du måste göra detta eftersom du måste kunna markera dessa slutförda omfång som onödiga när arbetsflödesinstansen är klar.
Arbetsflödets körningsmotor anropar SaveWorkflowInstanceState en sista gång när arbetsflödesinstansen har slutförts eller avslutats. GetWorkflowStatus Om är lika med Completed eller Terminatedkan du därför på ett säkert sätt ta bort arbetsflödesinstansen och alla tillhörande slutförda omfång från datalagret. Du kan också prenumerera på WorkflowCompleted händelserna eller WorkflowTerminated för att avgöra när det är säkert att ta bort poster som är associerade med arbetsflödesinstansen. Om du faktiskt tar bort posterna från datalagret beror på implementeringen.
Om du implementerar en beständig tjänst som använder ett beständigt lager bör du för att upprätthålla konsekvens med det interna tillståndet för arbetsflödeskörningsmotorn delta i batchbearbetningen av arbetsflödestransaktioner för att skjuta upp den faktiska skrivningen till ditt varaktiga lager tills en arbetsflödesincheckningsplats. Om du vill delta i batchbearbetning lägger du till ett arbetsobjekt som representerar väntande ändringar i det varaktiga arkivet WorkBatch i egenskapen och implementerar IPendingWork gränssnittet i din beständighetstjänst.