Spring状态机的JpaRepositoryState和JPA的@Entity

时间:2017-12-18 15:25:31

标签: spring-statemachine

我们正在考虑将 Spring State Machine 用于以下用例:

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

我们正在考虑使用:

org.springframework.statemachine.data.jpa.JpaStateRepository
  • 我们是否应该使用JpaRepositoryState注释我们的域模型类,从而在我们的域模型和弹簧状态机之间创建依赖关系?

  • 上面的替代方法是什么,即确保我们的JPA实体类与JpaRepositoryState的联系不太紧密?

  • 状态机的machineId和JPA实体@Id之间的映射/关系是什么?

1 个答案:

答案 0 :(得分:1)

JpaRepositoryState实际上与您的域模型没有任何关系,因为它是我们在外部存储库中存储计算机配置的实体类。具体来说,它是一个状态表示,类似地,有转换,动作和警卫的实体类。

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

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

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