Delen via


Beheer van opgeschorte instanties

Het SuspendedInstanceManagement-voorbeeld laat zien hoe u werkstroomexemplaren beheert die zijn onderbroken. De standaardactie voor WorkflowUnhandledExceptionBehavior is AbandonAndSuspend. Dit betekent dat standaard niet-afgehandelde uitzonderingen die worden gegenereerd vanuit een werkstroomexemplaar dat wordt gehost in het WorkflowServiceHost, ertoe leiden dat het exemplaar uit het geheugen wordt verwijderd en verlaten, en dat de duurzame/persistente versie van het exemplaar als opgeschort wordt gemarkeerd. Een opgeschort werkstroomexemplaar kan pas worden uitgevoerd als het is hervat.

In het voorbeeld ziet u hoe een opdrachtregelprogramma kan worden geïmplementeerd om query's uit te voeren op onderbroken exemplaren en hoe de gebruiker de optie krijgt om het exemplaar te hervatten of te beëindigen. In dit voorbeeld genereert een werkstroomservice opzettelijk een uitzondering, waardoor deze wordt onderbroken. Het opdrachtregelhulpprogramma kan vervolgens worden gebruikt om de instantie op te vragen en deze te hervatten of te beëindigen.

Toont

WorkflowServiceHost met WorkflowUnhandledExceptionBehavior en WorkflowControlEndpoint in Windows Workflow Foundation (WF).

Discussie

Het opdrachtregelprogramma dat in dit voorbeeld is geïmplementeerd, is specifiek voor de implementatie van de SQL-instantiestore die wordt geleverd in .NET Framework 4.6.1. Als u een aangepaste implementatie van het exemplaararchief hebt, kunt u dit hulpprogramma aanpassen door de WorkflowInstanceCommand implementaties in het voorbeeld te vervangen door implementaties die specifiek zijn voor uw exemplaaropslag.

De opgegeven implementatie voert SQL-opdrachten rechtstreeks uit op het SQL-exemplaararchief om onderbroken exemplaren weer te geven en is afhankelijk van een WorkflowControlEndpoint toegevoegd aan de WorkflowServiceHost om de exemplaren te hervatten of te beëindigen.

Het voorbeeld instellen, compileren en uitvoeren

  1. Voor dit voorbeeld moeten de volgende Windows-onderdelen zijn ingeschakeld:

    1. Microsoft Message Queues (MSMQ)-server

    2. SQL Server Express

  2. Stel de SQL Server-database in.

    1. Voer vanaf een Visual Studio-opdrachtprompt 'setup.cmd' uit vanuit de voorbeeldmap SuspendedInstanceManagement. Dit doet het volgende:

      1. Hiermee maakt u een persistentiedatabase met behulp van SQL Server Express. Als de persistentiedatabase al bestaat, wordt deze verwijderd en opnieuw gemaakt

      2. Hiermee stelt u de database in voor persistentie.

      3. Voegt IIS APPPOOL\DefaultAppPool en NT AUTHORITY\Network Service toe aan de rol InstanceStoreUsers die is gedefinieerd bij het instellen van de database voor persistentie.

  3. Stel de servicewachtrij in.

    1. Klik in Visual Studio met de rechtermuisknop op het SampleWorkflowApp project en klik op Instellen als opstartproject.

    2. Compileer de SampleWorkflowApp en voer deze uit door op F5te drukken. Hiermee maakt u de vereiste wachtrij.

    3. Druk op Enter- om de SampleWorkflowApp te stoppen.

    4. Open de Computerbeheer-console door Compmgmt.msc uit te voeren vanaf een opdrachtprompt.

    5. Breid services en toepassingen, Message Queuing, Private Queuesuit.

    6. Klik met de rechtermuisknop op de wachtrij ReceiveTx en selecteer Eigenschappen.

    7. Selecteer het tabblad Beveiliging en laat iedereen machtigingen hebben voor Bericht ontvangen, Berichtbekijken en Bericht verzenden.

  4. Voer nu het voorbeeld uit.

    1. Voer in Visual Studio het SampleWorkflowApp-project opnieuw uit zonder foutopsporing door op Ctrl+F5-te drukken. Er worden twee eindpuntadressen afgedrukt in het consolevenster: een voor het toepassingseindpunt en vervolgens andere van de WorkflowControlEndpoint. Er wordt vervolgens een werkstroomexemplaar gemaakt en de volggegevens voor dat exemplaar worden weergegeven in het consolevenster. Het werkstroomexemplaar zal een uitzondering gooien waardoor het exemplaar wordt gepauzeerd en afgebroken.

    2. Het opdrachtregelprogramma kan vervolgens worden gebruikt om verdere actie te ondernemen op een van deze exemplaren. De syntaxis voor opdrachtregelargumenten is als volgt:

      SuspendedInstanceManagement -Command:[CommandName] -Server:[ServerName] -Database:[DatabaseName] -InstanceId:[InstanceId]

      De ondersteunde opdrachten zijn: Query, Resumeen Terminate. De InstanceId-switch is alleen vereist voor Resume- en Terminate-bewerkingen.

Opruimen (optioneel)

  1. Open de Computerbeheer-console door Compmgmt.msc uit te voeren.

  2. Uitvouwen Service en toepassingen, Message Queuing, Private Queues.

  3. Verwijder de ReceiveTx wachtrij.

  4. Als u de persistentiedatabase wilt verwijderen, voert u cleanup.cmd uit.