问题标签 [statechart]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
uml - 状态机定时器自转换
如果我理解这 3 个状态机的含义,请向我解释。
1、StateA 调用 Enter 动作(此时什么都没有)然后设置定时器。当定时器触发 Acion1 被执行,然后 StateA Exit 动作(也没有)被执行,然后整个循环重复。所以 StateA 进入动作,设置定时器等。这与 Action1 进行了一种轮询
2、StateB进入动作被调用,定时器建立并在10ms后触发并执行Action2。定时器不会被更新,所以是对状态的一种延迟动作
3、StateC Enter action,设置Timer,触发后调用Action3,然后StateC Exit action,最后执行StateD Enter action。
如果正确,请确认或更正。
uml - 具有嵌套状态的 UML 状态机并执行 Activity
在下面的状态机上,假设我在“StateE”。然后是 Sig1,因此发生了转换。首先我退出“StateE”,然后假设“Grd1”守卫让我通过。
现在我进入“StateH”,执行进入动作(“Act2”)。然后我将一个信号放入队列中以执行“StateH”的“do”动作。这意味着“StateH”“do”操作不必在 enter 操作之后立即执行,但可能会首先提供一些其他已调度的信号。
然后我进入“StateG”。再次在“StateG”中,执行进入动作(“Act2”)并且“do”动作被调度为信号。
信号调度程序到达信号队列中 StateH 执行动作信号所在的点。
问题是:我们是在执行StateH的do动作之前从StateG退出回到StateH还是可以说:处于StateG也处于StateH,所以不需要状态转换,让我们立即执行StateH的do动作。
diagram - Miro Samek 的“C/C++ 中的实用 UML 状态图”中的状态图是如何绘制的
Miro Samek 的“Practical UML Statecharts in C/C++”中用什么软件包来绘制状态图?
编辑:Miro Samek在他的网站上提供了他书中的摘录。链接 PDF 的第 42 页提供了一个示例图。
uml - UML 状态图:完成转换
在具有运行到完成模型的 UML 状态图的上下文中,如何处理“完成转换”?
- 状态的完成会在事件队列的开头插入一个“完成事件”,因此只有在状态机显式步进时才执行“完成转换”,或者
- 状态的完成立即触发“完成转换”(以及可能的后续“完成转换”),因此状态机可以为每个显式步进执行多个步骤。
这两种情况都表明,一个状态的未受保护的“完成转换”有效地使任何其他定义的转换(无论是事件触发的还是受保护的)都是多余的。
我是否正确理解这一点?
uml - 状态图:限制状态执行的次数
如何在状态图中以图形方式表示一个状态执行的次数永远不会超过一定次数?这样它就不会以无限循环结束。就像是
如果违反条件,然后分支到另一个状态。我应该以某种方式将其包含在警卫中吗?还是在国家活动?
编辑:
这个方向的东西?
图例:(StateName | (+-)activity),转换:-->,[Guard]
uml - 如何解释 UML 2.5 状态机图?
我需要确定 UML 2.5 状态机图的所有基本元素。不幸的是,这些图表的符号似乎有很多歧义,因为网上有很多不同的变体。
我的解释是,每个状态机图都由许多状态和许多转换组成。
每个州都有:
- 一个可选的进入动作
- 可选的做动作
- 一个可选的退出动作
每个过渡都有:
- 一个触发事件,
- 一个可选的前提条件
- 转换动作(后置条件)。
我对符号如何工作的理解可以在图 1(符号[precondition] Event / [Transition Action]之后的电动门功能示例)和图 2 中进行总结。
示例:当触发事件时(例如按下关闭按钮),评估前提条件(如果有)(例如门口是否空),如果满足前提条件,则触发转换动作(例如关闭门)。
我的问题:
- 过渡动作是过渡的实现还是仅仅是过渡期间发生的动作。简单来说,如果转换动作出错,转换(新状态)会成功吗?我的问题基本上源于这样一个事实,即许多消息来源建议您可以在到达新状态时使用entry 操作,而不是使用转换操作。在我的理解中,虽然过渡动作是过渡的实现,因此在进入新状态之前发生,与进入动作相比这在到达新状态后立即发生。因此,就过渡本身和时间而言,这是两种完全不同类型的动作。了解这些行动的时机对我来说至关重要。
- 我的一般解释正确吗?(例如,我对图 1 中的事件、后置条件和转换动作的理解可能是什么)
我知道状态机图有十几种变体,因此有不同的表示/解释,但我对 UML 2.5 很感兴趣。
uml - 超声波传感器状态机图
我正在开发一个基本的嵌入式系统应用程序。我有一个声纳(超声波)传感器来测量传感器和 X 对象之间的距离。Ultasonic 传感器有一项工作要做,计算距离并返回。我想为此制作一个状态图,但我无法将其分解为不同的状态。这是您无法完成一项简单任务的情况之一。有人知道吗?
boost - 提升状态图断言“reactionResult_”错误
我有以下 boost::statechart 状态:
当我处于当前状态并发出 InboundInfoReceived 事件时,我收到以下错误 /usr/include/boost/statechart/result.hpp:58: boost::statechart::detail::safe_reaction_result::~safe_reaction_result() : 断言“reactionResult_ == 消耗”失败。
if 语句为真,但转换给了我一个断言错误。