Spring 状态机的 JpaRepositoryState 和 JPA 的 @Entity

Spring state machine's JpaRepositoryState and JPA's @Entity

我们正在考虑将 Spring 状态机 用于以下用例:

我们的一个实体(即来自我们领域模型的 JPA 实体)可以处于多种状态之一,我们有数百万这样的实体(以及我们数据库中的许多行)。

我们正在考虑使用:

org.springframework.statemachine.data.jpa.JpaStateRepository

JpaRepositoryState 确实与您的域模型没有任何关系,因为我们的实体 class 将机器配置存储在外部存储库中。具体来说,它是一种状态表示,类似地,有实体 classes 用于转换、动作和守卫。

@idmachineId 之间没有关系。 @id 只是一个字段标识数据库中的行,如果您通过 spring-data 手动存储实体,它会自动生成。然而,字段 machineIdsubmachineId 一起使用,这样您就可以在存储库中定义多台机器,然后创建一个子状态来引用一台机器,就像在 UML 中您可以定义一个普通状态然后将其定义为对子机的引用。

我似乎收到越来越多与用户实体 classes 相关的问题,以及如何使用状态机处理这些问题,例如 gh453。我现在真的没有答案,因为 Spring Statemachine 从未设计用于处理这些特定用例。这并不意味着 Spring Statemachine 永远不会处理这些场景,我们只是现在没有开箱即用的东西。

我们的文档也缺少这些主题,这清楚地表明我们需要在该领域做得更好。