repeat - 如何在特定条件下重复状态图?
问题描述
如何在特定条件下重复状态图?我不想转换回第一个状态。
例如,代理 A 有一个状态图。并且代理 B 也有一个状态图。代理 A 中的最后一个状态包含在代理 B 的状态图的开头。代理 B 在此之后列出其他状态。在代理 A 的状态下,代码创建代理 B。直到满足特定条件。
如果我在代理 B 中进行转换(如果需要,使用消息)从最后一个状态返回到第一个状态,则会创建新的代理,并且所有状态都会一次又一次地运行。现在我希望重复代理 b 中的状态图。有人有想法吗?
(顺便说一句,我已经转换回代理 A 中的状态,但这是需要的)。
我对每一次帮助感到高兴。:)
新的更多细节***** 代理 A 是一台机器。相应的状态图描述了机器中当前发生的情况,例如填充、压制、弹出。在例如“按下”的状态下,代理B被创建。它是一种产品。产品应离开机器。因此,与代理 A 一样,它也具有“按下”状态和“弹出”状态。代理 B 中的“弹出”状态被划分为更详细的级别。
产品是在“新闻”状态下创建的。因此,Agent B 的第一个状态以“pressed”开始。公共状态同时运行。不同之处在于机器的“弹出”,例如描述机器部件的运动。而产品中的“弹出”描述了例如产品在机器中的运动,即“向上运动”等。制造状态出现两次的原因是我想尽可能详细地描述代理。
代理 A:当“Eject”完成时,转换返回填充状态,因为机器继续工作直到满足某个条件。例如,直到没有更多的原材料。
代理B:“弹出”后,产品仍在处理中,例如收集在容器中,一段时间后进行检查等。在最后一个状态之后,只有一个“最终状态”出现。原因:产品不是一次又一次地走同样的步骤,而是一次又一次地创造出一个新产品。
当我运行模拟时,机器一次又一次地运行这些步骤。这是所希望的。但是我的产品只通过它的状态图一次并且保持在它的最终状态。但这是错误的。例如,如果我想统计掉到容器中的产品,则集合中只显示一个 1。但是应该有很多。
我希望你能打开照片在这里输入图片描述
解决方案
您不能“重复”状态图。您必须处理回到初始状态的转换。但是,这不是错误/限制,而是一项功能。
代理 A 中的最后一个状态包含在代理 B 状态图的开头。
这听起来不是一个好的设计。
您将不得不重新考虑您的状态图设计。很可能有一个简单的修复方法,但您的描述非常不清楚。也许澄清它并添加一些清晰的屏幕截图。还要检查https://stackoverflow.com/help/how-to-ask
推荐阅读
- python - 如何让python接受来自多行的输入?
- angular - 两个声明的 Angular 组件部分
- postgresql - 当应用程序可能尝试为独立但同时的进程创建临时表时,使用临时表是否安全?
- python - Google Dataflow python中的API版本BigQuery
- ruby-on-rails - 从 ActionController::UnpermittedParameters 救援
- jquery - jQuery 使用 Array 和 if/else if 根据另一个单元格的值设置表格单元格的值
- ios - DidSelectRowAtIndextPath 给了我错误的细节
- android - 适用于 Android 的 rxJava2 中的可观察 zip
- python - 如何根据从另一个表中给出的 id 获取列的值
- javascript - 精简反应过滤功能