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

时间:2015-11-19 10:57:50

标签: uml statechart umlet

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

enter image description here

我有一些问题:

  1. 这是否可以为此复合状态设置两个箭头?

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

  3. 随时给我任何其他评论。

1 个答案:

答案 0 :(得分:3)

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

  2. 这没关系,可以将复合状态视为常规" accountCheck"的扩展视图。状态(毕竟,其余的简单状态也可能在其中包含某种FSM。)

  3. 虽然规范允许从复合形状内部进行转换,但我会反对它,因为它打破了概念界限。

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

    enter image description here

    两者基本相同。在你的情况下,你所选择的是哪一个(其中"缺失"过渡是隐含的 - 使用常识来决定它将如何发展)或者那些并不重要。如果您的状态在复杂的分支和正交状态下更复杂,则可能需要使用更复杂的表示法。

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