来自复合状态的多个触发事件

multiple triggered events from a composite state

我正在设计一个可以检查用户帐户余额的应用程序,我为该应用程序设置了一个 FSM,并为此创建了一个复合状态。

我有一些问题:

  1. 这个复合状态的过渡设置两个箭头对吗?

  2. 这两个transition是从creditAccountCheck发出的,但是我没有从这个状态设置箭头,对吗?

  3. 如有任何其他意见,请随时给我。

  1. 没问题,行旁边的标签是 触发器,所以一旦其中一个事件发生(有钱和(没有)负余额), 然后将触发适当的转换。

  2. 这没关系,将复合状态视为常规 "accountCheck" 状态的扩展视图(毕竟,剩下的 简单 状态可能里面也有某种 FSM)。

尽管规范允许从复合形状内部进行过渡,但我建议不要这样做,因为它打破了概念界限。

如果您想明确地可视化流程,可以使用表示法。

两者的作用基本相同。在你的情况下,你选择哪一个并不重要,无论是你的("missing" 转换是隐式的——使用常识来决定它将如何进行),还是那些。如果您的状态更复杂,具有复杂的分支和正交状态,您可能需要使用更复杂的表示法。

最后,"hasMoneyAndNoNegativeBalance" 和 "hasMoneyAndNegativeBalance" 有点多余。在这个阶段你总是有钱的,否则就不会进行转换 "HasMoney",所以 "negativeBalance" 和 "positiveBalance" 应该足够了(并且更容易阅读)。