sql >> Databáze >  >> RDS >> Database

Použití konfiguračních tabulek k definování skutečného pracovního postupu

První díl této série představil některé základní kroky pro správu životního cyklu libovolné entity v databázi. Naše druhá a poslední část vám ukáže, jak definovat skutečný pracovní postup pomocí dalších konfiguračních tabulek. Toto je místo, kde se uživateli na každém kroku zobrazí přípustné možnosti. Také si ukážeme techniku, jak obejít striktní opětovné použití „sestav“ a „podsestav“ ve struktuře kusovníku.

Definování možností

Část 1 představila základní tabulky pracovních postupů a to, jak je lze snadno začlenit do vaší databáze. Nyní potřebujeme něco, co uživatele povede k výběru dalšího logického stavu – něco, co definuje logický pracovní postup .

Níže uvedený diagram definuje všechny součásti databázového modelu pracovního postupu:




Dvě konfigurační tabulky, workflow_state_option a workflow_state_context , byly přidány do modelu. Začneme tabulkou možností, která definuje další povolené stavy . Jakmile pochopíme jeho funkci, vrátíme se ke kontextové tabulce a vysvětlíme, jakou roli hraje.

Povolené další stavy

Následující tabulky jsou trochu jako pohled SQL napříč našimi konfiguračními tabulkami. Zde jsme skryli spojení tabulek a právě se díváme na kombinace type_keys . Podívejme se tedy na každý STATE.OUTCOME kombinaci a definujte možnosti k dispozici uživateli:


Kombinace STATE.OUTCOME (ze státní hierarchie) Kontext státu Dítě s postižením Možnost 1 Možnost 2
APPLICATION_RECEIVED
.ACCEPTED
STANDARD_JOB
_APPLICATION
N APLIKACE_REVIEW
APPLICATION_RECEIVED
.REJECTED
STANDARD_JOB
_APPLICATION
N APPLICATION_UZAVŘENA .NOT_HIRED
PŘEHLED_APLIKACE
.PASSED
STANDARD_JOB
_APPLICATION
N INVITED_TO_INTERVIEW
PŘEHLED_APLIKACE
.FAILED
STANDARD_JOB
_APPLICATION
N APPLICATION_UZAVŘENA .NOT_HIRED
INVITED_TO_INTERVIEW
.ACCEPTED
STANDARD_JOB
_APPLICATION
N ROZHOVOR
INVITED_TO_INTERVIEW
.DECLINED
STANDARD_JOB
_APPLICATION
N APPLICATION_UZAVŘENA .NOT_HIRED
ROZHOVOR
. ÚSPĚŠNĚ
STANDARD_JOB
_APPLICATION
N MAKE_OFFER SEEK_REFERENCES
INTERVIEW.FAILED STANDARD_JOB
_APPLICATION
N APPLICATION_CLOSED
ROZHOVOR
.CANDIDATE_CANCELLED
STANDARD_JOB
_APPLICATION
N APPLICATION_UZAVŘENA INVITED_TO_INTERVIEW
ROZHOVOR
.NO_SHOW
STANDARD_JOB
_APPLICATION
N APPLICATION_UZAVŘENA
MAKE_OFFER.ACCEPTED STANDARD_JOB
_APPLICATION
N SEEK_REFERENCES
MAKE_OFFER.DECLINED STANDARD_JOB
_APPLICATION
N APPLICATION_UZAVŘENA
SEEK_REFERENCES
.PASSED
STANDARD_JOB
_APPLICATION
N APPLICATION_UZAVŘENA .NAJATO
SEEK_REFERENCES
.FAILED
STANDARD_JOB
_APPLICATION
N APPLICATION_UZAVŘENA
APPLICATION_UZAVŘENA
.HIRED
STANDARD_JOB
_APPLICATION
N
APPLICATION_UZAVŘENA
.NOT_HIRED
STANDARD_JOB
_APPLICATION
N


Protože kontext prozatím ignorujeme, State Context a Dítě se zdravotním postižením? jsou zašedlé. Kvůli stručnosti jsem také omezil počet možností v tomto příkladu na dvě, i když v praxi neexistuje žádné omezení.

Jak to tedy funguje?

Představte si, že rozhovor právě proběhl a tazatel zaznamenává výsledek. Aktualizovaná podkladová tabulka je managed_entity_state . Existují dva logické výsledky:PASSED a FAILED. Tedy aktuální managed_entity_state se aktualizuje o vybraný výsledek (wf_state_type_outcome_id ). Ve vzorovém modelu může tazatel také zahrnout několik poznámek k rozhovoru.

Pokud tazatel vybere PASSED, zobrazí se mu další dvě možnosti:MAKE_OFFER a SEEK_REFERENCES. Toto jsou další stavy v našem pracovním postupu. Jsou podobné jako go to příkazy v programování. Pro obě možnosti se do managed_entity_state vloží nový řádek , přesunutí aplikace úlohy do dalšího stavu v procesu workflow. Uživatel může nastavit konečný termín zadáním due_date .

Na druhou stranu, pokud tazatel vybere FAILED, existuje pouze jedna možnost:APPLICATION_CLOSED. Takže nový managed_entity_state řádek je vložen pomocí stavu APPLICATION_CLOSED (wf_state_type_state_id ).

Uvidíte, že pro stav APPLICATION_CLOSED nejsou k dispozici žádné možnosti. To znamená, že bylo dosaženo konce pracovního postupu.

Kontextová tabulka

Podívejme se na konfiguraci pro proces technické žádosti o zaměstnání, abychom viděli, jakou roli hraje kontextová tabulka hraje:


Kombinace STATE.OUTCOME (ze státní hierarchie) Kontext státu Dítě s postižením Možnost 1 Možnost 2
APPLICATION_RECEIVED
.ACCEPTED
TECHNICAL_JOB
_APPLICATION
N APLIKACE
_RECENZE
APPLICATION_RECEIVED
.REJECTED
TECHNICAL_JOB
_APPLICATION
N APLIKACE
_UZAVŘENA
PŘEHLED_APLIKACE
.PASSED
TECHNICAL_JOB
_APPLICATION
N INVITED_TO
_INTERVIEW
PŘEHLED_APLIKACE
.FAILED
TECHNICAL_JOB
_APPLICATION
N APLIKACE
_UZAVŘENA
INVITED_TO_INTERVIEW
.ACCEPTED
TECHNICAL_JOB
_APPLICATION
N TEST_APTITUDE
INVITED_TO_INTERVIEW
.DECLINED
TECHNICAL_JOB
_APPLICATION
N APLIKACE
_UZAVŘENA
TEST_APTITUDE
.PASSED
TECHNICAL_JOB
_APPLICATION
N ROZHOVOR HLEDAT
_REFERENCE
TEST_APTITUDE
.FAILED
TECHNICAL_JOB
_APPLICATION
N APLIKACE
_UZAVŘENA
ROZHOVOR
.PASSED
TECHNICAL_JOB
_APPLICATION
N MAKE_OFFER HLEDAT
_REFERENCE
ROZHOVOR
.FAILED
TECHNICAL_JOB
_APPLICATION
N APLIKACE
_UZAVŘENA
ROZHOVOR
.CANDIDATE_CANCELLED
TECHNICAL_JOB
_APPLICATION
Y - -
ROZHOVOR
.NO_SHOW
TECHNICAL_JOB
_APPLICATION
N APLIKACE
_UZAVŘENA
INVITED_TO
_INTERVIEW
MAKE_NABÍDKA
.PŘIJÍMÁNO
TECHNICAL_JOB
_APPLICATION
N HLEDAT
_REFERENCE
MAKE_OFFER
.DECLINED
TECHNICAL_JOB
_APPLICATION
N APLIKACE
_UZAVŘENA
SEEK_REFERENCES
.PASSED
TECHNICAL_JOB
_APPLICATION
N APLIKACE
_UZAVŘENA. ÚSPĚCH
SEEK_REFERENCES
.FAILED
TECHNICAL_JOB
_APPLICATION
N APLIKACE
_UZAVŘENA
APPLICATION_UZAVŘENA
.HIRED
TECHNICAL_JOB
_APPLICATION
N
APPLICATION_UZAVŘENA
.NOT_HIRED
TECHNICAL_JOB
_APPLICATION
N NEDOSTATEČNÉ
_ZKUŠENOSTI
NAD
_KVALIFIKACE


Zde je kontext TECHNICAL_JOB_APPLICATION. Proč je toto důležité? Protože nám to umožňuje přepsat výsledky. Pamatujte, že jsme již dříve uvedli, že můžeme znovu použít „sestavy“ a „podsestavy“ ve struktuře kusovníku (BOM). To je užitečné, když něco definujeme jednou a znovu to použijeme, ale také to může být příliš rigidní. Co když nechceme všechno znovu použít?

Vložením workflow_state_context mezi workflow_state_hierarchy a workflow_state_option , můžeme výsledky znovu použít i přepsat. V tomto modelu můžeme definovat, zda je výsledek povolen nebo zakázán pro různé procesy.

Ve výše uvedeném příkladu je kombinace INTERVIEW.CANDIDATE_CANCELLED zakázána. Jinými slovy, říkáme, že to prostě není přípustný výsledek pro technické žádosti o zaměstnání. V důsledku toho jej tazatel nebude moci vybrat při zaznamenávání výsledku technického pohovoru, protože náš dotaz vybere pouze možnosti, kde workflow_state_context.child_disabled = ‘N’ .

Protože workflow_state_option není přímým potomkem workflow_state_hierarchy , musíme při každém použití stavu definovat samostatnou sadu možností. Ale tento kompromis nám umožňuje jemně vyladit možnosti pro každý proces.

Kvalifikační výsledky

Máme také možnost definovat podrobnější kvalifikátory pro výsledky. Existují dva způsoby, jak to udělat:

  1. Můžete vytvořit čtvrtou úroveň v kusovníku a definovat kvalifikátory pod výsledky v hierarchii. S tímto přístupem by měla být provedena náležitá péče. Například výsledek FAILED se používá pro různé stavy. Chcete mít stejné kvalifikátory pro různé stavy FAILED? Možná ne.
  2. Své kvalifikátory můžete definovat v workflow_state_type ale nevázat je na žádnou hierarchii; jsou volně stojící. Poté použijete workflow_state_option k seznamu kvalifikátorů pro konkrétní kontext výsledku. To je to, co ukazuje výše uvedená konfigurace, kde jsou kvalifikátory OVER_QUALIFIED a INSUFFICIENT_EXPERIENCE uvedeny jako možnosti pro výsledek APPLICATION_CLOSED.NOT_HIRED.

V obou případech musí aplikace rozpoznat, že byl vybrán kvalifikátor, nikoli stav nebo výsledek – workflow_level_type toto označí – a aktualizuje managed_entity_state.wf_state_type_qual_id s vybranou hodnotou.

Některá konfigurační data tabulky

Možná byste chtěli vidět základní konfigurační data tabulku po tabulce. Zde máme ids a type_keys odkazují v závorkách. Z důvodu stručnosti jsou uvedeny pouze hodnoty související s článkem.


workflow_level_type

id type_key
1 PROCESOVAT
2 STATE
3 VÝSLEDEK
4 KVALIFIKÁTOR


workflow_state_type

id type_key workflow_level_type_id
1 STANDARD_JOB_APPLICATION 1 (PROCES)
2 TECHNICAL_APPLICATION 1 (PROCES)
3 ROZHOVOR 2 (STATE)
4 PROSTĚNO 3 (VÝSLEDEK)
5 SELHLA 3 (VÝSLEDEK)
6 MAKE_OFFER 2 (STATE)
7 SEEK_REFERENCES 2 (STATE)
8 APPLICATION_UZAVŘENA 2 (STATE)
9 NAJATO 3 (VÝSLEDEK)
10 NOT_HIRED 3 (VÝSLEDEK)
11 NEDOSTATEČNÁ_ZKUŠENOST 4 (KVALIFIKÁTOR)
12 OVER_QUALIFIED 4 (KVALIFIKÁTOR)


workflow_state_hierarchy

id state_type_parent_id state_type_child_id
1 1 (STANDARD_JOB_APPLICATION) 3 (ROZHOVOR)
2 2 (TECHNICAL_JOB_APPLICATION) 3 (ROZHOVOR)
3 3 (ROZHOVOR) 4 (PASSED)
4 3 (ROZHOVOR) 5 (SELHÁNÍ)
5 1 (STANDARD_JOB_APPLICATION) 8 (APPLICATION_UZAVŘENA)
6 2 (TECHNICAL_JOB_APPLICATION) 8 (APPLICATION_UZAVŘENA)
7 8 (APPLICATION_UZAVŘENA) 9 (NAJATO)
8 8 (APPLICATION_UZAVŘENA) 10 (NOT_HIRED)


workflow_state_context

id state_type_id state_hierarchy_id child_disabled
1 1 (STANDARD_JOB_ APPLICATION) 3 (ROZHOVOR. PASSED) N
2 1 (STANDARD_JOB_ APPLICATION) 4 (ROZHOVOR. FAILED) N
3 1 (STANDARD_JOB_ APPLICATION) 7 (APPLICATION_UZAVŘENA. NAJATÁ) N
4 1 (STANDARD_JOB_ APPLICATION) 5 (APPLICATION_UZAVŘENA. NOT_HIRED) N
5 2 (TECHNICAL_APPLICATION) 6 (APPLICATION_UZAVŘENA. NOT_HIRED) N


workflow_state_option

id state_context_id state_type_id
1 1 (STANDARD_JOB_ APPLICATION. ROZHOVOR. ÚSPĚŠNĚ) 6 (MAKE_OFFER)
2 1 (STANDARD_JOB_ APPLICATION. ROZHOVOR. ÚSPĚŠNĚ) 7 (SEEK_REFERENCES)
3 2 (STANDARD_JOB_ APPLICATION. ROZHOVOR. SELHLA) 8 (APPLICATION_UZAVŘENA)
4 5 (TECHNICAL_JOB_ APPLICATION. APPLICATION_CLOSED. NOT_HIRED) 11 (NEDOSTATEČNÁ_EXPERIENCE)
5 5 (TECHNICKÁ _PRÁCE_ APLIKACE. APLIKACE_UZAVŘENA. NENAJÍT SE) 12 (OVER_QUALIFIED)


Je jasné, že toto nastavení je docela složité. Měl by být přednostně spravován prostřednictvím aplikace s uživatelsky přívětivým rozhraním.

Alternativní sekvence

Všimněte si, že řada tabulek má sloupec nazvaný alt_sequence . Toto se používá k uspořádání seznamu hodnot pro různé výběry prezentované uživateli. Obvykle to bude v sestupném pořadí podle použití, přičemž nejčastěji používané možnosti budou nahoře.

I když tento článek popisoval pracovní aplikace, model lze použít pro mnoho typů pracovních postupů, kde je třeba řídit stav entity v průběhu času. Alternativně může model sloužit jako vzor k přizpůsobení pro vaše vlastní konkrétní požadavky.


  1. jak udělat sdružování připojení v Javě?

  2. Vytvořte objekt DIE na serveru SQL Server

  3. Snadné upgrady s nulovými prostoji díky ClusterControl

  4. Jak stáhnout a nainstalovat nástroje SQLite