问题标签 [state-machine]
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.
state-machine - 状态机:如何在没有外部事件(瞬态)的情况下改变状态?
场景:
我有一个简单的状态机:
快乐之路:
不开心的路:
简而言之,我需要在没有外部事件/触发器的情况下进行转换(进入 InProgress 或 Error 状态) 。即初始化状态应立即导致这些状态之一。
问题:
- 从Initialized.Enter()中引起状态转换是否可以?
- 我可以使用状态守卫来做到这一点,但我宁愿在状态守卫中没有非平凡的逻辑(并且初始化很可能很复杂)。
- 如果不行,我该怎么做?
- 我是否应该一起从 FSM 中做出这个决定,并让其他一些组件导致适当的过渡?但是,我是否还必须从Initialized.Enter()中调用该外部组件?所以它什么也没解决?
workflow-foundation - 适用于 Windows WF 的状态机工作流设计器
我想要一个状态机 Windows WF 的设计器,我从微软找到了一个示例代码,并在 Windows 应用程序中托管了序列工作流的视觉工作室设计师,但我不能将它用于状态机,是否有任何状态机的设计师或可以我在另一个 Windows 应用程序中托管 Visual Studio?
谢谢
state-machine - 有没有人在你的项目中使用过类似模式的“状态机”?
定义发生事情时要做的一切,
我非常感谢,
但从未尝试过。
我的问题是:如何设计一个基于状态机的系统?
programming-languages - 哪些编程语言支持语言级别的状态?
UnrealScript总是给我留下深刻的印象,它通过将函数和字段分组/重载到如下块中来对状态(和潜在函数)的内在支持:
这比在每个函数中使用大量 switch 语句要干净得多(这几乎是某种契约设计)。
是否还有其他更通用的编程语言本质上支持与此类似的状态声明(忽略可视化编程语言或 Workflow Foundation 等工具)?
编辑:
UnrealScript 中状态的一些美妙之处在于您可以覆盖子类中的有状态函数,甚至可以定义新的命名状态。我认为这对于实现不同状态的枚举开关(枚举无法扩展)、委托或协同类很麻烦,尤其是在仅支持单继承的 C# 或 Java 等语言中。
design-patterns - 同步两个状态机
比如说,我正在构建一个业务流程管理应用程序。它具有以下实体:问题和任务,作为 1 个问题与多个任务相互关联。任务和问题都有自己的状态,一个状态可能会影响另一个状态。
例如,它们都具有“已取消”和“已完成”状态。当我将问题状态更改为“已取消”时,其所有任务都应变为“已取消”。当我将所有任务的状态更改为“已完成”时,问题应自动变为“已完成”。
假设两个实体都有相当多的状态,并且从一个状态到另一个状态的转换逻辑并且状态的依赖性可能会发生变化,是否有任何设计模式和/或最佳实践来处理这种情况?
c++ - 有限状态机编译器
可以生成 c++ 代码的最好的开源 FSM 编译器是什么?
graph - 你如何在点中的节点上强制排名?
我有一些相对简单的(自动生成的)graphviz dot 格式的图表。这些显示了通过状态机的路径,但是当我希望图形处于状态顺序时,dot 有一个稍微令人困惑的习惯,即决定两个节点必须处于同一等级。我尝试了很多设置(包括:n
and:s
和weight
下面列出的),但我无法说服 dot 将第三状态置于第四状态之上。
我对很多图表都有这个问题: dot 似乎有一些内部因素决定如果两个节点处于同一等级并且没有什么可以覆盖它会更好。我什至有代码指定一个节点应该是 a rank=sink
,但是 dot 决定在它下面放置另一个节点。
有什么方法可以建议节点有序比任何其他约束更重要?
用于生成图表的代码如下所示:
该图当前如下所示:
java - 用于检查字符串是否包含*无*异常的数字的 Java 库
如果传递的字符串是有效数字(例如“123.55e-9”、“-333,556”),我正在寻找一种返回布尔值的方法。我不想只是这样做:
显然,该函数应该使用状态机 (DFA) 来解析字符串以确保无效示例不会欺骗它(例如“-21,22.22.2”、“33-2”)。你知道是否存在这样的图书馆吗?我真的不想自己写,因为这是一个显而易见的问题,我敢肯定我会重新发明轮子。
谢谢,
缺口
c# - 使用“yield”关键字实现状态机
使用 yield 关键字来实现一个简单的状态机是否可行,如此处所示。在我看来,C# 编译器似乎为您完成了艰苦的工作,因为它在内部实现了一个状态机来使 yield 语句工作。
你能在编译器已经在做的工作之上搭载它并让它为你实现大部分状态机吗?
有人做过吗,技术上可行吗?
theory - 有限时间内两个 FSM 等价的一般证明?
是否存在两个(确定性)有限状态机的等价性且总是需要有限时间的一般证明?也就是说,给定两个 FSM,你能否证明给定相同的输入,它们总是会产生相同的输出,而实际上不需要执行 FSM(这可能是非终止的?)。如果确实存在这样的证明,那么时间复杂度是多少?