问题标签 [stateless-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.

0 投票
1 回答
1245 浏览

c# - 状态机知道触发器是什么

我想知道状态机是否适合这种情况。

假设我有以下触发器:

我有以下状态

我试图摆脱 if 语句并用状态机替换交易逻辑。不确定它是否有效,因为它可能是从一种状态转换到另一种状态的触发器的汇合。问题是,状态机如何处理这种情况?他们足够富有还是我必须使用标准的图灵机,即if有记忆的语句?

问题是两个以上(在这种情况下)条件必须为真,才能从平仓过渡到多头或空头头寸之一。

所以我要说的是,例如,如果 RSI > 70TrendingUp,则转换为空头头寸。或者,如果 TrendingUpRSI > 70,则转换为空头头寸。因为这两个条件发生的顺序无关紧要。对于其他可能的情况,反之亦然。但如果只有一个条件为真,则不会触发任何仓位。但是如果我处于一个状态,我怎么知道我是来自None哪个不触发位置,还是来自其他触发位置的条件?

如果系统变得更复杂,我会尽量避免容易出错的 if/else 语句。不确定这是否可以使用 FSM 处理,因为它取决于当前状态如何随着时间的推移而形成的历史。

0 投票
1 回答
488 浏览

.net - 转换到目标状态并触发转换和状态之间的状态机?

我最近使用了状态状态机。我可以像这样定义转换等的规则:

然后你就可以触发一个触发器来改变状态。但是,如果您想进入特定状态,您需要知道当前状态以及下一个状态。因此,如果没有定义直接转换,状态机的“客户端”需要知道如何达到某个状态。是否有可能调用诸如“goto”之类的东西并且机器自己触发所有必需的触发器?

0 投票
1 回答
2597 浏览

c# - 如何在无状态(.NET 状态机库)中记录状态转换

我想登录我的工作流程的状态转换数据库。

使用Stateless触发日志记录的最佳位置在哪里?是否应该为每个状态配置进行设置:

或者有什么方法可以为整个工作流程集中定义一次?

欢迎在这方面提出任何其他意见。

0 投票
1 回答
2348 浏览

c# - 在无状态(.NET 状态机库)中获取具有保护条件的允许触发器

背景:

Trigger与定义的互斥guard条件相同,PermitIf这将导致根据这些条件转换到不同的状态。

Guards 已经Descriptions定义并且它们很好地显示在导出的 DOT 图中的括号中,因此很容易理解。

现在,我知道有一个machine.PermittedTriggers属性可以在当前状态下返回允许的触发器,这很好,但这是问题所在。

问题 :

在这种情况下,有没有办法获得PermittedTriggers具有相应保护条件的列表Registered

0 投票
1 回答
236 浏览

c# - 无状态框架与独立分叉一起使用?

我们正在考虑在我们的系统中采用状态机无状态框架,但我们有一个我还不明白的要求,无状态框架是否可以提供帮助,或者是否会增加我们系统的复杂性。

为什么要改变?因为系统正在增长并且我们想要删除的每个状态机之间都有一些依赖关系。此外,使用开源和结构良好的框架总是更好地创建一个新框架。

示例:我们有一个状态非确定性机器 [SM_A],它派生出 [n] 个新状态机 [SM_B]。[SM_A] 的最后状态取决于所有 [SM_B] 分叉。每个分叉,工作结束后加入 SM_A,通知他验证是否所有的 SM_B 都完成了。当所有分叉完成时,SM_A 将继续。此外,所有状态都需要持久化,因为此时我们等待一个动作来“唤醒”所有分叉 [SM_B]。

(伪状态:http ://www.uml-diagrams.org/state-machine-diagrams.html#fork-pseudostate )

下图说明了流程:

当前状态机

对不起,如果你不明白。

0 投票
2 回答
9893 浏览

c# - 如何封装 .NET 无状态状态机

我有一个项目,其中大部分是线性工作流程。我正在尝试使用 .NET Stateless作为工作流引擎/状态机。那里的示例数量有限,但我整理了以下代码:

如您所见,我正在使用 Stateless Fire() 重载,它允许我传入触发器。这样我就可以让状态机处理业务逻辑,在这种情况下,是注册新患者的代码。

这一切都有效,但现在我想将所有状态机代码移动到另一个类中来封装它,但我在这样做时遇到了麻烦。我在这样做时遇到的挑战是:

  • 实例化StateMachine对象需要您指定状态,并且State是只读属性,只能在实例化时设置。
  • myregistrationTrigger必须在状态机配置期间进行实例化,并且还必须可供调用类使用。

如何克服这些项目并封装状态机代码?

0 投票
0 回答
1317 浏览

c# - Stateless 3.0 - 状态机库最佳实践

我正在开发一个 Asp.Net WebApi 应用程序。现在我正在尝试使用Stateless 3.0库在我的应用程序中实现状态机。

1.模型类

模型将有一个 State 属性,以及模型类中的状态更改逻辑。一旦状态改变,模型将在客户端更新,更新请求将发送到服务器以在数据库中进行更改。

2.WebApi控制器

模型将有一个状态属性,以及控制器类中的状态更改逻辑。将从客户端调用名为 ChangeState() 的 WebApi 操作,因此模型将在服务器端更新并保存到数据库中。

PS。我正在使用 Odata V4。

问题一:

最好的方法是什么?还有什么建议吗?(我是无状态的新手)

问题2:

我可以在静态类中实现状态机逻辑吗?这是一个好主意吗?

问题 3:

如何向最终用户提供自定义状态错误消息?

例如:发票处于“已取消”状态时不能“授权” 。

如果有人可以提供示例代码,我们将不胜感激。

0 投票
1 回答
534 浏览

stateless-state-machine - 具有无状态的分层状态

我想知道它是否会做我所追求的。

我正在考虑用于家庭自动化的状态机,其逻辑类似于:

但是,我想代表房子内房间的状态以及房子的整体状态..

IE

因此,如果客厅被占用,那么楼下、房子和家也是如此。

提前道歉,我的 C# 不是最好的,我正在深陷其中!

是否可以定时离开状态......所以传感器可以触发一个房间被占用,然后更多的活动触发“重入”?(重新启动计数器/计时器/调整时间表)在占用状态条目上 - 然后在 15 分钟没有更多条目/活动事件后,该区域的占用清除并且该区域的状态转换为未占用。

0 投票
1 回答
360 浏览

c# - 使用 Visual Studio 2015 实现无状态

是否可以在不使用 .NET Core 的情况下将 Stateless 与 Visual Studio 2015 一起使用?

https://github.com/dotnet-state-machine/stateless

加载项目时,示例项目出现许多错误:

...\Code\stateless-dev\src\Stateless\Stateless.csproj : 错误 : 项目的默认 XML 命名空间必须是 MSBuild XML 命名空间。如果项目是以 MSBuild 2003 格式创作的,请将 xmlns="http://schemas.microsoft.com/developer/msbuild/2003" 添加到元素中。如果项目是以旧的 1.0 或 1.2 格式创作的,请将其转换为 MSBuild 2003 格式。...\Code\stateless-dev\src\Stateless\Stateless.csproj

手动将源文件添加到项目中也会导致错误: 在此处输入图像描述 任何指针?谢谢。

0 投票
1 回答
631 浏览

c# - 如何在无状态下使用保护子句

我不熟悉使用无状态并试图确保我理解保护条款的目的。我能够创建一个状态机,但我想基本上检查进入年龄 > 12 && 父权限存在的状态。我是否正确理解了 Guard 条款,如果是,我将如何实施这样的条款?