View Source Finitomata.Transition (Finitomata v0.5.0)
The internal representation of Transition.
It includes from and to states, and the event, all represented as atoms.
Link to this section Summary
Types
The event in FSM
The state of FSM
The transition is represented by from and to states and the event.
Functions
Returns the list of all the transitions, matching the from state and the event.
Returns true if the transition from → to is allowed, false otherwise.
Returns the state after starting one, so-called entry state.
Returns true if the state from hsa an outgoing transition with event, false otherwise.
Returns the not ordered list of states, excluding the starting and ending states :*.
Link to this section Types
Link to this section Functions
Returns the list of all the transitions, matching the from state and the event.
Used internally for the validations.
iex> {:ok, transitions} =
...> Finitomata.PlantUML.parse("[*] --> s1 : foo\ns1 --> s2 : ok\ns2 --> [*] : ko")
...> Finitomata.Transition.allowed(transitions, :s1, :foo)
[:s2]
...> Finitomata.Transition.allowed(transitions, :s1, :*)
[]
Returns true if the transition from → to is allowed, false otherwise.
iex> {:ok, transitions} =
...> Finitomata.PlantUML.parse("[*] --> s1 : foo\ns1 --> s2 : ok\ns2 --> [*] : ko")
...> Finitomata.Transition.allowed?(transitions, :s1, :s2)
true
...> Finitomata.Transition.allowed?(transitions, :s1, :*)
false
Returns the state after starting one, so-called entry state.
iex> {:ok, transitions} =
...> Finitomata.PlantUML.parse("[*] --> s1 : foo\ns1 --> s2 : ok\ns2 --> [*] : ko")
...> Finitomata.Transition.entry(transitions)
:s1
Returns true if the state from hsa an outgoing transition with event, false otherwise.
iex> {:ok, transitions} =
...> Finitomata.PlantUML.parse("[*] --> s1 : foo\ns1 --> s2 : ok\ns2 --> [*] : ko")
...> Finitomata.Transition.responds?(transitions, :s1, :ok)
true
...> Finitomata.Transition.responds?(transitions, :s1, :ko)
false
Returns the not ordered list of states, excluding the starting and ending states :*.
iex> {:ok, transitions} =
...> Finitomata.PlantUML.parse("[*] --> s1 : foo\ns1 --> s2 : ok\ns2 --> [*] : ko")
...> Finitomata.Transition.states(transitions)
[:s1, :s2]