Sdílet prostřednictvím


Správa pozastavené instance

Ukázka SuspendedInstanceManagement ukazuje, jak spravovat instance pracovního postupu, které byly pozastaveny. Výchozí akce je WorkflowUnhandledExceptionBehaviorAbandonAndSuspend. To znamená, že ve výchozím nastavení nezpracované výjimky vyvolané instancí pracovního postupu hostované v instanci WorkflowServiceHost pracovního postupu způsobí, že instance bude uvolněna z paměti (opuštěné) a trvalé/trvalé verze instance, která se označí jako pozastavená. Pozastavená instance pracovního postupu nebude moci běžet, dokud nebude zrušena.

Ukázka ukazuje, jak lze nástroj příkazového řádku implementovat k dotazování na pozastavené instance a jak dát uživateli možnost obnovit nebo ukončit instanci. V této ukázce služba pracovního postupu záměrně vyvolá výjimku, což způsobí, že se pozastaví. Nástroj příkazového řádku se pak dá použít k dotazování instance a následnému obnovení nebo ukončení instance.

Demonstruje

WorkflowServiceHostWorkflowControlEndpoint a WorkflowUnhandledExceptionBehavior ve Windows Workflow Foundation (WF).

Diskuse

Nástroj příkazového řádku implementovaný v této ukázce je specifický pro implementaci úložiště instancí SQL, která se dodává v rozhraní .NET Framework 4.6.1. Pokud máte vlastní implementaci úložiště instancí, můžete tento nástroj přizpůsobit nahrazením WorkflowInstanceCommand implementací v ukázce implementacemi, které jsou specifické pro vaše úložiště instancí.

Za předpokladu, že implementace spustí příkazy SQL na úložišti instancí SQL přímo k výpisu pozastavených instancí a spoléhá na WorkflowControlEndpoint přidání do WorkflowServiceHost instance, aby bylo možné pokračovat nebo ukončit instance.

Nastavení, sestavení a spuštění ukázky

  1. Tato ukázka vyžaduje, aby byly povoleny následující součásti systému Windows:

    1. Microsoft Message Queues (MSMQ) Server

    2. SQL Server Express

  2. Nastavte databázi SQL Serveru.

    1. Z příkazového řádku sady Visual Studio spusťte příkaz "setup.cmd" z ukázkového adresáře SuspendedInstanceManagement, který provede následující kroky:

      1. Vytvoří databázi trvalosti pomocí SQL Serveru Express. Pokud už databáze trvalosti existuje, dojde k jeho vyřazení a opětovnému vytvoření.

      2. Nastaví databázi pro trvalost.

      3. Přidá SLUŽBU IIS APPPOOL\DefaultAppPool a NT AUTHORITY\Network Service do role InstanceStoreUsers, která byla definována při nastavování databáze pro trvalost.

  3. Nastavte frontu služby.

    1. V sadě Visual Studio klikněte pravým tlačítkem myši na projekt SampleWorkflowApp a klikněte na Nastavit jako spouštěný projekt.

    2. Zkompilujte a spusťte SampleWorkflowApp stisknutím klávesy F5. Tím se vytvoří požadovaná fronta.

    3. Stisknutím klávesy Enter zastavte SampleWorkflowApp.

    4. Otevřete konzolu Správa počítače spuštěním příkazu Compmgmt.msc z příkazového řádku.

    5. Rozbalte službu a aplikace, fronty zpráv, soukromé fronty.

    6. Klikněte pravým tlačítkem na frontu ReceiveTx a vyberte Vlastnosti.

    7. Vyberte kartu Zabezpečení a povolte všem, aby měli oprávnění přijímat zprávy, zobrazit zprávu a odeslat zprávu.

  4. Teď spusťte ukázku.

    1. V sadě Visual Studio znovu spusťte projekt SampleWorkflowApp bez ladění stisknutím kláves Ctrl+F5. V okně konzoly budou vytištěny dvě adresy koncových bodů: jedna pro koncový bod aplikace a pak druhá z okna konzoly WorkflowControlEndpoint. Pak se vytvoří instance pracovního postupu a v okně konzoly se zobrazí záznamy sledování této instance. Instance pracovního postupu vyvolá výjimku, která způsobí pozastavení a přerušení instance.

    2. Nástroj příkazového řádku je pak možné použít k provedení dalších akcí u některé z těchto instancí. Syntaxe argumentů příkazového řádku je následující:

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

      Podporované příkazy jsou: Query, Resumea Terminate. Přepínač InstanceId se vyžaduje pouze pro Resume operace a Terminate operace.

Vyčištění (volitelné)

  1. Otevřete konzolu Správa počítače spuštěním příkazu Compmgmt.msc.

  2. Rozbalte službu a aplikace, fronty zpráv, soukromé fronty.

  3. Odstraňte frontu ReceiveTx .

  4. Pokud chcete odebrat databázi trvalosti, spusťte cleanup.cmd.