Database
 sql >> Database >  >> RDS >> Database

Utilizzo delle tabelle di configurazione per definire il flusso di lavoro effettivo

La prima parte di questa serie ha introdotto alcuni passaggi di base per la gestione del ciclo di vita di qualsiasi entità in un database. La nostra seconda e ultima parte ti mostrerà come definire il flusso di lavoro effettivo utilizzando tabelle di configurazione aggiuntive. È qui che all'utente vengono presentate le opzioni consentite in ogni fase del processo. Dimostreremo anche una tecnica per aggirare il riutilizzo rigoroso di "assiemi" e "sottoassiemi" in una struttura di distinta base.

Definizione delle opzioni

La parte 1 ha introdotto le tabelle del flusso di lavoro di base e come queste possono essere facilmente incorporate nel database. Ciò di cui abbiamo bisogno ora è qualcosa che guidi l'utente nella selezione dello stato logico successivo, qualcosa che definisca un flusso di lavoro logico .

Il diagramma seguente definisce tutti i componenti di un modello di database del flusso di lavoro:




Due tabelle di configurazione, workflow_state_option e workflow_state_context , sono stati aggiunti al modello. Inizieremo con la tabella delle opzioni, che definisce gli stati successivi consentiti . Una volta compresa la sua funzione, torneremo alla tabella contestuale e spiegheremo il ruolo che svolge.

Stati successivi consentiti

Le tabelle che seguono sono in qualche modo come una vista SQL nelle nostre tabelle di configurazione. Qui abbiamo nascosto i join della tabella e stiamo solo guardando le combinazioni di type_keys . Consideriamo quindi ogni STATE.OUTCOME combinazione e definire le opzioni a disposizione dell'utente:


Combinazione STATE.OUTCOME (dalla gerarchia di stato) Contesto di stato Bambino disabile Opzione 1 Opzione 2
APPLICATION_RECEIVED
.ACCEPTED
STANDARD_JOB
_APPLICAZIONE
N APPLICATION_REVIEW
APPLICATION_RECEIVED
.REJECTED
STANDARD_JOB
_APPLICAZIONE
N APPLICATION_CLOSED .NOT_HIRED
APPLICATION_REVIEW
.PASSED
STANDARD_JOB
_APPLICAZIONE
N INVITED_TO_INTERVIEW
APPLICATION_REVIEW
.FAILED
STANDARD_JOB
_APPLICAZIONE
N APPLICATION_CLOSED .NOT_HIRED
INVITED_TO_INTERVIEW
.ACCEPTED
STANDARD_JOB
_APPLICAZIONE
N INTERVISTA
INVITED_TO_INTERVIEW
.DECLINED
STANDARD_JOB
_APPLICAZIONE
N APPLICATION_CLOSED .NOT_HIRED
INTERVISTA
.PASSED
STANDARD_JOB
_APPLICAZIONE
N MAKE_OFFER CERCA_REFERENZE
INTERVISTA.FAILED STANDARD_JOB
_APPLICAZIONE
N APPLICAZIONE_CHIUSA
INTERVISTA
.CANDIDATE_CANCELLED
STANDARD_JOB
_APPLICAZIONE
N APPLICATION_CLOSED INVITED_TO_INTERVIEW
INTERVISTA
.NO_SHOW
STANDARD_JOB
_APPLICAZIONE
N APPLICATION_CLOSED
MAKE_OFFER.ACCEPTED STANDARD_JOB
_APPLICAZIONE
N CERCA_REFERENZE
MAKE_OFFER.DECLINED STANDARD_JOB
_APPLICAZIONE
N APPLICATION_CLOSED
CERCA_REFERENZE
.PASSED
STANDARD_JOB
_APPLICAZIONE
N APPLICATION_CLOSED .assunto
CERCA_REFERENZE
.FAILED
STANDARD_JOB
_APPLICAZIONE
N APPLICATION_CLOSED
APPLICATION_CLOSED
.HIRED
STANDARD_JOB
_APPLICAZIONE
N
APPLICATION_CLOSED
.NOT_HIRED
STANDARD_JOB
_APPLICAZIONE
N


Poiché per ora stiamo ignorando il contesto, Stato contesto e Bambino disabile? sono in grigio. Ho anche limitato a due il numero di opzioni in questo esempio per brevità, anche se in pratica non c'è limite.

Allora come funziona?

Immagina che l'intervista sia appena stata condotta e che l'intervistatore stia registrando il risultato. La tabella sottostante da aggiornare è managed_entity_state . Ci sono due risultati logici:PASSATO e FALLITO. Quindi l'attuale managed_entity_state viene aggiornato con il risultato selezionato (wf_state_type_outcome_id ). Nel modello di esempio, l'intervistatore può anche includere alcune note sull'intervista.

Se l'intervistatore seleziona PASSED, gli vengono presentate altre due opzioni:MAKE_OFFER e SEEK_REFERENCES. Questi sono i prossimi stati nel nostro flusso di lavoro. Sono simili a go to affermazioni in programmazione. Per entrambe le opzioni, viene inserita una nuova riga in managed_entity_state , spostando la domanda di lavoro allo stato successivo nel processo del flusso di lavoro. L'utente può fissare una scadenza per questo inserendo un due_date .

D'altra parte, se l'intervistatore seleziona FAILED, c'è solo un'opzione:APPLICATION_CLOSED. Quindi un nuovo managed_entity_state la riga viene inserita utilizzando lo stato APPLICATION_CLOSED (wf_state_type_state_id ).

Vedrai che non ci sono opzioni disponibili per lo stato APPLICATION_CLOSED. Ciò significa che è stata raggiunta la fine del processo di flusso di lavoro.

La tabella contestuale

Diamo un'occhiata alla configurazione per il processo di candidatura tecnica per vedere quale ruolo ha la tabella di contesto gioca:


Combinazione STATE.OUTCOME (dalla gerarchia di stato) Contesto di stato Bambino disabile Opzione 1 Opzione 2
APPLICATION_RECEIVED
.ACCEPTED
LAVORO_TECNICO
_APPLICAZIONE
N APPLICAZIONE
_REVISIONE
APPLICATION_RECEIVED
.REJECTED
LAVORO_TECNICO
_APPLICAZIONE
N APPLICAZIONE
_CHIUSA
APPLICATION_REVIEW
.PASSED
LAVORO_TECNICO
_APPLICAZIONE
N INVITO_A
_INTERVISTA
APPLICATION_REVIEW
.FAILED
LAVORO_TECNICO
_APPLICAZIONE
N APPLICAZIONE
_CHIUSA
INVITED_TO_INTERVIEW
.ACCEPTED
LAVORO_TECNICO
_APPLICAZIONE
N TEST_APTITUDE
INVITED_TO_INTERVIEW
.DECLINED
LAVORO_TECNICO
_APPLICAZIONE
N APPLICAZIONE
_CHIUSA
TEST_APTITUDE
.PASSED
LAVORO_TECNICO
_APPLICAZIONE
N INTERVISTA CERCA
_RIFERIMENTI
TEST_APTITUDE
.FAILED
LAVORO_TECNICO
_APPLICAZIONE
N APPLICAZIONE
_CHIUSA
INTERVISTA
.PASSED
LAVORO_TECNICO
_APPLICAZIONE
N MAKE_OFFER CERCA
_RIFERIMENTI
INTERVISTA
.FAILED
LAVORO_TECNICO
_APPLICAZIONE
N APPLICAZIONE
_CHIUSA
INTERVISTA
.CANDIDATE_CANCELLED
LAVORO_TECNICO
_APPLICAZIONE
Y - -
INTERVISTA
.NO_SHOW
LAVORO_TECNICO
_APPLICAZIONE
N APPLICAZIONE
_CHIUSA
INVITO_A
_INTERVISTA
FARE_OFFERTA
.ACCETTATO
LAVORO_TECNICO
_APPLICAZIONE
N CERCA
_RIFERIMENTI
FARE_OFFERTA
.DECLINED
LAVORO_TECNICO
_APPLICAZIONE
N APPLICAZIONE
_CHIUSA
CERCA_REFERENZE
.PASSED
LAVORO_TECNICO
_APPLICAZIONE
N APPLICAZIONE
_CLOSED.SUCCESS
CERCA_REFERENZE
.FAILED
LAVORO_TECNICO
_APPLICAZIONE
N APPLICAZIONE
_CHIUSA
APPLICATION_CLOSED
.HIRED
LAVORO_TECNICO
_APPLICAZIONE
N
APPLICAZIONE_CHIUSA
.NON_ASSUNTA
LAVORO_TECNICO
_APPLICAZIONE
N INSUFFICIENTE
_ESPERIENZA
OLTRE
_QUALIFICATO


Qui il contesto è TECHNICAL_JOB_APPLICATION. Perché questo è importante? Perché ci consente di ignorare i risultati. Ricorda, in precedenza abbiamo affermato che possiamo riutilizzare "assiemi" e "sottoassiemi" in una struttura Distinta materiali (BOM). Questo è utile quando definiamo qualcosa una volta e lo riutilizziamo, ma può anche essere troppo rigido. E se non vogliamo riutilizzare tutto?

Inserendo workflow_state_context tra workflow_state_hierarchy e workflow_state_option , possiamo sia riutilizzare che ignorare i risultati. In questo modello, possiamo definire se un risultato è abilitato o disabilitato per diversi processi.

Nell'esempio sopra, la combinazione INTERVIEW.CANDIDATE_CANCELLED è disabilitata. In altre parole, stiamo dicendo che semplicemente non è un risultato ammissibile per le domande di lavoro tecniche. Di conseguenza, l'intervistatore non sarà in grado di selezionarlo durante la registrazione dell'esito di un colloquio di lavoro tecnico perché la nostra query seleziona solo le opzioni in cui workflow_state_context.child_disabled = ‘N’ .

Perché workflow_state_option non è un figlio diretto di workflow_state_hierarchy , dobbiamo definire un insieme separato di opzioni ogni volta che viene utilizzato uno stato. Ma questo compromesso ci consente di mettere a punto le opzioni per ogni processo.

Risultati di qualificazione

Abbiamo anche la possibilità di definire qualificatori più dettagliati per i risultati. Ci sono due modi per farlo:

  1. Puoi creare un quarto livello nella tua distinta base per definire le qualificazioni sotto i risultati nella gerarchia. La due diligence dovrebbe essere presa con questo approccio. Ad esempio, il risultato FAILED viene utilizzato per diversi stati. Vuoi avere gli stessi qualificatori per diversi stati FAILED? Forse no.
  2. Puoi definire i tuoi qualificatori in workflow_state_type ma non legarli a nessuna gerarchia; sono indipendenti. Quindi usi workflow_state_option per elencare i qualificatori per il contesto di risultato specifico. Questo è ciò che mostra la configurazione sopra, dove i qualificatori OVER_QUALIFIED e INSUFFICIENT_EXPERIENCE sono elencati come opzioni per il risultato APPLICATION_CLOSED.NOT_HIRED.

In entrambi i casi, l'applicazione deve riconoscere che è stato selezionato un qualificatore piuttosto che uno stato o un risultato – workflow_level_type indicherà questo – e aggiornerà managed_entity_state.wf_state_type_qual_id con il valore selezionato.

Alcuni dati di configurazione della tabella

Potresti voler vedere i dati di configurazione sottostanti, tabella per tabella. Qui abbiamo gli ids e i type_keys si riferiscono tra parentesi. Per brevità vengono presentati solo i valori relativi all'articolo.


workflow_level_type

id tipo_chiave
1 PROCESSO
2 STATO
3 RISULTATO
4 QUALIFICATORE


workflow_state_type

id tipo_chiave workflow_level_type_id
1 STANDARD_JOB_APPLICATION 1 (PROCESSO)
2 APPLICAZIONE_TECNICA 1 (PROCESSO)
3 INTERVISTA 2 (STATO)
4 PASSATO 3 (RISULTATO)
5 FALLITO 3 (RISULTATO)
6 MAKE_OFFER 2 (STATO)
7 SEEK_REFERENCES 2 (STATE)
8 APPLICATION_CLOSED 2 (STATE)
9 ASSUNTO 3 (RISULTATO)
10 NON_ASSUNTO 3 (RISULTATO)
11 ESPERIENZA_INSUFFICIENTE 4 (QUALIFICATORE)
12 OVER_QUALIFIED 4 (QUALIFICATORE)


workflow_state_gerarchy

id state_type_parent_id state_type_child_id
1 1 (APPLICAZIONE_LAVORO_STANDARD) 3 (INTERVISTA)
2 2 (APPLICAZIONE_LAVORO_TECNICA) 3 (INTERVISTA)
3 3 (INTERVISTA) 4 (PASSEGGIATO)
4 3 (INTERVISTA) 5 (FAILED)
5 1 (STANDARD_JOB_APPLICATION) 8 (APPLICATION_CLOSED)
6 2 (APPLICAZIONE_LAVORO_TECNICA) 8 (APPLICATION_CLOSED)
7 8 (APPLICATION_CLOSED) 9 (ASSUNTO)
8 8 (APPLICATION_CLOSED) 10 (NON_ASSUNTO)


workflow_state_context

id state_type_id state_hierarchy_id bambino_disabile
1 1 (APPLICAZIONE STANDARD_LAVORO_) 3 (INTERVISTA. SUPERATA) N
2 1 (APPLICAZIONE STANDARD_LAVORO_) 4 (INTERVISTA.FALLITA) N
3 1 (APPLICAZIONE STANDARD_LAVORO_) 7 (APPLICATION_CLOSED. ASSUNTO) N
4 1 (APPLICAZIONE STANDARD_LAVORO_) 5 (APPLICATION_CLOSED. NOT_HIRED) N
5 2 (APPLICAZIONE_TECNICA) 6 (APPLICATION_CLOSED. NOT_HIRED) N


opzione_stato_di_lavoro

id state_context_id state_type_id
1 1 (APPLICAZIONE STANDARD_JOB_. INTERVISTA. SUPERATA) 6 (MAKE_OFFER)
2 1 (APPLICAZIONE STANDARD_JOB_. INTERVISTA. SUPERATA) 7 (SEEK_REFERENCES)
3 2 (APPLICAZIONE STANDARD_JOB_. INTERVISTA. FALLITA) 8 (APPLICATION_CLOSED)
4 5 (TECHNICAL_JOB_APPLICATION. APPLICATION_CLOSED. NOT_HIRED) 11 (ESPERIENZA_INSUFFICIENTE)
5 5 (APPLICAZIONE _JOB_ TECNICA. APPLICAZIONE_CLOSED. NON_ASSUNTA) 12 (OVER_QUALIFIED)


Chiaramente, impostare questo è piuttosto complicato. Dovrebbe essere preferibilmente amministrato tramite un'applicazione con un'interfaccia intuitiva.

Sequenze alternative

Noterai che un certo numero di tabelle ha una colonna chiamata alt_sequence . Viene utilizzato per ordinare l'elenco dei valori per le diverse selezioni presentate all'utente. In genere questo sarà in ordine decrescente in base all'utilizzo, con le opzioni utilizzate più di frequente in alto.

Sebbene questo articolo descriva le domande di lavoro, il modello può essere utilizzato per molti tipi di flussi di lavoro in cui lo stato di un'entità deve essere gestito nel tempo. In alternativa, il modello può fungere da modello da personalizzare in base alle proprie esigenze particolari.