Le transizioni in un diagramma di stato corrispondono agli eventi che si verificano nel sistema. Questi eventi possono essere il risultato di
- Cose che accadono al di fuori del sistema. Ad esempio, l'utente che preme un particolare pulsante. Questi eventi sono in genere rappresentati da una o due parole descrizione dell'azione / intenzione
- Timeout all'interno del sistema. Per un evento di timeout, dovrebbe esserci sempre qualche indicazione dopo quanto tempo si verificherà l'evento.
- Finire le attività. Se uno stato ha un'attività etichettata come
do/
e quell'attività termina, allora la macchina di stato prenderà qualsiasi transizione che non è etichettata con un evento esplicito.
Per rispondere alle domande specifiche:
- No, non puoi specificare un evento basato sul tempo senza sapere quanto tempo passerà prima che si verifichi quell'evento. Non sapendo quanto tempo ci vuole prima che si verifichi un evento basato sul tempo, è davvero difficile capire veramente tutte le possibili sequenze di eventi a cui la macchina a stati può rispondere.
- L'utilizzo di un orario basato sugli eventi non ha senso, perché puoi semplicemente utilizzare l'evento stesso come trigger per prendere quella transizione nel diagramma di stato.
- Non è convenzionale utilizzare gli operatori negli eventi di un diagramma di stato, ma può essere utilizzato senza rendere più difficile la comprensione del grafico di stato. La situazione più comune è che le transizioni hanno sia un evento di innesco che una condizione (mostrate tra parentesi quadre dopo l'evento) che devono essere vere per poter effettuare la transizione.