Zarządzanie wstrzymanymi wystąpieniami
W przykładzie SuspendedInstanceManagement pokazano, jak zarządzać wystąpieniami przepływu pracy, które zostały zawieszone. Domyślną akcją dla WorkflowUnhandledExceptionBehavior elementu jest AbandonAndSuspend
. Oznacza to, że domyślnie nieobsługiwane wyjątki zgłaszane z wystąpienia przepływu pracy hostowanego w obiekcie WorkflowServiceHost spowodują, że wystąpienie zostanie usunięte z pamięci (porzuconej) i trwałej/utrwalonej wersji wystąpienia, która ma zostać oznaczona jako zawieszone. Wstrzymane wystąpienie przepływu pracy nie będzie można uruchomić, dopóki nie zostanie ono otwarte.
W przykładzie pokazano, jak można zaimplementować narzędzie wiersza polecenia w celu wykonywania zapytań dotyczących wstrzymanych wystąpień oraz jak nadać użytkownikowi opcję wznowienia lub zakończenia wystąpienia. W tym przykładzie usługa przepływu pracy celowo zgłasza wyjątek, powodując zawieszenie. Narzędzie wiersza polecenia może następnie służyć do wykonywania zapytań dotyczących wystąpienia, a następnie wznawiania lub kończenie wystąpienia.
Demonstracje
WorkflowServiceHost with WorkflowUnhandledExceptionBehavior i WorkflowControlEndpoint in Windows Workflow Foundation (WF).
Dyskusja
Narzędzie wiersza polecenia zaimplementowane w tym przykładzie jest specyficzne dla implementacji magazynu wystąpień SQL dostarczanych w programie .NET Framework 4.6.1. Jeśli masz niestandardową implementację magazynu wystąpień, możesz dostosować to narzędzie, zastępując WorkflowInstanceCommand
implementacje w przykładzie implementacjami specyficznymi dla magazynu wystąpień.
Podana implementacja uruchamia polecenia SQL względem magazynu wystąpień SQL bezpośrednio w celu wyświetlenia listy zawieszonych wystąpień i opiera się na WorkflowControlEndpoint dodaniu do WorkflowServiceHost elementu w celu wznowienia lub zakończenia wystąpień.
Aby skonfigurować, skompilować i uruchomić przykład
Ten przykład wymaga włączenia następujących składników systemu Windows:
Serwer kolejek komunikatów firmy Microsoft (MSMQ)
SQL Server Express
Skonfiguruj bazę danych programu SQL Server.
W wierszu polecenia programu Visual Studio uruchom polecenie "setup.cmd" z przykładowego katalogu SuspendedInstanceManagement, który wykonuje następujące czynności:
Tworzy bazę danych trwałości przy użyciu programu SQL Server Express. Jeśli baza danych trwałości już istnieje, zostanie ona porzucona i ponownie utworzona
Konfiguruje bazę danych pod kątem trwałości.
Dodaje do roli InstanceStoreUsers rolę APPPOOL\DefaultAppPool i NT AUTHORITY\Network Service, która została zdefiniowana podczas konfigurowania bazy danych pod kątem trwałości.
Konfigurowanie kolejki usługi.
W programie Visual Studio kliknij prawym przyciskiem myszy projekt SampleWorkflowApp i kliknij polecenie Ustaw jako projekt startowy.
Skompiluj i uruchom aplikację SampleWorkflowApp, naciskając klawisz F5. Spowoduje to utworzenie wymaganej kolejki.
Naciśnij klawisz Enter , aby zatrzymać aplikację SampleWorkflowApp.
Otwórz konsolę zarządzania komputerem, uruchamiając polecenie Compmgmt.msc w wierszu polecenia.
Rozwiń węzeł Usługi i aplikacje, Kolejki komunikatów, Kolejki prywatne.
Kliknij prawym przyciskiem myszy kolejkę ReceiveTx i wybierz pozycję Właściwości.
Wybierz kartę Zabezpieczenia i zezwól wszystkim na uprawnienia do odbierania wiadomości, podglądu wiadomości i wysyłania wiadomości.
Teraz uruchom przykład.
W programie Visual Studio ponownie uruchom projekt SampleWorkflowApp bez debugowania, naciskając klawisze Ctrl+F5. Dwa adresy punktu końcowego zostaną wydrukowane w oknie konsoli: jeden dla punktu końcowego aplikacji, a następnie drugi z okna WorkflowControlEndpoint. Następnie zostanie utworzone wystąpienie przepływu pracy, a w oknie konsoli zostaną wyświetlone rekordy śledzenia dla tego wystąpienia. Wystąpienie przepływu pracy zgłosi wyjątek powodujący wstrzymanie i przerwanie wystąpienia.
Następnie narzędzie wiersza polecenia może służyć do podjęcia dalszych działań w przypadku dowolnego z tych wystąpień. Składnia argumentów wiersza polecenia jest następująca:
SuspendedInstanceManagement -Command:[CommandName] -Server:[ServerName] -Database:[DatabaseName] -InstanceId:[InstanceId]
Obsługiwane polecenia to:
Query
,Resume
iTerminate
. Przełącznik InstanceId jest wymagany tylko dlaResume
operacji iTerminate
.
Aby wyczyścić (opcjonalnie)
Otwórz konsolę zarządzania komputerem, uruchamiając polecenie Compmgmt.msc.
Rozwiń węzeł Usługi i aplikacje, Kolejki komunikatów, Kolejki prywatne.
Usuń kolejkę ReceiveTx .
Aby usunąć bazę danych trwałości, uruchom cleanup.cmd.
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla