Przejdź do głównej zawartości

Baza danych procesów


Procesy działają w oparciu o własne tabele w bazie danych biznesowych – transakcje tworzone przez maszynę stanów obejmują dane biznesowe przetwarzane przez operacje w procesie oraz persystencję. Pozostałe dane (aktywacja, moniotorwanie i lockowanie, tracking, zadania) związane z procesami zapisywane są odrębnymi transakcjami. Szczegółowe informacje dotyczące danych przechowywanych w konkretnych kolumnach wymienionych poniżej tabel można znaleźć w opisach tych kolumn w bazie danych. Instancje procesów w bazie danych identyfikowane są przez identyfikator typu uniqueidentifier.

Aktywacja, monitorowanie i lockowanie

  1. WORKFLOW_ACTIVATION_REQUEST – zawiera dane związane z aktywacją (zleceniem utworzenia instancji procesu) takie jak wersja definicji procesu, parametry wejściowe, kontekst uruchomienia (instancja rodzica, właściciel i host, typ uruchomienia InProc/Remote, itp.)
  2. WORKFLOW_MONITOR – zawiera dane związane z monitorowaniem i blokowaniem instancji takie jak status, data blokady, pieczęć wątku wykonawcy, wyjątek, operacja wyjątku itp.

Persystencja

  1. WORKFLOW_INSTANCE – zawiera informacje o stanie procesu takie jak nazwa stanu, wartości zmiennych procesu (w postaci XML oraz danych identyfikujących powiązane dane biznesowe, identyfikator aktora itp.). Dane w tej tabeli zapisywane są w transakcji głównej procesu dedykowanej dla kolejnych operacji wykonywanych pomiędzy stanami.
  2. WORKFLOW_DEFINITION_SNAPSHOT – zawiera migawki (snapshoty) definicji uruchamianych procesów.

Tracking

  1. WORKFLOW_TRACKING – zawiera informacje o wszystkich zdarzeniach mających miejsce podczas wykonywania procesu (rozpoczęcie, zakończenie procesu, operacji, wyjątki, przejścia, akcje sterujące z zewnątrz, itp.)
  2. WORKFLOW_TRACKING_DATA – zawiera dodatkowe, szczegółowe informacje zapisywane podczas wykonywania operacji takie jak dane wejściowe, wyjściowe, zmienne, błędy

Zadania, NLB

  1. WORKFLOW_WORKER_TASK – tabela dedykowana dla potrzeb przesyłania zadań do wykonania przez usługę Workflow.Host
  2. WORKFLO\_COMPONENT– tabela zawierająca listę komponentów w infrastrukturze NLB Workflow

Oprócz powyższych tabel w bazie danych zostały utworzone widoki ułatwiające wgląd w dane o procesach:

  1. Słowniki (widoki przedstawiające liczbowo zapisane wartości statusów, typów itd. w formie przyjaznej)
  • vwActivationStatus– statusy aktywacji procesu

  • vwComponentType– typy komponentów w infrastrukturze NLB Workflow

  • vwExecutionStatus– statusy procesu w monitorze i w operacji trackingu

  • vwInvokeType– typy aktywacji procesu

  • vwTaskPriority– priorytety zadań

  • vwTaskStatus– statusy zadań

  • vwTaskType– typy zadań

  1. Aktywacja, monitorowanie i lockowanie
  • vwWorkflowActivationRequest – widok na tabelę aktywacji z dołączonymi słownikami
  • vwWorkflowMonitor – widok na tabelę monitora z dołączonymi słownikami
  1. Persystencja
  • vwWorkflowInstance – widok na tabelę persystencji z dołączonymi słownikami
  • vwWorkflowInstanceData - widok na tabelę persystencji z dołączonymi słownikami oraz z wartościami sperzystowanych zmiennych w XML w postaci tabelarycznej
  • vwWorkflowDefinitionSnapshot – widok na tabelę snapshot z definicją w formie XML
  1. Tracking
  • vwWorkflowTracking – widok na tabelę trackingu z dołączonymi słownikami
  • vwWorkflowTrackingData – widok na tabelę trackingu z dołączonymi słownikami i danymi szczegółowymi
  • vwWorkflowEvents – widok prezentujący zdarzenia w trackingu dotyczące całego procesu
  • vwWorkflowOperations – widok prezentujący zdarzenia w trackingu dotyczące poszczególnych operacji w procesie
  • vwWorkflowExecutions – widok prezentujący zdarzenia w procesie z podziałem na iteracje
  1. Zadania, NLB
  • vwWorkflowWorkerTask - widok na tabelę zadań z dołączonymi słownikami
  • vwWorkflowComponent - widok na tabelę komponentów z dołączonymi słownikami
  1. Statystyki
  • vwWorkflowStatistics – widok prezentujący statystyki ilościowe procesów w formie tabelarycznej z podziałem na typy procesu, typy aktywacji i statusy procesu
  • vwWorkflowActivationStatistics – widok prezentujący statystyki ilościowe aktywacji procesów w formie tabelarycznej z podziałem na typy procesu, typy aktywacji i statusy aktywacji

image

Procedury bazodanowe​

Procesy udostępniają szereg procedur składowanych, które pozwalają w łatwy sposób zarządzać pojedynczymi instancjami procesów jak i wykonywać na nich operacje masowe. Procedury, których zadaniem jest zmiana statusu pojedynczego procesu zwracają informację o powodzeniu wykonania danej akcji w postaci informacji o nowym statusie lub w przypadku niepowodzenia zwracają aktualny status procesu (lub NULL jeśli podano nieistniejący identyfikator instancji).

Dostępne procedury:

[dbo].[AbortWorkflowInstance] - Przerywanie procesu (możliwe w statusach Created, Idle, Running, Stopping). Procedura zwraca status instancji po zmianie:

  • (Created,Idle) => Aborted
  • (Running, Stopping) => Aborting
  • (Inny) => (Inny)
  • Proces nie istnieje => NULL
DECLARE @WorkflowInstanceId uniqueidentifier

-- TODO: Set parameter values here.

EXECUTE [dbo].[AbortWorkflowInstance]

@WorkflowInstanceId

GO

[dbo].[StopWorkflowInstance] - Zatrzymywanie procesu (możliwe w statusach Created, Idle, Running). Procedura zwraca status instancji po zmianie:

  • (Created,Idle) => Stopped
  • (Running) => Stopping
  • (Inny) => (Inny)
  • Proces nie istnieje => NULL
DECLARE @WorkflowInstanceId uniqueidentifier

-- TODO: Set parameter values here.

EXECUTE [dbo].[StopWorkflowInstance]

@WorkflowInstanceId

GO

[dbo].[DestroyWorkflowInstance] - Niszczenie procesu (możliwe w statusach Completed, Exception, Stopped, Aborted). Procedura zwraca:

  • 1 – Proces usunięty całkowicie
  • 0 – Proces nie istnieje lub nie został usunięty
DECLARE @WorkflowInstanceId uniqueidentifier

-- TODO: Set parameter values here.

EXECUTE [dbo].[DestroyWorkflowInstance]

@WorkflowInstanceId

GO

[dbo].[RestartWorkflowInstance] - Restartowanie procesu (możliwe w statusach Exception, Stopped, Aborted). Procedura zwraca status instancji po zmianie:

  • (Exception, Stopped, Aborted) => Created
  • (Inny) => NULL
  • Proces nie istnieje => NULL
DECLARE @WorkflowInstanceId uniqueidentifier

DECLARE @Data nvarchar(max) -- parametry wejściowe procesu

-- TODO: Set parameter values here.

EXECUTE [dbo].[RestartWorkflowInstance]

@WorkflowInstanceId

,@Data

GO

[dbo].[ResumeWorkflowInstance] - Wznawianie procesu bez zmiany stanu (możliwe w statusach Exception, Stopped, Aborted). Procedura zwraca status instancji po zmianie:

  • (Exception,Stopped,Aborted) => Idle (lub Created jeśli proces nie ma ustawionego stanu – np. wystąpił wyjątek przed pierwszym zatwierdzeniem transakcji)
  • (Inny) => NULL
  • Proces nie istnieje => NULL
DECLARE @WorkflowInstanceId uniqueidentifier

DECLARE @State varchar(8000) –- stan procesu po wzbudzeniu

DECLARE @WorkerStamp varchar(255)

-- TODO: Set parameter values here.

EXECUTE [dbo].[ResumeWorkflowInstance]

@WorkflowInstanceId

,@State OUTPUT

,@WorkerStamp OUTPUT

GO

[dbo].[ResumeWorkflowInstanceAt] - Wznawianie procesu połączone ze zmianą stanu na inny (możliwe w statusach Exception, Stopped, Aborted). Procedura zwraca status instancji po zmianie:

  • (Exception, Stopped, Aborted) => Idle
  • (Inny) => NULL
  • Proces nie istnieje => NULL
DECLARE @WorkflowInstanceId uniqueidentifier

DECLARE @State varchar(8000) –- stan procesu po wznowieniu

DECLARE @Data nvarchar(max) –- wartości zmiennych procesu po wznowieniu

DECLARE @PrimaryDataElementId int –- id elementu danych na których proces będzie działał po wznowieniu

DECLARE @PrimaryDataElementTable varchar(128) –- tabela danych biznesowych na których proces będzie działał po wznowieniu

DECLARE @PrimaryDataElementVersionId uniqueidentifier –- struktura danych biznesowych na których proces będzie działał po wznowieniu

DECLARE @FormId uniqueidentifier –- identyfikator wersji formularza podglądu procesu dla stanu procesu po wznowieniu

DECLARE @UserId varchar(64) –- identyfikator wykonawcy procesu po wznowieniu (aktora, który może dokonać wzbudzenia)

DECLARE @NextTimer datetime –- w przypadku wznawiania w stanie z wyjściem czasowym określa datę i czas samoczynnego wzbudzenia procesu

DECLARE @PreviousState varchar(8000) –- stan procesu przed wznowieniem

DECLARE @WorkerStamp varchar(255) –- pieczęć procesu przed wznowieniem

-- TODO: Set parameter values here.

EXECUTE [dbo].[ResumeWorkflowInstanceAt]

@WorkflowInstanceId

,@State

,@Data

,@PrimaryDataElementId

,@PrimaryDataElementTable

,@PrimaryDataElementVersionId

,@FormId

,@UserId

,@NextTimer

,@PreviousState OUTPUT

,@WorkerStamp OUTPUT

GO

[dbo].[UpdateWorkflowInstance] - Aktualizacja definicji działającego procesu (możliwe w statusach Exception, Stopped, Aborted). Procedura zwraca:

  • Przekazaną wartość @TypeId – aktualizacja powiodła się
  • NULL – proces nie istnieje, ma niewłaściwy status lub aktualną definicję
DECLARE @WorkflowInstanceId uniqueidentifier

DECLARE @TypeId uniqueidentifier –- identyfikator docelowego snapshota procesu

-- TODO: Set parameter values here.

EXECUTE [dbo].[UpdateWorkflowInstance]

@WorkflowInstanceId

,@TypeId

GO

W przypadku aktualizacji definicji działającego procesu wymagane jest utworzenie nowego snapshota procesu (w przypadku aktualizacji wielu procesów tego samego typu procedurę wystarczy wywołać jeden raz) w bazie danych – służy do tego procedura przedstawiona poniżej.

DECLARE @VersionId uniqueidentifier

DECLARE @WorkflowDefinition nvarchar(max)

DECLARE @Id uniqueidentifier

-- TODO: Set parameter values here.

EXECUTE [dbo].[InsertWorkflowSnapshot]

@VersionId –- identyfikator wersji procesu

,@WorkflowDefinition –- nowa definicja XML procesu

,@Id OUTPUT –- identyfikator utworzonego (istniejącego jeśli zgodne wersja i definicja XML) snapshota procesu

GO

[dbo].[UpdateWorkflowUser] - Ustawianie wykonawcy procesu (możliwe w statusie Idle). Procedura zwraca:

  • Przekazaną wartość @UserId – ustawienie powiodło się
  • NULL – proces nie istnieje, ma niewłaściwy status lub tego samego wykonawcę, innego wykonawcę a flaga @Reassign = 0 lub nie ma ustawionego wykonawcy a flaga @Reassing = 1
DECLARE @WorkflowInstanceId uniqueidentifier

DECLARE @WorkerStamp varchar(255) –- migawka aktualna procesu

DECLARE @CurrentState varchar(8000) –- aktualny stan procesu

DECLARE @DecisionMakerId varchar(64) –- identyfikator użytkownika ustawiającego wykonawcę procesu

DECLARE @UserId varchar(64) –- identyfikator użytkownika, który może zostać wykonawcą procesu

DECLARE @Reassign bit –- flaga określająca czy mamy do czynienia ze zmianą (1) przypisanego wcześniej wykonawcy czy z ustawieniem nowego (0)

-- TODO: Set parameter values here.

EXECUTE [dbo].[UpdateWorkflowUser]

@WorkflowInstanceId

,@WorkerStamp

,@CurrentState

,@DecisionMakerId

,@UserId

,@Reassign

GO

[dbo].[ClearWorkflowUser] - Usuwanie wykonawcy procesu (możliwe w statusie Idle). Procedura zwraca:

  • Ustawionego wcześniej wykonawcę – usunięcie powiodło się
  • NULL – proces nie istnieje, ma niewłaściwy status lub wykonawca nie był ustawiony
DECLARE @WorkflowInstanceId uniqueidentifier

DECLARE @WorkerStamp varchar(255) –- migawka aktualna procesu

DECLARE @CurrentState varchar(8000) –- aktualny stan procesu

DECLARE @DecisionMakerId varchar(64) –- identyfikator użytkownika usuwającego ograniczenie wykonującego proces

-- TODO: Set parameter values here.

EXECUTE [dbo].[ClearWorkflowUser]

@WorkflowInstanceId

,@WorkerStamp

,@CurrentState

,@DecisionMakerId

GO

image

Zobacz również​

Mikroprocesy

Wywołanie procesu z formularza