分层状态机 (HSM) 当前状态

时间:2021-01-21 08:46:06

标签: state uml fsm statechart

我正在研究 HSM,我有一个问题。

在 HSM(对于所有系统)中,是否只有一种当前状态?例如; 在我的项目中,有两种用户类型:普通用户和技术人员用户。它们之间没有相同之处。普通用户可以随时登录系统和注销。和技师一样。此外,技术人员用户可以在普通用户登录时登录系统。此外,技术人员用户可以在普通用户已经登录的情况下登录系统。但是普通用户不会这样做。

是的...我认为有两种当前状态:当前状态 1 = 正常用户登录或退出。 当前状态 2 = 技术人员用户登录或退出。我说得对吗?

我对他们有点困惑。我们如何在 HSM 图上将这种状态显示为只有一种当前状态?

1 个答案:

答案 0 :(得分:2)

<块引用>

是否只有一种当前状态

在一般情况下,由于 fork 输出顶点位于复合状态的正交区域中,所以状态机实例化中可以有多个当前状态。

例如,如果状态指示是否至少有一名普通用户登录,并且是否至少有一名技术人员登录:

enter image description here

不需要将计数器设置为 0 的两个入口状态行为。如果最多有一名普通用户和一名技术人员,则相关的计数器和内部转换将消失。

当前状态可以是:

  • 没有普通用户登录没有技术人员登录

  • 没有普通用户登录并且至少有一名技术人员登录

  • 至少有一个普通用户登录并且没有技术人员登录

  • 至少一名普通用户登录至少一名技术人员登录


但是你的说法根本不清楚:

  • 首先是因为normal user can login to system any time and logout. And technician same这意味着普通用户和技术人员可以登录时没有限制,但是但普通用户不这样做似乎引入了一个限制是矛盾的。我认为这两个句子必须删除。

  • technician user can login to system when normal user logined :没什么新鲜的,因为我们已经知道 technician same 的意思是技术人员可以随时登录系统并退出

  • technician user can login to system when normal user have already logined :与之前的假设有何不同?也许您想说技术员用户可以在技术员用户已经登录后登录系统,但没有什么新鲜事,因为我们已经知道technician same的含义技术人员可以随时登录系统和注销

  • but normal user does not do it :不做什么?事实上,这与 normal user can login to system any time and logout 相矛盾,当已经有普通用户登录时,普通用户可以登录吗?已经有技术人员登录了,普通用户还能登录吗?

<块引用>

我认为有两种当前状态:当前状态 1 = 正常用户登录或退出。当前状态 2 = 技术人员用户登录或退出。我说得对吗?

你的状态似乎和我一样,只是只有一个普通用户和一个并且只有一个技术人员,但是这台机器兼容normal user can login to system any time and logout. And technician same,然后可能与晦涩难懂的but normal user does not do it相矛盾。登录的普通用户和技术人员之间存在依赖关系这一事实意味着只有一种当前状态


评论后编辑

声明是:

  1. 有一名普通用户和一名技术人员
  2. 技术人员可以随时登录和注销
  3. 技术人员登录后,普通用户无法登录或注销

一个正常的方法是机器:

enter image description here

一次只有一个当前状态。

当然你也可以欺骗让一台机器同时有两个当前状态:

enter image description here

但是正如您所看到的,技术人员被记录的事实是由状态和变量共同管理的,这毫无意义,并且使该机器人为地变得复杂。