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
Tato ukázka vyžaduje, aby byly povoleny následující součásti systému Windows:
Microsoft Message Queues (MSMQ) Server
SQL Server Express
Nastavte databázi SQL Serveru.
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:
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í.
Nastaví databázi pro trvalost.
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.
Nastavte frontu služby.
Ve Visual Studiu klikněte pravým tlačítkem na projekt SampleWorkflowApp a zvolte Nastavit jako spouštěný projekt.
Zkompilujte a spusťte SampleWorkflowApp stisknutím klávesy F5. Tím se vytvoří požadovaná fronta.
Stisknutím klávesy Enter zastavte SampleWorkflowApp.
Otevřete konzolu Správa počítače spuštěním příkazu Compmgmt.msc z příkazového řádku.
Rozbalte služby a aplikace, zasílatelství zpráv, privátní fronty.
Klikněte pravým tlačítkem na frontu ReceiveTx a vyberte Vlastnosti.
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.
Teď spusťte ukázku.
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.
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
,Resume
aTerminate
. Přepínač InstanceId se vyžaduje jenom pro operaceResume
aTerminate
.
Pro vyčištění (volitelné)
Otevřete konzolu Správa počítače spuštěním příkazu Compmgmt.msc.
Rozbalit Služby a aplikace, Fronta zpráv, Privátní fronty.
Odstraňte frontu ReceiveTx.
Pokud chcete odebrat databázi trvalosti, spusťte cleanup.cmd.