WorkflowPersistenceService.SaveWorkflowInstanceState Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Wanneer deze wordt geïmplementeerd in een afgeleide klasse, wordt de status van het werkstroomexemplaren opgeslagen in een gegevensarchief.
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)
Parameters
- rootActivity
- Activity
De hoofdactiviteit van het werkstroomexemplaren.
- unlock
- Boolean
true als het werkstroomexemplaren niet mogen worden vergrendeld; false als het werkstroomexemplaren moeten worden vergrendeld.
Opmerkingen
U moet een van de overbelaste Save methoden aanroepen om te serialiseren rootActivity in een Stream. U kunt er vervolgens voor kiezen om de Stream gegevensopslag verder te verwerken voordat u deze naar uw gegevensarchief schrijft. Wanneer de runtime-engine van de werkstroom echter aanroept LoadWorkflowInstanceState, moet u een identieke kopie van de hoofdactiviteit herstellen. Als u de status van het werkstroomexemplaren niet kunt opslaan in uw gegevensarchief, moet u een PersistenceException met een geschikt foutbericht werpen.
De runtime-engine van de werkstroom biedt semantiek voor het vergrendelen van de toegang tot een werkstroomexemplarenstatus die wordt opgeslagen in het gegevensarchief. Dit kan worden geopend door de persistentieservices die op meerdere hosts worden uitgevoerd en verwijzen naar hetzelfde gegevensarchief. De semantiek voor vergrendelingen is ontworpen om persistentieservices te voorkomen die worden uitgevoerd in twee verschillende werkstroomruntimes om hetzelfde werkstroomexemplaren tegelijkertijd in het geheugen te laden. Afhankelijk van het type omgeving dat uw persistentieservice is ontworpen ter ondersteuning, kunt u kiezen of u deze functionaliteit wilt ondersteunen. Als u ervoor kiest de semantiek voor runtimevergrendeling te ondersteunen, moet u een fout genereren WorkflowOwnershipExceptionals een persistentieservice probeert een werkstroomexemplarenstatus op te slaan die eerder is vergrendeld door een andere persistentieservice. Als unlock dat het geval is true, moet u de toegang tot de status van het werkstroomexemplaren ontgrendelen nadat u deze hebt opgeslagen.
LoadWorkflowInstanceState neemt het Guid werkstroomexemplaren als parameter. Daarom moet u dit Guidopslaan. U kunt dit Guid ook gebruiken om het werkstroomexemplaren te koppelen aan de opgeslagen statussen van de voltooide bereiken. U moet dit doen omdat u deze voltooide bereiken als overbodig moet kunnen markeren wanneer het werkstroomexemplaren zijn voltooid.
De runtime-engine van de werkstroom roept SaveWorkflowInstanceState een laatste tijd aan wanneer het werkstroomexemplaren is voltooid of beëindigd. GetWorkflowStatus Als dit gelijk is aan Completed ofTerminated, kunt u het werkstroomexemplaar en alle bijbehorende voltooide bereiken veilig verwijderen uit uw gegevensarchief. U kunt zich ook abonneren op de WorkflowCompleted of WorkflowTerminated gebeurtenissen om te bepalen wanneer het veilig is om records te verwijderen die zijn gekoppeld aan het werkstroomexemplaar. Of u de records daadwerkelijk uit uw gegevensarchief verwijdert, is afhankelijk van uw implementatie.
Als u een persistentieservice implementeert die gebruikmaakt van een duurzame opslag, moet u deelnemen aan werkstroomtransactiebatches om de consistentie met de interne status van de werkstroomruntime-engine te behouden om de werkelijke schrijfbewerking uit te stellen naar uw duurzame archief totdat een werkstroomdoorvoerpunt is. Als u wilt deelnemen aan batchverwerking, voegt u een werkitem toe dat de in behandeling zijnde wijzigingen in uw duurzame archief aan de WorkBatch eigenschap vertegenwoordigt en implementeert u de IPendingWork interface in uw persistentieservice.