Database
 sql >> Baza danych >  >> RDS >> Database

Używanie tabel konfiguracji do definiowania rzeczywistego przepływu pracy

W pierwszej części tej serii przedstawiono kilka podstawowych kroków związanych z zarządzaniem cyklem życia dowolnego podmiotu w bazie danych. Nasza druga i ostatnia część pokaże Ci, jak zdefiniować rzeczywisty przepływ pracy za pomocą dodatkowych tabel konfiguracyjnych. W tym miejscu użytkownik jest prezentowany z dozwolonymi opcjami na każdym kroku. Zademonstrujemy również technikę obejścia ścisłego ponownego użycia „zespołów” i „podzespołów” w strukturze wykazu materiałów.

Definiowanie opcji

W części 1 przedstawiono podstawowe tabele przepływu pracy i sposób, w jaki można je łatwo włączyć do bazy danych. Teraz potrzebujemy czegoś, co poprowadzi użytkownika do wyboru następnego stanu logicznego – czegoś, co definiuje logiczny przepływ pracy .

Poniższy diagram definiuje wszystkie elementy modelu bazy danych przepływu pracy:




Dwie tabele konfiguracji, workflow_state_option i workflow_state_context , zostały dodane do modelu. Zaczniemy od tabeli opcji, która definiuje dopuszczalne kolejne stany . Po zrozumieniu jego funkcji wrócimy do tabeli kontekstowej i wyjaśnimy rolę, jaką odgrywa.

Dozwolone następne stany

Poniższe tabele przypominają widok SQL w naszych tabelach konfiguracyjnych. Tutaj ukryliśmy łączenia tabel i patrzymy tylko na kombinacje type_keys . Rozważmy więc każdy STAN.WYNIK kombinację i zdefiniuj opcje dostępne dla użytkownika:


Kombinacja STAN.WYNIK (z hierarchii stanów) Kontekst stanu Dziecko wyłączone Opcja 1 Opcja 2
APPLICATION_RECEIVED
.ZAAKCEPTOWANE
STANDARD_JOB
_APPLICATION
N APPLICATION_REVIEW
APPLICATION_RECEIVED
.ODRZUCONY
STANDARD_JOB
_APPLICATION
N APPLICATION_CLOSED .NOT_HIRED
APPLICATION_REVIEW
.PASSED
STANDARD_JOB
_APPLICATION
N INVITED_TO_INTERVIEW
APPLICATION_REVIEW
.FAILED
STANDARD_JOB
_APPLICATION
N APPLICATION_CLOSED .NOT_HIRED
INVITED_TO_INTERVIEW
.ZAAKCEPTOWANE
STANDARD_JOB
_APPLICATION
N WYWIAD
INVITED_TO_INTERVIEW
.DECLINED
STANDARD_JOB
_APPLICATION
N APPLICATION_CLOSED .NOT_HIRED
WYWIAD
.ZDANE
STANDARD_JOB
_APPLICATION
N MAKE_OFFER SEEK_REFERENCES
WYWIAD.NIEUDANY STANDARD_JOB
_APPLICATION
N APPLICATION_CLOSED
WYWIAD
.CANDIDATE_CANCELLED
STANDARD_JOB
_APPLICATION
N APPLICATION_CLOSED INVITED_TO_INTERVIEW
WYWIAD
.NIE_POKAŻ
STANDARD_JOB
_APPLICATION
N APPLICATION_CLOSED
MAKE_OFFER.ACCEPTED STANDARD_JOB
_APPLICATION
N SEEK_REFERENCES
MAKE_OFFER.DECLINED STANDARD_JOB
_APPLICATION
N APPLICATION_CLOSED
SEEK_REFERENCES
.PASSED
STANDARD_JOB
_APPLICATION
N APPLICATION_CLOSED .HIRED
SEEK_REFERENCES
.FAILED
STANDARD_JOB
_APPLICATION
N APPLICATION_CLOSED
APPLICATION_CLOSED
.HIRED
STANDARD_JOB
_APPLICATION
N
APPLICATION_CLOSED
.NOT_HIRED
STANDARD_JOB
_APPLICATION
N


Ponieważ na razie ignorujemy kontekst, Kontekst stanu i Dziecko wyłączone? są wyszarzone. Ograniczyłem również liczbę opcji w tym przykładzie do dwóch ze względu na zwięzłość, chociaż w praktyce nie ma ograniczeń.

Jak to działa?

Wyobraź sobie, że rozmowa została właśnie przeprowadzona, a osoba przeprowadzająca wywiad rejestruje wynik. Aktualizowana tabela bazowa to managed_entity_state . Istnieją dwa logiczne wyniki:PASSED i FAILED. Tak więc obecny managed_entity_state jest aktualizowany o wybrany wynik (wf_state_type_outcome_id ). W przykładowym modelu osoba przeprowadzająca rozmowę kwalifikacyjną może również dołączyć notatki dotyczące rozmowy kwalifikacyjnej.

Jeśli ankieter wybierze PASSED, zostaną mu przedstawione dwie dodatkowe opcje:MAKE_OFFER i SEEK_REFERENCES. To są następne stany w naszym obiegu pracy. Są podobne do go to oświadczenia w programowaniu. W przypadku obu opcji nowy wiersz jest wstawiany do managed_entity_state , przenosząc aplikację o pracę do następnego stanu w procesie przepływu pracy. Użytkownik może ustawić termin na wykonanie tego, wprowadzając due_date .

Z drugiej strony, jeśli ankieter wybierze FAILED, jest tylko jedna opcja:APPLICATION_CLOSED. A więc nowy managed_entity_state wiersz jest wstawiany przy użyciu stanu APPLICATION_CLOSED (wf_state_type_state_id ).

Zobaczysz, że nie ma dostępnych opcji dla stanu APPLICATION_CLOSED. Oznacza to, że osiągnięto koniec procesu przepływu pracy.

Tabela kontekstu

Przyjrzyjmy się konfiguracji procesu aplikacji o pracę techniczną, aby zobaczyć, jaką rolę odgrywa tabela kontekstowa gra:


Kombinacja STAN.WYNIK (z hierarchii stanów) Kontekst stanu Dziecko wyłączone Opcja 1 Opcja 2
APPLICATION_RECEIVED
.ZAAKCEPTOWANE
PRACA TECHNICZNA
_APLIKACJA
N APLIKACJA
_PRZEGLĄD
APPLICATION_RECEIVED
.ODRZUCONY
PRACA TECHNICZNA
_APLIKACJA
N APLIKACJA
_ZAMKNIĘTA
APPLICATION_REVIEW
.PASSED
PRACA TECHNICZNA
_APLIKACJA
N INVITED_TO
_WYWIAD
APPLICATION_REVIEW
.FAILED
PRACA TECHNICZNA
_APLIKACJA
N APLIKACJA
_ZAMKNIĘTA
INVITED_TO_INTERVIEW
.ZAAKCEPTOWANE
PRACA TECHNICZNA
_APLIKACJA
N TEST_APTITUDE
INVITED_TO_INTERVIEW
.DECLINED
PRACA TECHNICZNA
_APLIKACJA
N APLIKACJA
_ZAMKNIĘTA
TEST_APTITUDE
.PASSED
PRACA TECHNICZNA
_APLIKACJA
N WYWIAD SZUKAJ
_REFERENCJI
TEST_APTITUDE
.FAILED
PRACA TECHNICZNA
_APLIKACJA
N APLIKACJA
_ZAMKNIĘTA
WYWIAD
.ZADANE
PRACA TECHNICZNA
_APLIKACJA
N MAKE_OFFER SZUKAJ
_REFERENCJI
WYWIAD
.NIEUDANY
PRACA TECHNICZNA
_APLIKACJA
N APLIKACJA
_ZAMKNIĘTA
WYWIAD
.CANDIDATE_CANCELLED
PRACA TECHNICZNA
_APLIKACJA
T - -
WYWIAD
.NIE_POKAŻ
PRACA TECHNICZNA
_APLIKACJA
N APLIKACJA
_ZAMKNIĘTA
INVITED_TO
_WYWIAD
MAKE_OFFER
.ZAAKCEPTOWANE
PRACA TECHNICZNA
_APLIKACJA
N SZUKAJ
_REFERENCJI
MAKE_OFFER
.ODRZUCONA
PRACA TECHNICZNA
_APLIKACJA
N APLIKACJA
_ZAMKNIĘTA
SEEK_REFERENCES
.PASSED
PRACA TECHNICZNA
_APLIKACJA
N APLIKACJA
_ZAMKNIĘTE.SUKCES
SEEK_REFERENCES
.FAILED
PRACA TECHNICZNA
_APLIKACJA
N APLIKACJA
_ZAMKNIĘTA
APPLICATION_CLOSED
.HIRED
PRACA TECHNICZNA
_APLIKACJA
N
APPLICATION_CLOSED
.NOT_HIRED
PRACA TECHNICZNA
_APLIKACJA
N NIEWYSTARCZAJĄCE
_DOŚWIADCZENIE
PONAD
_KWALIFIKOWANE


Tutaj kontekst to TECHNICAL_JOB_APPLICATION. Dlaczego to jest ważne? Ponieważ pozwala nam nadpisać wyniki. Pamiętaj, że wcześniej stwierdziliśmy, że możemy ponownie wykorzystać „zespoły” i „podzespoły” w strukturze zestawienia komponentów (BOM). Jest to przydatne, gdy raz coś definiujemy i wykorzystujemy ponownie, ale może to być również zbyt sztywne. A co, jeśli nie chcemy używać wszystkiego ponownie?

Wstawiając workflow_state_context między workflow_state_hierarchy i workflow_state_option , możemy zarówno ponownie używać, jak i zastępować wyniki. W tym modelu możemy zdefiniować, czy wynik jest włączony, czy wyłączony dla różnych procesów.

W powyższym przykładzie kombinacja INTERVIEW.CANDIDATE_CANCELLED jest wyłączona. Innymi słowy, mówimy, że jest to po prostu niedopuszczalny wynik w przypadku aplikacji o pracę techniczną. W związku z tym osoba przeprowadzająca rozmowę kwalifikacyjną nie będzie mogła jej wybrać podczas rejestrowania wyniku technicznej rozmowy kwalifikacyjnej, ponieważ nasze zapytanie wybiera tylko opcje, w których workflow_state_context.child_disabled = ‘N’ .

Ponieważ workflow_state_option nie jest bezpośrednim dzieckiem workflow_state_hierarchy , musimy zdefiniować osobny zestaw opcji za każdym razem, gdy używany jest stan. Ale ten kompromis pozwala nam precyzyjnie dostroić opcje dla każdego procesu.

Wyniki kwalifikujące

Mamy również możliwość zdefiniowania bardziej szczegółowych kwalifikatorów dla wyników. Można to zrobić na dwa sposoby:

  1. Możesz utworzyć czwarty poziom w swoim zestawieniu komponentów, aby zdefiniować kwalifikatory pod wynikami w hierarchii. Przy takim podejściu należy dołożyć należytej staranności. Na przykład wynik FAILED jest używany dla różnych stanów. Czy chcesz mieć te same kwalifikacje dla różnych stanów FAILED? Może nie.
  2. Możesz zdefiniować swoje kwalifikatory w workflow_state_type ale nie przywiązuj ich do żadnej hierarchii; są wolnostojące. Następnie używasz workflow_state_option aby wyświetlić kwalifikatory dla konkretnego kontekstu wyniku. To właśnie pokazuje powyższa konfiguracja, gdzie kwalifikatory OVER_QUALIFIED i INSUFFICIENT_EXPERIENCE są wymienione jako opcje dla wyniku APPLICATION_CLOSED.NOT_HIRED.

W obu przypadkach aplikacja musi rozpoznać, że wybrano kwalifikator, a nie stan lub wynik — workflow_level_type wskaże to – i zaktualizuje managed_entity_state.wf_state_type_qual_id z wybraną wartością.

Niektóre dane konfiguracji tabeli

Możesz chcieć zobaczyć podstawowe dane konfiguracyjne, tabela po tabeli. Tutaj mamy ids i type_keys odnoszą się do nawiasów. Ze względu na zwięzłość prezentowane są tylko wartości związane z artykułem.


workflow_level_type

id type_key
1 PROCES
2 STAN
3 WYNIK
4 KWALIFIKATOR


workflow_state_type

id type_key workflow_level_type_id
1 STANDARD_JOB_APPLICATION 1 (PROCES)
2 TECHNICAL_APPLICATION 1 (PROCES)
3 WYWIAD 2 (STAN)
4 ZALICZONE 3 (WYNIK)
5 NIEUDAŁO SIĘ 3 (WYNIK)
6 MAKE_OFFER 2 (STAN)
7 SEEK_REFERENCES 2 (STAN)
8 APPLICATION_CLOSED 2 (STAN)
9 ZATRUDNIONY 3 (WYNIK)
10 NOT_HIRED 3 (WYNIK)
11 NIESUFFICIENT_EXPERIENCE 4 (KWALIFIKATOR)
12 OVER_QUALIFIED 4 (KWALIFIKATOR)


workflow_state_hierarchy

id state_type_parent_id state_type_child_id
1 1 (STANDARD_JOB_APPLICATION) 3 (WYWIAD)
2 2 (TECHNICAL_JOB_APPLICATION) 3 (WYWIAD)
3 3 (WYWIAD) 4 (ZALICZONE)
4 3 (WYWIAD) 5 (NIEUDANE)
5 1 (STANDARD_JOB_APPLICATION) 8 (APPLICATION_CLOSED)
6 2 (TECHNICAL_JOB_APPLICATION) 8 (APPLICATION_CLOSED)
7 8 (APPLICATION_CLOSED) 9 (ZAJĘTY)
8 8 (APPLICATION_CLOSED) 10 (NOT_HIRED)


workflow_state_context

id state_type_id state_hierarchy_id child_disabled
1 1 (STANDARD_JOB_ APLIKACJA) 3 (WYWIAD.ZADANE) N
2 1 (STANDARD_JOB_ APLIKACJA) 4 (WYWIAD. NIEUDANY) N
3 1 (STANDARD_JOB_ APLIKACJA) 7 (APPLICATION_CLOSED. ZAJĘTY) N
4 1 (STANDARD_JOB_ APLIKACJA) 5 (APPLICATION_CLOSED. NOT_HIRED) N
5 2 (APLIKACJA TECHNICZNA) 6 (APPLICATION_CLOSED. NOT_HIRED) N


workflow_state_option

id state_context_id state_type_id
1 1 (STANDARD_JOB_ APLIKACJA. WYWIAD. ZALICZONY) 6 (MAKE_OFFER)
2 1 (STANDARD_JOB_ APLIKACJA. WYWIAD. ZALICZONY) 7 (SEEK_REFERENCES)
3 2 (APLIKACJA STANDARD_JOB_. WYWIAD. NIEUDANE) 8 (APPLICATION_CLOSED)
4 5 (TECHNICAL_JOB_ APPLICATION. APPLICATION_CLOSED. NOT_HIRED) 11 (INSUFFICIENT_EXPERIENCE)
5 5 (TECHNICAL _JOB_ APPLICATION. APPLICATION_CLOSED. NOT_HIRED) 12 (OVER_QUALIFIED)


Oczywiście konfiguracja tego jest dość trudna. Powinien być najlepiej zarządzany za pomocą aplikacji z przyjaznym dla użytkownika interfejsem.

Alternatywne sekwencje

Zauważysz, że wiele tabel ma kolumnę o nazwie alt_sequence . Służy do porządkowania listy wartości dla różnych wyborów prezentowanych użytkownikowi. Zazwyczaj będzie to w kolejności malejącej w zależności od użycia, z najczęściej używanymi opcjami u góry.

Chociaż w tym artykule opisano aplikacje o pracę, model może być używany w wielu typach przepływów pracy, w których stan encji musi być zarządzany w czasie. Alternatywnie model może służyć jako wzór do dostosowania do własnych szczególnych wymagań.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL GROUP BY – 3 proste wskazówki, jak grupować wyniki jak profesjonalista

  2. Top 9 systemów zarządzania bazami danych dla szablonów Joomla

  3. Systemy informacyjne, dane i informacje

  4. Optymalizacja bazy danych:indeksy

  5. Ograniczenia Optymalizatora z filtrowanymi indeksami