Opis tabeli WFHistoryElements oraz WFHistoryElementDetails

Facebooktwitterpinterestlinkedinmail
Dotyczy wersji 2020.1.x; autor: Franciszek Sakławski

 

Wprowadzenie

Projektując procesy i poszczególne obiegi w WEBCON BPS, dobrze jest mieć świadomość, w jaki sposób przechowywane są dane w tabelach, jakie są relacje i jak poszczególne informacje wyświetlane są na formularzu.

W artykule opisane zostały tabele WFHistoryElements oraz WFHistoryElementDetails.

Opis tabeli

Tabele te przechowują dane o edycji elementów oraz zmiany wartości podczas przejścia ścieżka obiegu. W przypadku WFHistoryElements – przechowuje dane elementu oraz wartości atrybutów, WFHistoryElementDetails – wartości z kolumn z atrybutu typu „Lista pozycji”.

Za każdym razem, gdy przejdziemy do następnego kroku w obiegu, w tabeli WFHistoryElements stworzy się nowy wpis. Jeżeli na formularzu występują atrybuty typu „Listy pozycji” to samo stanie się w tabeli WFHistoryElementDetails.

Relacje w tabeli

Tabela WFHistoryElements zawiera wszystkie dane o elemencie, w tym dane wprowadzane przez użytkowników oraz dane systemowe.

Wybrane klucze w tabeli WFHistoryElements:

  • WFH_ID – klucz główny (ID wiersza).
  • WFH_OrgID – ID elementu. Klucz główny (WFD_ID) w tabeli WFElements.
  • WFH_DTYPEID – ID typu formularza. Klucz główny (DTYPE_ID) w tabeli WFDocTypes.

Tabela WFHistoryElementDetails zawiera wszystkie dane o listach pozycji znajdujących się na elemencie, w tym dane wprowadzane przez użytkowników oraz dane systemowe.

Wybrane klucze w tabeli WFHistoryElementDetails:

  • HDT_ID – klucz główny (ID wiersza).
  • HDT_DETID – ID wiersza listy pozycji. Klucz główny (DET_ID) w tabeli WFElementDetails.
  • HDT_WFDID – ID elementu. Klucz główny (WFD_ID) w tabeli WFElements.
  • HDT_DTYPEID – ID typu formularza. Klucz główny (DTYPE_ID) w tabeli WFDocTypes.

Przechowywanie danych

Tabela WFHistoryElements przechowuje wszystkie informacje o przebiegu elementu. Poniżej zostały przedstawione wybrane kolumny tej tabeli:

  1. WFH_Version – informuje nas który wpis jest którą wersją dokumentu. Po rozpoczęciu obiegu pierwszy wpis w tabeli WFHistoryElements będzie miał zawsze WFH_Version = 1.
  2. WFH_STPID – informuje nas, na którym kroku dokument znajdował się w danej wersji.
  3. WFH_LeftBy – informuje nas, kto zmienił wersję dokumentu.
  4. WFH_LeaveCurrentStepPath – informuje nas, którą ścieżką został przesunięty dokument w danej wersji – w formie „ID#NazwaŚciezki”.
  5. WFH_LeaveCurrentStepDate – data i godzina, w której dokonała się zmiana wersji.

Przypadek biznesowy

Na potrzeby prezentacji został stworzony systemowy obieg „Car Fleet Management” z formatką rezerwacji auta.

Obieg znajduje się na drugim kroku – możemy to zobaczyć z prawej strony ekranu oraz klikając ikonkę „Zegara”. System przeniesie nas wtedy do historii edycji elementu.

Rys. 1. Formatka dokumentu

 

Widząc historię dokumentu, możemy stwierdzić, przez kogo był edytowany oraz jakimi ścieżkami przeszedł obieg, i jakie pola zostały zmienione.

Rys. 2. Historia elementu

 

Jak widzimy, obieg zmienił się tylko raz. Oznacza to, że w tabeli WFHistoryElements powstały 2 wpisy. W celu sprawdzenia przeniesiemy się do SSMS („SQL Server Management Studio”) i zadamy zapytanie bazie o tę konkretną tabelę. W celu sprawdzenia odpytamy również tabelę WFElements – tam powinien znaleźć się jeden wpis z aktualnymi danymi.

Rys. 3. Zapytanie do tabel WFElements oraz WFHistoryElements

 

Należy pamiętać, że jeżeli odpytujemy tabelę WFHistoryElements, znając jedynie ID dokumentu, trzeba ograniczyć wyszukiwanie do WFH_OrgID = ID elementu.

Tabela nie tylko przechowuje wpisy zmian formularza na przejściu do kroku, ale również po zwykłym zapisie dokumentu.

Rys. 4. Formularz elementu

 

Po wciśnięciu przycisku system zapisze zmiany i doda wpis do tabeli WFHistoryElements.

Rys. 5. Zapytanie do tabeli WFHistoryElements

 

W tabeli pojawił się kolejny wpis. Wpis nasz istnieje również na karcie historii elementu:

Rys. 6. Historia elementu

 

W celu zweryfikowania poprawności wyświetlania historii wywołamy następujące zapytanie SQL:

Rys. 7. Zapytanie do tabeli WFHistoryElements

 

Należy zwrócić uwagę, że kolumny WFH_LeaveCurrentStepPath i WFH_LeaveCurrentStepDate mają wartość NULL w 2 i 3 wierszu. Wynika to z faktu, że przejście pomiędzy nimi nie wykonało się za pomocą przejścia ścieżką obiegu, lecz zapisem dokumentu z poziomu przycisku na belce