如何在特定条件下重复状态图?
Posted
技术标签:
【中文标题】如何在特定条件下重复状态图?【英文标题】:How can I repeat a statechart under a certain condition? 【发布时间】:2020-07-31 11:53:47 【问题描述】:我不想转换回第一个状态。
例如,代理 A 有一个状态图。并且代理 B 也有一个状态图。代理 A 中的最后一个状态包含在代理 B 的状态图的开头。代理 B 在此之后列出其他状态。 在代理 A 的状态下,代码创建代理 B。直到满足某个条件。
如果我在代理 B 中进行转换(如果需要,使用消息)从最后一个状态返回到第一个状态,则会创建新的代理,并且所有状态都会一次又一次地运行。现在我希望重复代理 b 中的状态图。有人有想法吗?
(顺便说一句,我已经转换回代理 A 中的状态,但这是需要的)。
我很高兴每一个帮助。 :)
新的更多细节***** 代理 A 是一台机器。相应的状态图描述了机器中当前正在发生的事情,例如填充、压制、弹出。在该州,例如“按下”代理 B 被创建。它是一种产品。产品应离开机器。因此,与代理 A 一样,它也具有“按下”状态和“弹出”状态。代理 B 中的“弹出”状态被划分为更详细的级别。
产品是在“按下”状态下创建的。因此,Agent B 的第一个状态以“pressed”开始。公共状态同时运行。不同之处在于机器的“弹出”,例如描述机器部件的运动。虽然产品中的“弹出”描述了例如产品在机器中的运动,即“向上运动”等。 make state 出现两次的原因是我想尽可能详细地描述代理。
Agent A:当“Eject”完成时,转换返回填充状态,因为机器继续工作直到满足某个条件。例如,直到没有更多的原材料。
代理 B:“弹出”后,产品仍在处理中,例如它被收集在一个容器中,并在一段时间后进行检查,等等。在最后一个状态之后,只有一个“最终状态”出现。原因:产品不是一次又一次地走同样的步骤,而是一次又一次地创造出新的产品。
当我运行模拟时,机器会一遍又一遍地运行这些步骤。这是所希望的。但是我的产品只通过它的状态图一次并且保持在它的最终状态。但这是错误的。例如,如果我想统计掉到容器中的产品,则集合中只显示一个 1。但是应该有很多。
希望你能打开照片enter image description here
【问题讨论】:
重复状态图是什么意思? 【参考方案1】:您不能“重复”状态图。您必须处理回到初始状态的转换。但是,这不是错误/限制,而是一项功能。
代理 A 中的最后一个状态包含在代理 B 状态图的开头。
这听起来不是一个好的设计。
您将不得不重新考虑您的状态图设计。很可能有一个简单的修复方法,但您的描述非常不清楚。也许澄清它并添加一些清晰的屏幕截图。还要检查https://***.com/help/how-to-ask
【讨论】:
请您再看看我的问题好吗?我将不胜感激任何帮助。最好的问候 我认为你犯了一个经典的建模错误:尽可能详细地建模系统。你知道这个过程在现实中是如何运作的,因此你一口气就这样建模了,对吧?您应该始终尽可能简单地开始,然后增加复杂性,确保一切顺利。 这仍然令人困惑。 2句话的核心问题是什么? :-) 只要代理机器中的状态图重复自身(由于某种条件),产品的状态图应该总是重启。没有回溯过渡。 如果没有回溯转换,您无法“重新启动”状态图!你玩过“复合”状态吗? (查看帮助以了解它们是什么)以上是关于如何在特定条件下重复状态图?的主要内容,如果未能解决你的问题,请参考以下文章
在条件下在无状态会话 Bean 中注入特定的 EntityManager