Sdílet prostřednictvím


Pozastavená správa instancí

Ukázka SuspendedInstanceManagement ukazuje, jak spravovat instance pracovních postupů, které byly pozastaveny. Výchozí akce pro WorkflowUnhandledExceptionBehavior je AbandonAndSuspend. To znamená, že ve výchozím nastavení neošetřené výjimky vyvolané z instance pracovního postupu hostované v WorkflowServiceHost způsobí, že instance bude odstraněna z paměti (opouštěna) a její trvalá/verzovaná kopie bude označena 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

WorkflowServiceHost s WorkflowUnhandledExceptionBehavior a WorkflowControlEndpoint 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í.

Poskytnutá implementace spouští příkazy SQL přímo na úložišti instancí SQL, aby vypsala pozastavené instance a spoléhá na to, že se WorkflowControlEndpoint přidá k WorkflowServiceHost za účelem obnovení nebo ukončení instancí.

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ří perzistentní databázi 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á IIS APPPOOL\DefaultAppPool a NT AUTHORITY\Network Service do role InstanceStoreUsers, která byla definována při nastavování databáze pro perzistenci.

  3. Nastavte frontu služby.

    1. Ve Visual Studiu klikněte pravým tlačítkem na projekt SampleWorkflowApp a zvolte 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žby a aplikace, zasílatelství zpráv, privátní fronty.

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

    7. Vyberte kartu Zabezpečení a povolte všem mít oprávnění přijímat zprávy, Náhled zprávya 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ávesy Ctrl+F5. V okně konzoly budou vytištěny dvě adresy koncových bodů: jedna pro koncový bod aplikace a druhá z 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 jenom pro operace Resume a Terminate.

Pro vyčištění (volitelné)

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

  2. Rozbalit Služby a aplikace, Fronta zpráv, Privátní fronty.

  3. Odstraňte frontu ReceiveTx.

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