事件和状态之间是否有明显的区别

时间:2014-04-12 15:40:12

标签: statechart scxml

这个问题有点哲学,就像“数据和代码是否相同”。

事件(信号)和状态之间是否有明显的区别?

示例:

例如,有一辆车经过这条路。当汽车喇叭,一名男子(man_A)过马路时突然停了下来。喇叭是信号,“man_A突然停止”是man_A的状态。

另一名男子(man_B)同时也在同一个地方过马路。

让我们考虑man_B聋,所以他听不到号角。但意识到“man_A突然停止”对他来说将是一个信号。他会突然停下来,仿佛听到了号角。

所以我会说“状态可能是另一个进程的信号。一个信号将一个进程置于另一个状态。这就是为什么它们完全相同的事情”

我错了,他们之间有明显的区别吗?

信号是状态变化。我们可以用两种状态定义任何信号。

2 个答案:

答案 0 :(得分:0)

嗯,状态不是信号,因为信号是在某个特定时间点发出的。

状态 - 更改是信号的结果,可以被自己视为信号。但这不是国家自己。在信号早已消失之后,状态仍在继续。

例如,初始状态如何成为信号。

答案 1 :(得分:0)

他们非常非常不同:

  • 同一事件可能会导致转换到不同的状态,具体取决于当前状态:
    Three states with transitions between them, triggered by the same event

  • 在SCXML中,您可以<parallel>个状态定义正交区域。在这种情况下,单个事件可以触发多个同时转换到不同的状态:
    enter image description here

  • 此外,由于可能存在cond="…"属性,当由事件触发时,转换到另一个州可能或可能。所以现在我们有一个可能不会改变状态的事件。

  • 此外,可以进行没有event属性的转换,只要某些数据模型值或脚本结果正确,就会导致状态更改。所以现在我们可以在没有触发事件的情况下进行状态更改。