# pt-state-machine-spring-boot-starter **Repository Path**: sqdpt/pt-state-machine-spring-boot-starter ## Basic Information - **Project Name**: pt-state-machine-spring-boot-starter - **Description**: pt-state-machine-spring-boot-starter - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-07 - **Last Updated**: 2025-10-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # pt-state-machine-spring-boot-starter `pt-state-machine-spring-boot-starter` 是一个基于 Spring Boot 的状态机启动器,旨在简化状态模式在业务场景中的应用。它提供了一种灵活的方式来定义状态转换和动作执行逻辑,适用于多种业务场景。 ## 特性 - **灵活的状态转换定义**:通过 `PtStateTranslateBuilder` 可以轻松定义状态之间的转换和对应的执行动作。 - **Spring 集成**:支持 Spring Boot 自动装配,方便地将状态机集成到 Spring 应用中。 - **注解驱动**:使用 `@EnablePtStateMachine` 注解可以轻松启用状态机配置。 - **事件驱动**:状态转换通过事件触发,并支持自定义事件和动作。 ## 使用方法 ### 启用状态机 在 Spring Boot 应用的主类上添加 `@EnablePtStateMachine` 注解以启用状态机功能: ```java @SpringBootApplication @EnablePtStateMachine public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } } ``` ### 定义状态机 创建一个继承自 `PtSpringStateMachine` 的类,并实现 `initMachine` 方法来定义状态转换: ```java public class MyStateMachine extends PtSpringStateMachine { public MyStateMachine(MyMachineType machineType, List> rawActions) { super(machineType, rawActions); } @Override public List> initMachine(PtStateTranslateBuilder ptStateTranslateBuilder) { return ptStateTranslateBuilder .addTranslate(MyState.STATE1, MyState.STATE2, MyEvent.EVENT1, myAction) .build(); } } ``` ### 定义动作 实现 `PtSpringStateAction` 接口来定义状态转换时的执行动作: ```java @Component public class MyAction implements PtSpringStateAction { @Override public void execute(MyState sourceState, Object context) { // 执行动作逻辑 } } ``` ### 获取和使用状态机 通过 `PtStateMachineFactory` 获取状态机实例并执行状态转换: ```java @Autowired private PtStateMachineFactory ptStateMachineFactory; public void someMethod() { PtStateMachine stateMachine = ptStateMachineFactory.getStateMachine(MyMachineType.MY_TYPE); stateMachine.execute(MyState.STATE1, MyEvent.EVENT1, context); } ``` ## 许可证 本项目使用 MIT 许可证。详情请查看 [LICENSE](LICENSE) 文件。