基于事件和一组标准构建 Spring 状态机

Building a Spring State Machine based on events and a set of criteria

我想构建一个状态机,它可能有一组单独的事件 and/or 一组条件(如用户、位置等)的状态。将有一个基本 FSM 和许多结合上述标准的自定义 FSM。

例如:

用户 U1 有一个单独的 FSM

用户 U2 = > 使用全局 FSM

用户 U3 @ Location India => 有一个单独的 FSM

用户 U3 @ Location USA => 具有不同的 FSM

英国位置的所有用户 => 拥有不同的 FSM

我正在查看 Spring 状态机的区域,但看起来无法用它来实现。

有什么方法可以使用 Spring 状态机来实现这个,或者有人可以推荐任何其他 FSM 库吗?

是的,区域在这里无济于事,因为那时您只有平行状态。

一个选择是创建一个状态机,它是全局的。然后,对于每个其他状态机 type/user,您将在全局状态机上创建一个新状态(这将成为父状态),然后在子状态机中处理该状态机上的所有子状态。然后在全局机器上,您可以有条件地转换到处理子状态的状态。 spring-statemachine 中的思想存在一个限制,即不同机器中的所有子状态都需要具有不同的状态 id。

我可能只是尝试构建不同的机器配置,然后根据条件有条件地请求不同的机器。