Udostępnij za pośrednictwem


Wstrzymane zarządzanie wystąpieniami

Przykład SuspendedInstanceManagement demonstruje, jak zarządzać wystąpieniami przepływu pracy, które zostały wstrzymane. Domyślną akcją WorkflowUnhandledExceptionBehavior jest AbandonAndSuspend. Oznacza to, że domyślnie nieobsługiwane wyjątki zgłaszane z wystąpienia przepływu pracy hostowanego w WorkflowServiceHost spowodują, że wystąpienie zostanie usunięte z pamięci (porzucone), a trwała wersja wystąpienia zostanie oznaczona jako zawieszona. Nie można uruchomić wstrzymanej instancji przepływu pracy, dopóki nie zostanie ona odwieszona.

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 wywołuje wyjątek, powodując zawieszenie. Narzędzie wiersza polecenia może następnie służyć do wykonywania zapytań dotyczących wystąpienia, a później do jego wznowienia lub zakończenia.

Pokazuje

WorkflowServiceHost z WorkflowUnhandledExceptionBehavior i WorkflowControlEndpoint w programie 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 implementacje WorkflowInstanceCommand w przykładzie implementacjami dostosowanymi do Twojego 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 dodanym do WorkflowServiceHost w celu wznowienia lub zakończenia wystąpień.

Aby skonfigurować, skompilować i uruchomić przykładowy program

  1. Ten przykład wymaga włączenia następujących składników systemu Windows:

    1. Serwer kolejek komunikatów firmy Microsoft (MSMQ)

    2. SQL Server Express

  2. Skonfiguruj bazę danych programu SQL Server.

    1. W wierszu polecenia programu Visual Studio uruchom polecenie "setup.cmd" z przykładowego katalogu SuspendedInstanceManagement, który wykonuje następujące czynności:

      1. Tworzy bazę danych utrwalania przy użyciu programu SQL Server Express. Jeśli baza danych trwałości już istnieje, zostanie ona porzucona i ponownie utworzona

      2. Konfiguruje bazę danych pod kątem trwałości.

      3. Dodaje IIS APPPOOL\DefaultAppPool i NT AUTHORITY\Network Service do roli InstanceStoreUsers, która została zdefiniowana podczas konfigurowania bazy danych w celu zapewnienia trwałości.

  3. Skonfiguruj kolejkę usługi.

    1. W programie Visual Studio kliknij prawym przyciskiem myszy projekt SampleWorkflowApp i kliknij Ustaw jako projekt początkowy.

    2. Skompiluj i uruchom aplikację SampleWorkflowApp, naciskając F5. Spowoduje to utworzenie wymaganej kolejki.

    3. Naciśnij wprowadź, aby zatrzymać aplikację SampleWorkflowApp.

    4. Otwórz konsolę zarządzania komputerem, uruchamiając polecenie Compmgmt.msc w wierszu polecenia.

    5. Rozwiń usługi i aplikacje, kolejkowanie komunikatów, kolejki prywatne.

    6. Kliknij prawym przyciskiem myszy kolejkę ReceiveTx i wybierz Właściwości .

    7. Wybierz kartę Security i zezwól Każdy, aby miał uprawnienia do odbierania wiadomości, podglądania wiadomościi wysyłania wiadomości.

  4. Teraz uruchom przykład.

    1. W programie Visual Studio ponownie uruchom projekt SampleWorkflowApp bez debugowania, naciskając Ctrl+F5. Dwa adresy punktu końcowego zostaną wydrukowane w oknie konsoli: jeden dla punktu końcowego aplikacji, a następnie drugi z WorkflowControlEndpoint. Następnie zostanie utworzona instancja przepływu pracy, a w oknie konsoli pojawią się zapisy śledzenia dla tej instancji. Wystąpienie przepływu pracy zgłosi wyjątek powodujący wstrzymanie i przerwanie wystąpienia.

    2. 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, Resumei Terminate. Przełącznik InstanceId jest wymagany tylko w przypadku operacji Resume i Terminate.

Aby wyczyścić (opcjonalnie)

  1. Otwórz konsolę zarządzania komputerem, uruchamiając polecenie Compmgmt.msc.

  2. Rozwiń usługi i aplikacje, rozwiń kolejkowanie komunikatów, rozwiń kolejki prywatne.

  3. Usuń kolejkę ReceiveTx.

  4. Aby usunąć bazę danych stanu trwałego, uruchom cleanup.cmd.