Design Pattern #4- Multiple State Machine

Multiple State Machine(MSM)

Nel precedente articolo abbiamo visto il funzionamento della macchina a stati basata sugli eventi, oggi in questo articolo, vedremo insieme la Macchina a Stati Multipla.

La Multiple State Machine è un modello di progettazione molto particolare all’ interno di LabVIEW, che permette di dichiarare una serie di operazioni da eseguire, all’ interno di un Stato un singolo stato.

Come le precedenti SM, anche all’interno della MSM vi sono presenti casi fondamentali, obbligatori per la corretta implementazione: Initialize, Default, Idle, Error ed Exit.

La macchina a stati multipla è l’ideale per chi deve eseguire una lunga serie di operazioni riguardanti un singolo stato del programma.

Esempio: All’interno del caso ‘Initialize’ lo sviluppatore necessita di eseguire multiple operazioni come l’apertura di file di riferimenti, dei controlli di riferimento ecc.

Il modello di progettazione si presenta cosi:

Esempio di MSM

Per dichiarare quali operazioni svolgere in un singolo stato, è utile utilizzare un array di tipo stringa, contenente i vari stati che il programma eseguirà.

Utilizzando gli array avrete il vantaggio di dover dichiarare una sola volta per ogni caso le singole operazioni che dovranno esser eseguite.

Esempio: Nel caso di inizializzazione è stato dichiarato all’ interno di un vettore la lettura dei file di configurazione, e successivamente grazie alle funzioni dei vettori e bastato definire lo stato successivo.

Se il programma deve eseguire multiple operazioni in multipli casi, consiglio l’utilizzo di un cluster di stato, che vi permette di memorizzare lo stato all’ iterazione precedente.

In conclusione si può quindi dire che la Multiple State Machine è molto utile se avete necessità di implementare multipli stati all’ interno dei nostri stati ‘ fondamentali ‘ dell’ applicazione.

Nel Prossimo articolo vedremo la funzionalità dalla Queued-State Machine