状态机具有自我转换但不同的进入操作

时间:2011-04-30 00:17:42

标签: architecture uml state-machine

我有一台状态机,其中

S1 ---> inp X,保护条件= Y ----> S1(执行后自行转换到S1,action1()

S1 ---> inp X,保护条件=!Y ----> S1(执行后自转移S1,动作2()

因此,两个输入之间的唯一区别是它正在执行不同的操作,

我觉得这里有问题,我应该做些不同的事吗?

1 个答案:

答案 0 :(得分:1)

您不能在同一状态下拥有两个备用录入操作。整点是国家独立于你到达的路线。您有两种选择:

  1. 将操作放在转场上。 UML允许转换有3个部分:
    • 触发事件
    • 保护条件
    • 如果事件发生且警卫为真,则执行的操作。在转换到目标状态之前,操作已完成。
  2. 再创建两个状态,每个状态一个action1()& action2()。状态S1将具有两个退出的转换,一个到每个新状态。转换1将标记为X[Y]并导致包含action1()的状态。类似于action2()。每个新状态都会转换回S1,并在动作完成后立即执行。
  3. 如果图表是概念性的,那么您选择的主要是风格。如果您直接翻译代码,那么您需要考虑语义。选项(1)在视觉上更简洁,但这意味着过渡不会是“瞬时的”。对于某些环境 - 特别是实时/嵌入 - 可能很重要。

    第h