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
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ří databázi trvalosti 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á 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.
Nastavte frontu služby.
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.
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žbu a aplikace, fronty zpráv, soukromé fronty.
Klikněte pravým tlačítkem na frontu ReceiveTx a vyberte Vlastnosti.
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.
Teď spusťte ukázku.
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.
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 pouze proResume
operace aTerminate
operace.
Vyčištění (volitelné)
Otevřete konzolu Správa počítače spuštěním příkazu Compmgmt.msc.
Rozbalte službu a aplikace, fronty zpráv, soukromé fronty.
Odstraňte frontu ReceiveTx .
Pokud chcete odebrat databázi trvalosti, spusťte cleanup.cmd.