Macchina a stati con record di database

1

Stavo rieducando i diagrammi di stato questo fine settimana e mi sono reso conto che potrei averli usati per anni senza rendermene conto.

Supponiamo di avere un record di ordine, con una serie di campi inclusi stato, data di inizio, data di fine, nome del cliente, indirizzo, nome, ecc.

Il campo dello stato ha stati diversi e ha bisogno di una transizione per cambiare stato. Quando guardo il record nel contesto di quel campo, capisco che il mio record di ordine è una macchina a stati.

Quindi ecco la mia domanda- ci sono centinaia di campi nel mio record. questo significa che il mio record di 1 ordine contiene molte macchine di stato? Se è così, allora cosa, e perde è il suo potere?

Grazie,

Sviluppatore confuso

    
posta user11235813 18.09.2017 - 16:21
fonte

1 risposta

2

Bene, per cominciare, prendiamo da parte le discussioni sul fatto che sia una buona o una cattiva pratica salvare diversi stati su un singolo record, perché sarebbe fuori tema.

Detto questo, considera questo esempio:

Un utente accede a un sito di e-commerce e acquista 1 oggetto. Una lattina di birra, per esempio.

Questa lattina di birra deve essere pagata, imballata e consegnata. Ci sono 3 diversi flussi di lavoro coinvolti.

Ovviamente si potrebbe dire che si consideri una macchina a stati, con l'ordine contenente 4 stati:

Pagamento in attesa - > Pagato (in attesa di imballaggio) - > Compresso (in attesa di consegna) - > Consegnato

Ma ogni stato ha un flusso di lavoro interno. In attesa di pagamento può comportare effettivamente l'invio della richiesta di pagamento a una società di carte di credito, in attesa di ritorno, i pagamenti respinti dalla società CC, i metodi di modifica, ecc ...

In attesa di imballaggio significa che potrebbe essere necessario richiedere il trasferimento di tale articolo da un luogo di stoccaggio a un altro, approvazioni da personale diverso e fino a quando qualcuno (o qualcosa) mette una scatola intorno alla lattina di birra, stampa un'etichetta con il cliente nome e indirizzo e rende effettivamente la scatola disponibile per i ragazzi della logistica consegnare il pacchetto.

Confezionato significa che qualcuno deve effettivamente firmare che il pacco è stato prelevato nel luogo di stoccaggio, posto su un camion o un aereo, ottenere un numero di tracciamento, ecc ...

Ottieni l'idea?

Tutto può essere tracciato all'interno di un singolo record, specialmente uno con centinaia di campi. Non significa che dovrebbe essere in questo modo, ma la tua realtà aziendale dirà quale sarebbe la soluzione ottimale.

Quindi, avvolgimento:

"Does that mean my 1 order record contains many state machines?"

Nell'esempio sopra, sì. Uno stato per ogni flusso di lavoro.

"If so, then what, and does it lose it's power?"

Non capisco cosa intendi per "perdere il suo potere", ma certamente memorizzare diversi flussi di lavoro sotto un singolo record può rendere la tua vita più difficile come sviluppatore, a causa del mescolamento di domini diversi senza una corretta definizione dei confini.

    
risposta data 18.09.2017 - 16:48
fonte

Leggi altre domande sui tag