¿Hay alguna diferencia clara entre el evento y el estado?
-
21-12-2019 - |
Pregunta
Esta pregunta es un poco filosófica y es como "Los datos y el código son lo mismo o no".
¿Hay alguna diferencia clara entre el evento (señal) y el estado?
Ejemplo:
Por ejemplo, hay un auto que pasa por la carretera. Cuando los cuernos de los automóviles, un hombre (man_A
) que cruzan la carretera se detiene de repente. Cuerno es la señal, "man_A
se detiene repentinamente" es el estado del man_A
.
Otro hombre (man_B
) también estaba cruzando la carretera al mismo tiempo, en el mismo lugar.
Consideremos que man_B
fue sordo, por lo que no puede escuchar el cuerno. Pero darse cuenta de que el "man_A
se detuvo de repente" sería una señal para él. Se detendría de repente como si escuchara el cuerno.
Entonces, yo diría "un estado podría ser una señal para otro proceso. Una señal pone un proceso otro estado. Por eso son exactamente lo mismo"
estoy equivocado, ¿hay una clara diferencia entre ellos?
Una señal es un cambio de estado. Podemos definir cualquier señal con dos estados.
Solución
Bueno, un estado no es una señal porque una señal viene en un determinado punto específico en el tiempo.
Un estado- Cambio es un resultado de una señal y puede verse como una señal de ellos mismos.Pero no es el estado.El estado sigue siendo después de que la señal se haya ido.
¿Cómo sería el estado inicial una señal, por ejemplo?
Otros consejos
Son muy, muy diferentes:
-
El mismo evento puede causar transiciones a diferentes estados, dependiendo del estado actual:
-
En scxml puede tener estados
<parallel>
que definen las regiones ortogonales. En este caso, un solo evento puede desencadenar múltiples transiciones simultáneas a diferentes estados:
-
Además, debido a la posible presencia de los atributos de
cond="…"
, una transición a otro estado puede o puede ocurrir una no cuando se active un evento. Así que ahora tenemos un evento que podría no cambiar el estado. -
Además, es posible tener una transición sin atributo
event
, lo que provoca un cambio de estado tan pronto como el valor del modelo de datos o el resultado de script es correcto. Así que ahora tenemos un cambio de estado que puede llevarse a cabo sin evento de activación.