手动构建状态机
Manual build of State machine
我有一个使用 Spring 的状态机,这是使用注释构建的
@Configuration
@EnableStateMachine
class StateMachineConfiguration extends
StateMachineConfigurerAdapter<State, Event> {
(对于states/transitions)
和一些处理程序 classes 用于操作
@WithStateMachine
public class AwaitingData {
@OnStateEntry(target = "AwaitingData")
public void onEntry() {
我想手动构建这个状态机,这样我就可以测试各个方面。我不想为测试复制配置,我想使用 "real" 配置。
我可以使用 StateMachineBuilder 和我的配置轻松构建机器 class
private StateMachine<State, Event> buildStateMachine() {
StateMachineConfiguration config = new StateMachineConfiguration();
StateMachineBuilder.Builder<State, Event> builder = StateMachineBuilder.builder();
config.configure(builder.configureStates());
config.configure(builder.configureTransitions());
return builder.build();
}
但是...我现在如何添加操作?
我想用模拟等添加具体的动作(取决于具体的测试)
我在配置机器时逐步浏览了库,但我仍然看不到 where/how 添加了注释的函数。
Google 帮助不大,通常会直接将我发送到 Spring 文档,这些文档似乎没有涵盖我的用例。
我创建了 gh462 来润色文档。
本质上,@WithStateMachine
是一个 spring 应用程序上下文集成,您需要让机器知道 BeanFactory
。添加了手动构建器,以便人们可以在正常 spring 应用程序上下文和 bean 模型之外使用机器。在我完善文档之前,请参阅 MethodAnnotationWithBuilderTests 如何完成此操作。
我有一个使用 Spring 的状态机,这是使用注释构建的
@Configuration
@EnableStateMachine
class StateMachineConfiguration extends
StateMachineConfigurerAdapter<State, Event> {
(对于states/transitions)
和一些处理程序 classes 用于操作
@WithStateMachine
public class AwaitingData {
@OnStateEntry(target = "AwaitingData")
public void onEntry() {
我想手动构建这个状态机,这样我就可以测试各个方面。我不想为测试复制配置,我想使用 "real" 配置。 我可以使用 StateMachineBuilder 和我的配置轻松构建机器 class
private StateMachine<State, Event> buildStateMachine() {
StateMachineConfiguration config = new StateMachineConfiguration();
StateMachineBuilder.Builder<State, Event> builder = StateMachineBuilder.builder();
config.configure(builder.configureStates());
config.configure(builder.configureTransitions());
return builder.build();
}
但是...我现在如何添加操作? 我想用模拟等添加具体的动作(取决于具体的测试)
我在配置机器时逐步浏览了库,但我仍然看不到 where/how 添加了注释的函数。 Google 帮助不大,通常会直接将我发送到 Spring 文档,这些文档似乎没有涵盖我的用例。
我创建了 gh462 来润色文档。
本质上,@WithStateMachine
是一个 spring 应用程序上下文集成,您需要让机器知道 BeanFactory
。添加了手动构建器,以便人们可以在正常 spring 应用程序上下文和 bean 模型之外使用机器。在我完善文档之前,请参阅 MethodAnnotationWithBuilderTests 如何完成此操作。