【问题标题】:multiple triggered events from a composite state来自复合状态的多个触发事件
【发布时间】:2015-11-19 20:10:30
【问题描述】:

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

我有一些问题:

  1. 设置两个箭头用于从该复合状态转换是否正确?

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

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

【问题讨论】:

  • 状态机不是我的主要专长,但你不应该把has...标签写成带方括号的守卫吗?
  • 没有括号它是一个触发器,而不是一个守卫stackoverflow.com/questions/29993065/…;但我同意守卫在这里可能更合适

标签: uml statechart umlet


【解决方案1】:
  1. 那里没问题,行旁边的标签是一个触发器,所以一旦发生这些事件之一(有钱和(没有)负余额),那么适当的转换就会被触发。

  2. 没关系,将复合状态视为常规“accountCheck”状态的扩展视图(毕竟,剩余的 简单 状态内部可能也有某种 FSM )。

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

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

两者的作用基本相同。在你的情况下,你选择哪一个并不重要,无论是你的(“缺失”的过渡是隐含的——使用常识来决定它会如何进行),或者那些。如果您的状态更复杂,具有复杂的分支和正交状态,您可能需要使用更复杂的符号。

最后,“hasMoneyAndNoNegativeBalance”和“hasMoneyAndNegativeBalance”有点多余。在这个阶段你总是有钱的,否则过渡“HasMoney”就不会被采用,所以“negativeBalance”和“positiveBalance”应该足够了(并且更容易阅读)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多